266 jsmntok_t *tokens,
const unsigned int num_tokens) {
272 for (; parser->
pos < len && js[parser->
pos] !=
'\0'; parser->
pos++) {
281 if (tokens ==
NULL) {
284 token = jsmn_alloc_token(parser, tokens, num_tokens);
297#ifdef JSMN_PARENT_LINKS
307 if (tokens ==
NULL) {
311#ifdef JSMN_PARENT_LINKS
315 token = &tokens[parser->
toknext - 1];
317 if (token->
start != -1 && token->
end == -1) {
318 if (token->
type != type) {
321 token->
end = parser->
pos + 1;
325 if (token->parent == -1) {
331 token = &tokens[token->parent];
334 for (i = parser->
toknext - 1; i >= 0; i--) {
336 if (token->
start != -1 && token->
end == -1) {
337 if (token->
type != type) {
341 token->
end = parser->
pos + 1;
349 for (; i >= 0; i--) {
351 if (token->
start != -1 && token->
end == -1) {
359 r = jsmn_parse_string(parser, js, len, tokens, num_tokens);
380#ifdef JSMN_PARENT_LINKS
383 for (i = parser->
toknext - 1; i >= 0; i--) {
385 if (tokens[i].start != -1 && tokens[i].end == -1) {
422 r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens);
440 if (tokens !=
NULL) {
441 for (i = parser->
toknext - 1; i >= 0; i--) {
443 if (tokens[i].start != -1 && tokens[i].end == -1) {
JSMN_API int jsmn_parse(jsmn_parser *parser, const char *js, const size_t len, jsmntok_t *tokens, const unsigned int num_tokens)