Source

jsmn / jsmn.h

Full commit
Serge A. Zaitsev 90642b1 


Serge A. Zaitsev 03af3a5 




Serge A. Zaitsev 8c403c4 
Serge A. Zaitsev 03af3a5 
Serge A. Zaitsev 90642b1 
Serge A. Zaitsev c8ff928 




Serge A. Zaitsev 90642b1 
Serge A. Zaitsev 10d084f 
Serge A. Zaitsev c3427ad 
Serge A. Zaitsev 10d084f 
Serge A. Zaitsev c3427ad 
Serge A. Zaitsev 10d084f 
Serge A. Zaitsev c3427ad 
Serge A. Zaitsev 10d084f 
Serge A. Zaitsev c3427ad 
Serge A. Zaitsev 10d084f 


Serge A. Zaitsev 03af3a5 





Serge A. Zaitsev 90642b1 
Serge A. Zaitsev c8ff928 
Serge A. Zaitsev 90642b1 

Serge A. Zaitsev dea589a 
Serge A. Zaitsev c8ff928 
Serge A. Zaitsev 90642b1 
Serge A. Zaitsev 03af3a5 
Serge A. Zaitsev 0fd4fd3 




Serge A. Zaitsev a2e4297 
Serge A. Zaitsev dea589a 
Serge A. Zaitsev 0fd4fd3 




Serge A. Zaitsev c3427ad 
Serge A. Zaitsev 0fd4fd3 

Serge A. Zaitsev 03af3a5 


Serge A. Zaitsev c3427ad 

Serge A. Zaitsev 03af3a5 
Serge A. Zaitsev 90642b1 
#ifndef __JSMN_H_
#define __JSMN_H_

/**
 * JSON type identifier. Basic types are:
 * 	o Object
 * 	o Array
 * 	o String
 * 	o Other primitive: number, boolean (true/false) or null
 */
typedef enum {
	JSMN_PRIMITIVE = 0,
	JSMN_OBJECT = 1,
	JSMN_ARRAY = 2,
	JSMN_STRING = 3
} jsmntype_t;

typedef enum {
	/* Not enough tokens were provided */
	JSMN_ERROR_NOMEM = -1,
	/* Invalid character inside JSON string */
	JSMN_ERROR_INVAL = -2,
	/* The string is not a full JSON packet, more bytes expected */
	JSMN_ERROR_PART = -3,
	/* Everything was fine */
	JSMN_SUCCESS = 0
} jsmnerr_t;

/**
 * JSON token description.
 * @param		type	type (object, array, string etc.)
 * @param		start	start position in JSON data string
 * @param		end		end position in JSON data string
 */
typedef struct {
	jsmntype_t type;
	int start;
	int end;
	int size;
} jsmntok_t;

/**
 * JSON parser. Contains an array of token blocks available. Also stores
 * the string being parsed now and current position in that string
 */
typedef struct {
	unsigned int pos;
	int toknext;
	int *cursize;
} jsmn_parser;

/**
 * Create JSON parser over an array of tokens
 */
void jsmn_init(jsmn_parser *parser);

/**
 * Run JSON parser. It parses a JSON data string into and array of tokens, each describing
 * a single JSON object.
 */
jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, 
		jsmntok_t *tokens, unsigned int num_tokens);

#endif /* __JSMN_H_ */