diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-01-25 01:41:49 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-01-25 01:41:49 (GMT) |
commit | 32921490d0d7dc0a2e0828e6f1051e74d27550cf (patch) | |
tree | fe0a816013ddfb2c4d8b2fa885a6b56c61e670f8 /contrib/src/jsmn/jsmn.h | |
parent | 3be96d1aa3024c1acc129e587f5d3165c9434e48 (diff) | |
download | uscxml-32921490d0d7dc0a2e0828e6f1051e74d27550cf.zip uscxml-32921490d0d7dc0a2e0828e6f1051e74d27550cf.tar.gz uscxml-32921490d0d7dc0a2e0828e6f1051e74d27550cf.tar.bz2 |
Started to resolve scxml-test-framework tests from SCION suite
Diffstat (limited to 'contrib/src/jsmn/jsmn.h')
-rw-r--r-- | contrib/src/jsmn/jsmn.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/contrib/src/jsmn/jsmn.h b/contrib/src/jsmn/jsmn.h new file mode 100644 index 0000000..03b2c1a --- /dev/null +++ b/contrib/src/jsmn/jsmn.h @@ -0,0 +1,67 @@ +#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; +#ifdef JSMN_PARENT_LINKS + int parent; +#endif +} 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; /* offset in the JSON string */ + int toknext; /* next token to allocate */ + int toksuper; /* superior token node, e.g parent object or array */ +} 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_ */ |