linux/tools/perf/pmu-events/jsmn.h
<<
>>
Prefs
   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 */
  11typedef enum {
  12        JSMN_PRIMITIVE = 0,
  13        JSMN_OBJECT = 1,
  14        JSMN_ARRAY = 2,
  15        JSMN_STRING = 3
  16} jsmntype_t;
  17
  18typedef 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 */
  35typedef 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 */
  46typedef struct {
  47        unsigned int pos; /* offset in the JSON string */
  48        int toknext; /* next token to allocate */
  49        int toksuper; /* superior token node, e.g parent object or array */
  50} jsmn_parser;
  51
  52/*
  53 * Create JSON parser over an array of tokens
  54 */
  55void jsmn_init(jsmn_parser *parser);
  56
  57/*
  58 * Run JSON parser. It parses a JSON data string into and array of tokens,
  59 * each describing a single JSON object.
  60 */
  61jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js,
  62                     size_t len,
  63                     jsmntok_t *tokens, unsigned int num_tokens);
  64
  65const char *jsmn_strerror(jsmnerr_t err);
  66
  67#endif /* __JSMN_H_ */
  68