MCPcopy Create free account
hub / github.com/MariaDB/server / ParseArray

Method ParseArray

storage/connect/json.cpp:567–616  ·  view source on GitHub ↗

/ Parse a JSON Array. */ /

Source from the content-addressed store, hash-verified

565/* Parse a JSON Array. */
566/***********************************************************************/
567PJAR JDOC::ParseArray(PGLOBAL g, int& i)
568{
569 int level = 0;
570 bool b = (!i);
571 PJAR jarp = new(g) JARRAY;
572
573 for (; i < len; i++)
574 switch (s[i]) {
575 case ',':
576 if (level < 2) {
577 snprintf(g->Message, sizeof(g->Message), "Unexpected ',' near %.*s",ARGS);
578 throw 1;
579 } else
580 level = 1;
581
582 break;
583 case ']':
584 if (level == 1) {
585 snprintf(g->Message, sizeof(g->Message), "Unexpected ',]' near %.*s", ARGS);
586 throw 1;
587 } // endif level
588
589 jarp->InitArray(g);
590 return jarp;
591 case '\n':
592 if (!b)
593 pty[0] = pty[1] = false;
594 case '\r':
595 case ' ':
596 case '\t':
597 break;
598 default:
599 if (level == 2) {
600 snprintf(g->Message, sizeof(g->Message), "Unexpected value near %.*s", ARGS);
601 throw 1;
602 } else
603 jarp->AddArrayValue(g, ParseValue(g, i));
604
605 level = (b) ? 1 : 2;
606 break;
607 }; // endswitch s[i]
608
609 if (b) {
610 // Case of Pretty == 0
611 jarp->InitArray(g);
612 return jarp;
613 } // endif b
614
615 throw ("Unexpected EOF in array");
616} // end of ParseArray
617
618/***********************************************************************/
619/* Parse a JSON Object. */

Callers 1

ParseJsonFunction · 0.45

Calls 2

InitArrayMethod · 0.80
AddArrayValueMethod · 0.45

Tested by

no test coverage detected