viking

webkit based web browser for Enlightenment
Log | Files | Refs | LICENSE

jsmn.h (1539B)


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