root/tools/perf/pmu-events/jsmn.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */