lnvis

nanovg lightning network visualizer
git clone git://jb55.com/lnvis
Log | Files | Refs | README | LICENSE

jsmn.h (1630B)


      1 #ifndef __JSMN_H_
      2 #define __JSMN_H_
      3 
      4 #include <stddef.h>
      5 
      6 #ifdef __cplusplus
      7 extern "C" {
      8 #endif
      9 
     10 /**
     11  * JSON type identifier. Basic types are:
     12  * 	o Object
     13  * 	o Array
     14  * 	o String
     15  * 	o Other primitive: number, boolean (true/false) or null
     16  */
     17 typedef enum {
     18 	JSMN_UNDEFINED = 0,
     19 	JSMN_OBJECT = 1,
     20 	JSMN_ARRAY = 2,
     21 	JSMN_STRING = 3,
     22 	JSMN_PRIMITIVE = 4
     23 } jsmntype_t;
     24 
     25 enum jsmnerr {
     26 	/* Not enough tokens were provided */
     27 	JSMN_ERROR_NOMEM = -1,
     28 	/* Invalid character inside JSON string */
     29 	JSMN_ERROR_INVAL = -2,
     30 	/* The string is not a full JSON packet, more bytes expected */
     31 	JSMN_ERROR_PART = -3
     32 };
     33 
     34 /**
     35  * JSON token description.
     36  * type		type (object, array, string etc.)
     37  * start	start position in JSON data string
     38  * end		end position in JSON data string
     39  */
     40 typedef struct {
     41 	jsmntype_t type;
     42 	int start;
     43 	int end;
     44 	int size;
     45 #ifdef JSMN_PARENT_LINKS
     46 	int parent;
     47 #endif
     48 } jsmntok_t;
     49 
     50 /**
     51  * JSON parser. Contains an array of token blocks available. Also stores
     52  * the string being parsed now and current position in that string
     53  */
     54 typedef struct {
     55 	unsigned int pos; /* offset in the JSON string */
     56 	unsigned int toknext; /* next token to allocate */
     57 	int toksuper; /* superior token node, e.g parent object or array */
     58 } jsmn_parser;
     59 
     60 /**
     61  * Create JSON parser over an array of tokens
     62  */
     63 void jsmn_init(jsmn_parser *parser);
     64 
     65 /**
     66  * Run JSON parser. It parses a JSON data string into and array of tokens, each describing
     67  * a single JSON object.
     68  */
     69 int jsmn_parse(jsmn_parser *parser, const char *js, size_t len,
     70 		jsmntok_t *tokens, unsigned int num_tokens);
     71 
     72 #ifdef __cplusplus
     73 }
     74 #endif
     75 
     76 #endif /* __JSMN_H_ */