| 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 |