OLD | NEW |
1 | 1 |
2 #line 1 "../../src/hb-buffer-deserialize-json.rl" | 2 #line 1 "hb-buffer-deserialize-json.rl" |
3 /* | 3 /* |
4 * Copyright © 2013 Google, Inc. | 4 * Copyright © 2013 Google, Inc. |
5 * | 5 * |
6 * This is part of HarfBuzz, a text shaping library. | 6 * This is part of HarfBuzz, a text shaping library. |
7 * | 7 * |
8 * Permission is hereby granted, without written agreement and without | 8 * Permission is hereby granted, without written agreement and without |
9 * license or royalty fees, to use, copy, modify, and distribute this | 9 * license or royalty fees, to use, copy, modify, and distribute this |
10 * software and its documentation for any purpose, provided that the | 10 * software and its documentation for any purpose, provided that the |
11 * above copyright notice and the following two paragraphs appear in | 11 * above copyright notice and the following two paragraphs appear in |
12 * all copies of this software. | 12 * all copies of this software. |
(...skipping 12 matching lines...) Expand all Loading... |
25 * | 25 * |
26 * Google Author(s): Behdad Esfahbod | 26 * Google Author(s): Behdad Esfahbod |
27 */ | 27 */ |
28 | 28 |
29 #ifndef HB_BUFFER_DESERIALIZE_JSON_HH | 29 #ifndef HB_BUFFER_DESERIALIZE_JSON_HH |
30 #define HB_BUFFER_DESERIALIZE_JSON_HH | 30 #define HB_BUFFER_DESERIALIZE_JSON_HH |
31 | 31 |
32 #include "hb-private.hh" | 32 #include "hb-private.hh" |
33 | 33 |
34 | 34 |
35 #line 36 "hb-buffer-deserialize-json.hh.tmp" | 35 #line 36 "hb-buffer-deserialize-json.hh" |
36 static const unsigned char _deserialize_json_trans_keys[] = { | 36 static const unsigned char _deserialize_json_trans_keys[] = { |
37 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u,
57u, | 37 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u,
57u, |
38 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u,
57u, | 38 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u,
57u, |
39 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u
, 125u, | 39 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u
, 125u, |
40 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34
u, 34u, | 40 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34
u, 34u, |
41 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 5
7u, | 41 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 5
7u, |
42 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0 | 42 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0 |
43 }; | 43 }; |
44 | 44 |
45 static const char _deserialize_json_key_spans[] = { | 45 static const char _deserialize_json_key_spans[] = { |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 15, 15, 16, 0, 0, 0, 0 | 428 15, 15, 16, 0, 0, 0, 0 |
429 }; | 429 }; |
430 | 430 |
431 static const int deserialize_json_start = 1; | 431 static const int deserialize_json_start = 1; |
432 static const int deserialize_json_first_final = 44; | 432 static const int deserialize_json_first_final = 44; |
433 static const int deserialize_json_error = 0; | 433 static const int deserialize_json_error = 0; |
434 | 434 |
435 static const int deserialize_json_en_main = 1; | 435 static const int deserialize_json_en_main = 1; |
436 | 436 |
437 | 437 |
438 #line 97 "../../src/hb-buffer-deserialize-json.rl" | 438 #line 97 "hb-buffer-deserialize-json.rl" |
439 | 439 |
440 | 440 |
441 static hb_bool_t | 441 static hb_bool_t |
442 _hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, | 442 _hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, |
443 const char *buf, | 443 const char *buf, |
444 unsigned int buf_len, | 444 unsigned int buf_len, |
445 const char **end_ptr, | 445 const char **end_ptr, |
446 hb_font_t *font) | 446 hb_font_t *font) |
447 { | 447 { |
448 const char *p = buf, *pe = buf + buf_len; | 448 const char *p = buf, *pe = buf + buf_len; |
449 | 449 |
450 /* Ensure we have positions. */ | 450 /* Ensure we have positions. */ |
451 (void) hb_buffer_get_glyph_positions (buffer, NULL); | 451 (void) hb_buffer_get_glyph_positions (buffer, NULL); |
452 | 452 |
453 while (p < pe && ISSPACE (*p)) | 453 while (p < pe && ISSPACE (*p)) |
454 p++; | 454 p++; |
455 if (p < pe && *p == (buffer->len ? ',' : '[')) | 455 if (p < pe && *p == (buffer->len ? ',' : '[')) |
456 { | 456 { |
457 *end_ptr = ++p; | 457 *end_ptr = ++p; |
458 } | 458 } |
459 | 459 |
460 const char *tok = NULL; | 460 const char *tok = NULL; |
461 int cs; | 461 int cs; |
462 hb_glyph_info_t info; | 462 hb_glyph_info_t info = {0}; |
463 hb_glyph_position_t pos; | 463 hb_glyph_position_t pos = {0}; |
464 | 464 |
465 #line 466 "hb-buffer-deserialize-json.hh.tmp" | 465 #line 466 "hb-buffer-deserialize-json.hh" |
466 { | 466 { |
467 cs = deserialize_json_start; | 467 cs = deserialize_json_start; |
468 } | 468 } |
469 | 469 |
470 #line 471 "hb-buffer-deserialize-json.hh.tmp" | 470 #line 471 "hb-buffer-deserialize-json.hh" |
471 { | 471 { |
472 int _slen; | 472 int _slen; |
473 int _trans; | 473 int _trans; |
474 const unsigned char *_keys; | 474 const unsigned char *_keys; |
475 const char *_inds; | 475 const char *_inds; |
476 if ( p == pe ) | 476 if ( p == pe ) |
477 goto _test_eof; | 477 goto _test_eof; |
478 if ( cs == 0 ) | 478 if ( cs == 0 ) |
479 goto _out; | 479 goto _out; |
480 _resume: | 480 _resume: |
481 _keys = _deserialize_json_trans_keys + (cs<<1); | 481 _keys = _deserialize_json_trans_keys + (cs<<1); |
482 _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs]
; | 482 _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs]
; |
483 | 483 |
484 _slen = _deserialize_json_key_spans[cs]; | 484 _slen = _deserialize_json_key_spans[cs]; |
485 _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && | 485 _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && |
486 (*p) <= _keys[1] ? | 486 (*p) <= _keys[1] ? |
487 (*p) - _keys[0] : _slen ]; | 487 (*p) - _keys[0] : _slen ]; |
488 | 488 |
489 cs = _deserialize_json_trans_targs[_trans]; | 489 cs = _deserialize_json_trans_targs[_trans]; |
490 | 490 |
491 if ( _deserialize_json_trans_actions[_trans] == 0 ) | 491 if ( _deserialize_json_trans_actions[_trans] == 0 ) |
492 goto _again; | 492 goto _again; |
493 | 493 |
494 switch ( _deserialize_json_trans_actions[_trans] ) { | 494 switch ( _deserialize_json_trans_actions[_trans] ) { |
495 case 1: | 495 case 1: |
496 #line 38 "../../src/hb-buffer-deserialize-json.rl" | 496 #line 38 "hb-buffer-deserialize-json.rl" |
497 { | 497 { |
498 memset (&info, 0, sizeof (info)); | 498 memset (&info, 0, sizeof (info)); |
499 memset (&pos , 0, sizeof (pos )); | 499 memset (&pos , 0, sizeof (pos )); |
500 } | 500 } |
501 break; | 501 break; |
502 case 5: | 502 case 5: |
503 #line 43 "../../src/hb-buffer-deserialize-json.rl" | 503 #line 43 "hb-buffer-deserialize-json.rl" |
504 { | 504 { |
505 buffer->add_info (info); | 505 buffer->add_info (info); |
506 if (buffer->in_error) | 506 if (buffer->in_error) |
507 return false; | 507 return false; |
508 buffer->pos[buffer->len - 1] = pos; | 508 buffer->pos[buffer->len - 1] = pos; |
509 *end_ptr = p; | 509 *end_ptr = p; |
510 } | 510 } |
511 break; | 511 break; |
512 case 2: | 512 case 2: |
513 #line 51 "../../src/hb-buffer-deserialize-json.rl" | 513 #line 51 "hb-buffer-deserialize-json.rl" |
514 { | 514 { |
515 tok = p; | 515 tok = p; |
516 } | 516 } |
517 break; | 517 break; |
518 case 14: | 518 case 14: |
519 #line 55 "../../src/hb-buffer-deserialize-json.rl" | 519 #line 55 "hb-buffer-deserialize-json.rl" |
520 { | 520 { |
521 if (!hb_font_glyph_from_string (font, | 521 if (!hb_font_glyph_from_string (font, |
522 tok, p - tok, | 522 tok, p - tok, |
523 &info.codepoint)) | 523 &info.codepoint)) |
524 return false; | 524 return false; |
525 } | 525 } |
526 break; | 526 break; |
527 case 15: | 527 case 15: |
528 #line 62 "../../src/hb-buffer-deserialize-json.rl" | 528 #line 62 "hb-buffer-deserialize-json.rl" |
529 { if (!parse_uint (tok, p, &info.codepoint)) return false; } | 529 { if (!parse_uint (tok, p, &info.codepoint)) return false; } |
530 break; | 530 break; |
531 case 8: | 531 case 8: |
532 #line 63 "../../src/hb-buffer-deserialize-json.rl" | 532 #line 63 "hb-buffer-deserialize-json.rl" |
533 { if (!parse_uint (tok, p, &info.cluster )) return false; } | 533 { if (!parse_uint (tok, p, &info.cluster )) return false; } |
534 break; | 534 break; |
535 case 10: | 535 case 10: |
536 #line 64 "../../src/hb-buffer-deserialize-json.rl" | 536 #line 64 "hb-buffer-deserialize-json.rl" |
537 { if (!parse_int (tok, p, &pos.x_offset )) return false; } | 537 { if (!parse_int (tok, p, &pos.x_offset )) return false; } |
538 break; | 538 break; |
539 case 12: | 539 case 12: |
540 #line 65 "../../src/hb-buffer-deserialize-json.rl" | 540 #line 65 "hb-buffer-deserialize-json.rl" |
541 { if (!parse_int (tok, p, &pos.y_offset )) return false; } | 541 { if (!parse_int (tok, p, &pos.y_offset )) return false; } |
542 break; | 542 break; |
543 case 3: | 543 case 3: |
544 #line 66 "../../src/hb-buffer-deserialize-json.rl" | 544 #line 66 "hb-buffer-deserialize-json.rl" |
545 { if (!parse_int (tok, p, &pos.x_advance)) return false; } | 545 { if (!parse_int (tok, p, &pos.x_advance)) return false; } |
546 break; | 546 break; |
547 case 6: | 547 case 6: |
548 #line 67 "../../src/hb-buffer-deserialize-json.rl" | 548 #line 67 "hb-buffer-deserialize-json.rl" |
549 { if (!parse_int (tok, p, &pos.y_advance)) return false; } | 549 { if (!parse_int (tok, p, &pos.y_advance)) return false; } |
550 break; | 550 break; |
551 case 16: | 551 case 16: |
552 #line 62 "../../src/hb-buffer-deserialize-json.rl" | 552 #line 62 "hb-buffer-deserialize-json.rl" |
553 { if (!parse_uint (tok, p, &info.codepoint)) return false; } | 553 { if (!parse_uint (tok, p, &info.codepoint)) return false; } |
554 #line 43 "../../src/hb-buffer-deserialize-json.rl" | 554 #line 43 "hb-buffer-deserialize-json.rl" |
555 { | 555 { |
556 buffer->add_info (info); | 556 buffer->add_info (info); |
557 if (buffer->in_error) | 557 if (buffer->in_error) |
558 return false; | 558 return false; |
559 buffer->pos[buffer->len - 1] = pos; | 559 buffer->pos[buffer->len - 1] = pos; |
560 *end_ptr = p; | 560 *end_ptr = p; |
561 } | 561 } |
562 break; | 562 break; |
563 case 9: | 563 case 9: |
564 #line 63 "../../src/hb-buffer-deserialize-json.rl" | 564 #line 63 "hb-buffer-deserialize-json.rl" |
565 { if (!parse_uint (tok, p, &info.cluster )) return false; } | 565 { if (!parse_uint (tok, p, &info.cluster )) return false; } |
566 #line 43 "../../src/hb-buffer-deserialize-json.rl" | 566 #line 43 "hb-buffer-deserialize-json.rl" |
567 { | 567 { |
568 buffer->add_info (info); | 568 buffer->add_info (info); |
569 if (buffer->in_error) | 569 if (buffer->in_error) |
570 return false; | 570 return false; |
571 buffer->pos[buffer->len - 1] = pos; | 571 buffer->pos[buffer->len - 1] = pos; |
572 *end_ptr = p; | 572 *end_ptr = p; |
573 } | 573 } |
574 break; | 574 break; |
575 case 11: | 575 case 11: |
576 #line 64 "../../src/hb-buffer-deserialize-json.rl" | 576 #line 64 "hb-buffer-deserialize-json.rl" |
577 { if (!parse_int (tok, p, &pos.x_offset )) return false; } | 577 { if (!parse_int (tok, p, &pos.x_offset )) return false; } |
578 #line 43 "../../src/hb-buffer-deserialize-json.rl" | 578 #line 43 "hb-buffer-deserialize-json.rl" |
579 { | 579 { |
580 buffer->add_info (info); | 580 buffer->add_info (info); |
581 if (buffer->in_error) | 581 if (buffer->in_error) |
582 return false; | 582 return false; |
583 buffer->pos[buffer->len - 1] = pos; | 583 buffer->pos[buffer->len - 1] = pos; |
584 *end_ptr = p; | 584 *end_ptr = p; |
585 } | 585 } |
586 break; | 586 break; |
587 case 13: | 587 case 13: |
588 #line 65 "../../src/hb-buffer-deserialize-json.rl" | 588 #line 65 "hb-buffer-deserialize-json.rl" |
589 { if (!parse_int (tok, p, &pos.y_offset )) return false; } | 589 { if (!parse_int (tok, p, &pos.y_offset )) return false; } |
590 #line 43 "../../src/hb-buffer-deserialize-json.rl" | 590 #line 43 "hb-buffer-deserialize-json.rl" |
591 { | 591 { |
592 buffer->add_info (info); | 592 buffer->add_info (info); |
593 if (buffer->in_error) | 593 if (buffer->in_error) |
594 return false; | 594 return false; |
595 buffer->pos[buffer->len - 1] = pos; | 595 buffer->pos[buffer->len - 1] = pos; |
596 *end_ptr = p; | 596 *end_ptr = p; |
597 } | 597 } |
598 break; | 598 break; |
599 case 4: | 599 case 4: |
600 #line 66 "../../src/hb-buffer-deserialize-json.rl" | 600 #line 66 "hb-buffer-deserialize-json.rl" |
601 { if (!parse_int (tok, p, &pos.x_advance)) return false; } | 601 { if (!parse_int (tok, p, &pos.x_advance)) return false; } |
602 #line 43 "../../src/hb-buffer-deserialize-json.rl" | 602 #line 43 "hb-buffer-deserialize-json.rl" |
603 { | 603 { |
604 buffer->add_info (info); | 604 buffer->add_info (info); |
605 if (buffer->in_error) | 605 if (buffer->in_error) |
606 return false; | 606 return false; |
607 buffer->pos[buffer->len - 1] = pos; | 607 buffer->pos[buffer->len - 1] = pos; |
608 *end_ptr = p; | 608 *end_ptr = p; |
609 } | 609 } |
610 break; | 610 break; |
611 case 7: | 611 case 7: |
612 #line 67 "../../src/hb-buffer-deserialize-json.rl" | 612 #line 67 "hb-buffer-deserialize-json.rl" |
613 { if (!parse_int (tok, p, &pos.y_advance)) return false; } | 613 { if (!parse_int (tok, p, &pos.y_advance)) return false; } |
614 #line 43 "../../src/hb-buffer-deserialize-json.rl" | 614 #line 43 "hb-buffer-deserialize-json.rl" |
615 { | 615 { |
616 buffer->add_info (info); | 616 buffer->add_info (info); |
617 if (buffer->in_error) | 617 if (buffer->in_error) |
618 return false; | 618 return false; |
619 buffer->pos[buffer->len - 1] = pos; | 619 buffer->pos[buffer->len - 1] = pos; |
620 *end_ptr = p; | 620 *end_ptr = p; |
621 } | 621 } |
622 break; | 622 break; |
623 #line 624 "hb-buffer-deserialize-json.hh.tmp" | 623 #line 624 "hb-buffer-deserialize-json.hh" |
624 } | 624 } |
625 | 625 |
626 _again: | 626 _again: |
627 if ( cs == 0 ) | 627 if ( cs == 0 ) |
628 goto _out; | 628 goto _out; |
629 if ( ++p != pe ) | 629 if ( ++p != pe ) |
630 goto _resume; | 630 goto _resume; |
631 _test_eof: {} | 631 _test_eof: {} |
632 _out: {} | 632 _out: {} |
633 } | 633 } |
634 | 634 |
635 #line 125 "../../src/hb-buffer-deserialize-json.rl" | 635 #line 125 "hb-buffer-deserialize-json.rl" |
636 | 636 |
637 | 637 |
638 *end_ptr = p; | 638 *end_ptr = p; |
639 | 639 |
640 return p == pe && *(p-1) != ']'; | 640 return p == pe && *(p-1) != ']'; |
641 } | 641 } |
642 | 642 |
643 #endif /* HB_BUFFER_DESERIALIZE_JSON_HH */ | 643 #endif /* HB_BUFFER_DESERIALIZE_JSON_HH */ |
OLD | NEW |