~oem-solutions-group/unity-2d/clutter-1.0

« back to all changes in this revision

Viewing changes to clutter/json/json-parser.c

  • Committer: Bazaar Package Importer
  • Author(s): Emilio Pozuelo Monfort
  • Date: 2010-03-21 13:27:56 UTC
  • mto: (2.1.3 experimental)
  • mto: This revision was merged to the branch mainline in revision 8.
  • Revision ID: james.westby@ubuntu.com-20100321132756-nf8yd30yxo3zzwcm
Tags: upstream-1.2.2
ImportĀ upstreamĀ versionĀ 1.2.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
91
91
  TRUE                  /* char_2_token */,
92
92
  TRUE                  /* symbol_2_token */,
93
93
  FALSE                 /* scope_0_fallback */,
 
94
  TRUE                  /* store_int64 */
94
95
};
95
96
 
96
97
 
357
358
      JsonNode *node = NULL;
358
359
      gboolean negative = FALSE;
359
360
 
360
 
      if (token == G_TOKEN_COMMA)
361
 
        {
362
 
          /* swallow the comma */
363
 
          token = g_scanner_get_next_token (scanner);
364
 
          continue;
365
 
        }
366
 
 
367
361
      /* nested object */
368
362
      if (token == G_TOKEN_LEFT_CURLY)
369
363
        {
395
389
          if (token == G_TOKEN_RIGHT_BRACE)
396
390
            break;
397
391
 
398
 
          continue;
 
392
          if (token == G_TOKEN_COMMA)
 
393
            {
 
394
              token = g_scanner_get_next_token (scanner);
 
395
              if (token == G_TOKEN_RIGHT_BRACE)
 
396
                return G_TOKEN_SYMBOL;
 
397
 
 
398
              continue;
 
399
            }
 
400
 
 
401
          json_array_unref (array);
 
402
 
 
403
          return G_TOKEN_RIGHT_BRACE;
399
404
        }
400
405
 
401
406
      /* nested array */
429
434
          if (token == G_TOKEN_RIGHT_BRACE)
430
435
            break;
431
436
 
432
 
          continue;
 
437
          if (token == G_TOKEN_COMMA)
 
438
            {
 
439
              token = g_scanner_get_next_token (scanner);
 
440
              if (token == G_TOKEN_RIGHT_BRACE)
 
441
                return G_TOKEN_SYMBOL;
 
442
 
 
443
              continue;
 
444
            }
 
445
 
 
446
          json_array_unref (array);
 
447
 
 
448
          return G_TOKEN_RIGHT_BRACE;
433
449
        }
434
450
 
435
451
      if (token == '-')
454
470
        {
455
471
        case G_TOKEN_INT:
456
472
          node = json_node_new (JSON_NODE_VALUE);
457
 
          json_node_set_int (node, negative ? scanner->value.v_int * -1
458
 
                                            : scanner->value.v_int);
 
473
          json_node_set_int (node, negative ? scanner->value.v_int64 * -1
 
474
                                            : scanner->value.v_int64);
459
475
          break;
460
476
 
461
477
        case G_TOKEN_FLOAT:
496
512
        }
497
513
 
498
514
      token = g_scanner_get_next_token (scanner);
 
515
      if (token == G_TOKEN_RIGHT_BRACE)
 
516
        break;
 
517
 
 
518
      if (token == G_TOKEN_COMMA)
 
519
        {
 
520
          token = g_scanner_get_next_token (scanner);
 
521
          if (token == G_TOKEN_RIGHT_BRACE)
 
522
            return G_TOKEN_SYMBOL;
 
523
 
 
524
          continue;
 
525
        }
 
526
 
 
527
      json_array_unref (array);
 
528
 
 
529
      return G_TOKEN_RIGHT_BRACE;
499
530
    }
500
531
 
501
532
  json_node_take_array (priv->current_node, array);
533
564
      gchar *name = NULL;
534
565
      gboolean negative = FALSE;
535
566
 
536
 
      if (token == G_TOKEN_COMMA)
