linux/tools/perf/pmu-events/jsmn.h
Ed Maste 82352ae28f perf tools: Correct license on jsmn JSON parser
This header is part of the jsmn JSON parser, introduced in 867a979a83.
Correct the SPDX tag to indicate that it is under the MIT license.

Signed-off-by: Ed Maste <emaste@freebsd.org>
Acked-by: Andi Kleen <ak@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: http://lore.kernel.org/lkml/20200528170858.48457-1-emaste@freefall.freebsd.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2020-05-29 16:51:38 -03:00

69 lines
1.6 KiB
C

/* SPDX-License-Identifier: MIT */
#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; /* 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,
size_t len,
jsmntok_t *tokens, unsigned int num_tokens);
const char *jsmn_strerror(jsmnerr_t err);
#endif /* __JSMN_H_ */