9 if (parser->
toknext >= num_tokens) {
12 tok = &tokens[parser->
toknext++];
15 #ifdef JSMN_PARENT_LINKS 36 size_t len,
jsmntok_t *tokens,
size_t num_tokens) {
42 for (; parser->
pos < len && js[parser->
pos] !=
'\0'; parser->
pos++) {
43 switch (js[parser->
pos]) {
48 case '\t' :
case '\r' :
case '\n' :
case ' ' :
49 case ',' :
case ']' :
case '}' :
52 if (js[parser->
pos] < 32 || js[parser->
pos] >= 127) {
74 #ifdef JSMN_PARENT_LINKS 85 size_t len,
jsmntok_t *tokens,
size_t num_tokens) {
88 int start = parser->
pos;
93 for (; parser->
pos < len && js[parser->
pos] !=
'\0'; parser->
pos++) {
94 char c = js[parser->
pos];
107 #ifdef JSMN_PARENT_LINKS 114 if (c ==
'\\' && parser->
pos + 1 < len) {
117 switch (js[parser->
pos]) {
119 case '\"':
case '/' :
case '\\' :
case 'b' :
120 case 'f' :
case 'r' :
case 'n' :
case 't' :
125 for(i = 0; i < 4 && parser->
pos < len && js[parser->
pos] !=
'\0'; i++) {
127 if(!((js[parser->
pos] >= 48 && js[parser->
pos] <= 57) ||
128 (js[parser->
pos] >= 65 && js[parser->
pos] <= 70) ||
129 (js[parser->
pos] >= 97 && js[parser->
pos] <= 102))) {
152 jsmntok_t *tokens,
unsigned int num_tokens) {
158 for (; parser->
pos < len && js[parser->
pos] !=
'\0'; parser->
pos++) {
166 if (tokens == NULL) {
174 #ifdef JSMN_PARENT_LINKS 186 #ifdef JSMN_PARENT_LINKS 190 token = &tokens[parser->
toknext - 1];
192 if (token->
start != -1 && token->
end == -1) {
193 if (token->
type != type) {
196 token->
end = parser->
pos + 1;
200 if (token->parent == -1) {
203 token = &tokens[token->parent];
206 for (i = parser->
toknext - 1; i >= 0; i--) {
208 if (token->
start != -1 && token->
end == -1) {
209 if (token->
type != type) {
213 token->
end = parser->
pos + 1;
219 for (; i >= 0; i--) {
221 if (token->
start != -1 && token->
end == -1) {
232 if (parser->
toksuper != -1 && tokens != NULL)
235 case '\t' :
case '\r' :
case '\n' :
case ' ':
241 if (tokens != NULL && parser->
toksuper != -1 &&
244 #ifdef JSMN_PARENT_LINKS 247 for (i = parser->
toknext - 1; i >= 0; i--) {
249 if (tokens[i].start != -1 && tokens[i].end == -1) {
260 case '-':
case '0':
case '1' :
case '2':
case '3' :
case '4':
261 case '5':
case '6':
case '7' :
case '8':
case '9':
262 case 't':
case 'f':
case 'n' :
264 if (tokens != NULL && parser->
toksuper != -1) {
278 if (parser->
toksuper != -1 && tokens != NULL)
290 if (tokens != NULL) {
291 for (i = parser->
toknext - 1; i >= 0; i--) {
293 if (tokens[i].start != -1 && tokens[i].end == -1) {
static jsmntok_t * jsmn_alloc_token(jsmn_parser *parser, jsmntok_t *tokens, size_t num_tokens)
static int jsmn_parse_string(jsmn_parser *parser, const char *js, size_t len, jsmntok_t *tokens, size_t num_tokens)
int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, jsmntok_t *tokens, unsigned int num_tokens)
static int jsmn_parse_primitive(jsmn_parser *parser, const char *js, size_t len, jsmntok_t *tokens, size_t num_tokens)
void jsmn_init(jsmn_parser *parser)
static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type, int start, int end)