537
 
        {
538
 
          /* swallow the comma */
539
 
          token = g_scanner_get_next_token (scanner);
540
 
          continue;
541
 
        }
542
 
 
543
567
      if (token == G_TOKEN_STRING)
544
568
        {
545
569
          name = g_strdup (scanner->value.v_string);
602
626
          if (token == G_TOKEN_RIGHT_CURLY)
603
627
            break;
604
628
 
605
 
          continue;
 
629
          if (token == G_TOKEN_COMMA)
 
630
            {
 
631
              token = g_scanner_get_next_token (scanner);
 
632
              if (token == G_TOKEN_RIGHT_CURLY)
 
633
                return G_TOKEN_SYMBOL;
 
634
 
 
635
              continue;
 
636
            }
 
637
 
 
638
          json_object_unref (object);
 
639
 
 
640
          return G_TOKEN_RIGHT_CURLY;
606
641
        }
607
642
     
608
643
      if (token == G_TOKEN_LEFT_BRACE)
635
670
          g_free (name);
636
671
 
637
672
          token = g_scanner_get_next_token (scanner);
638
 
          if (token == G_TOKEN_RIGHT_BRACE)
 
673
          if (token == G_TOKEN_RIGHT_CURLY)
639
674
            break;
640
675
 
641
 
          continue;
 
676
          if (token == G_TOKEN_COMMA)
 
677
            {
 
678
              token = g_scanner_get_next_token (scanner);
 
679
              if (token == G_TOKEN_RIGHT_CURLY)
 
680
                return G_TOKEN_SYMBOL;
 
681
 
 
682
              continue;
 
683
            }
 
684
 
 
685
          json_object_unref (object);
 
686
 
 
687
          return G_TOKEN_RIGHT_CURLY;
642
688
        }
643
689
 
644
690
      if (token == '-')
662
708
        {
663
709
        case G_TOKEN_INT:
664
710
          node = json_node_new (JSON_NODE_VALUE);
665
 
          json_node_set_int (node, negative ? scanner->value.v_int * -1
666
 
                                            : scanner->value.v_int);
 
711
          json_node_set_int (node, negative ? scanner->value.v_int64 * -1
 
712
                                            : scanner->value.v_int64);
667
713
          break;
668
714
 
669
715
        case G_TOKEN_FLOAT:
706
752
      g_free (name);
707
753
 
708
754
      token = g_scanner_get_next_token (scanner);
 
755
      if (token == G_TOKEN_RIGHT_CURLY)
 
756
        break;
 
757
 
 
758
      if (token == G_TOKEN_COMMA)
 
759
        {
 
760
          token = g_scanner_get_next_token (scanner);
 
761
          if (token == G_TOKEN_RIGHT_CURLY)
 
762
            return G_TOKEN_SYMBOL;
 
763
 
 
764
          continue;
 
765
        }
 
766
 
 
767
      json_object_unref (object);
 
768
 
 
769
      return G_TOKEN_RIGHT_CURLY;
709
770
    }
710
771
 
711
772
  json_node_take_object (priv->current_node, object);
756
817
            switch (token)
757
818
              {
758
819
              case G_TOKEN_INT:
759
 
                json_node_set_int (priv->current_node, scanner->value.v_int);
 
820
                json_node_set_int (priv->current_node, scanner->value.v_int64);
760
821
                break;
761
822
              case G_TOKEN_FLOAT:
762
823
                json_node_set_double (priv->current_node, scanner->value.v_float);
777
838
    case G_TOKEN_STRING:
778
839
      priv->root = priv->current_node = json_node_new (JSON_NODE_VALUE);
779
840
      if (token == G_TOKEN_INT)
780
 
        json_node_set_int (priv->current_node, scanner->value.v_int);
 
841
        json_node_set_int (priv->current_node, scanner->value.v_int64);
781
842
      else if (token == G_TOKEN_FLOAT)
782
843
        json_node_set_double (priv->current_node, scanner->value.v_float);
783
844
      else