Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 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 */
12typedef enum {
13	JSMN_PRIMITIVE = 0,
14	JSMN_OBJECT = 1,
15	JSMN_ARRAY = 2,
16	JSMN_STRING = 3
17} jsmntype_t;
18
19typedef 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 */
36typedef 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 */
47typedef 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 */
56void 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 */
62jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js,
63		     size_t len,
64		     jsmntok_t *tokens, unsigned int num_tokens);
65
66const char *jsmn_strerror(jsmnerr_t err);
67
68#endif /* __JSMN_H_ */