Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  hb-buffer-deserialize-json.hh

  Sprache: C
 


#line 1 "hb-buffer-deserialize-json.rl"
/*
 * Copyright © 2013  Google, Inc.
 *
 *  This is part of HarfBuzz, a text shaping library.
 *
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and its documentation for any purpose, provided that the
 * above copyright notice and the following two paragraphs appear in
 * all copies of this software.
 *
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 *
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 *
 * Google Author(s): Behdad Esfahbod
 */


#ifndef HB_BUFFER_DESERIALIZE_JSON_HH
#define HB_BUFFER_DESERIALIZE_JSON_HH

#include "hb.hh"


#line 36 "hb-buffer-deserialize-json.hh"
static const unsigned char _deserialize_json_trans_keys[] = {
 0u, 0u, 9u, 123u, 9u, 34u, 97u, 117u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 
 48u, 57u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 
 48u, 57u, 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 
 9u, 125u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 
 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 
 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 34u, 92u, 
 9u, 125u, 34u, 92u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 
 9u, 123u, 0u, 0u, 0
};

static const char _deserialize_json_key_spans[] = {
 01152621215049
 101171178511715049
 10117117115049117
 11721504910117117
 150491011711711
 50491171171504959
 1175911711715049117
 1150
};

static const short _deserialize_json_index_offsets[] = {
 00116143165168170221
 271282400518604722724775
 82583695410721074107611271177
 12951413141614181469151915301648
 17661768181918691880199821162118
 21202171222123392457245925102560
 26202738279829163034303630873137
 32553371
};

static const char _deserialize_json_indicies[] = {
 0000011
 11111111
 11111111
 01111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11121333
 33111111
 11111111
 11113141
 51671891
 11111111
 11111011112
 11311313131313
 11111111
 11111111
 111311111
 11111111
 11111111
 11111411414
 14141411111
 11111111
 111111411
 11111111
 111511161717
 171717171717171
 1819191919191919
 191912020202020
 11111111
 11111111
 112011111
 111111211
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 111111122
 1232323232311
 11111111
 11111111
 231111111
 11113111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1111124125
 252525251111
 11111111
 111111251
 11111111
 112611111
 11111111
 11111111
 11111111
 11111111
 11111111
 111271202020
 2020111111
 11111111
 111120111
 11111111
 2111119191919
 19191919191911
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1221281282828
 2828111111
 11111111
 111128111
 11111111
 11111111
 111111291
 2929292929111
 11111111
 111111129
 11111111
 1111301131
 3232323232323232
 321333434343434
 343434341353535
 3535111111
 11111111
 111135111
 11111111
 361111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 13713535353535
 11111111
 11111111
 113511111
 111111361
 11343434343434
 343434341111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 111111137
 1381391393939
 3939111111
 11111111
 111139111
 11111111
 11111111
 111111401
 4040404040111
 11111111
 111111140
 11111111
 111111141
 4242424242424242
 42143434343431
 11111111
 11111111
 143111111
 111114411
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 111111451
 4343434343111
 11111111
 111111143
 11111111
 1114411146
 4646464646464646
 461111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11114514748
 14914949494949
 11111111
 11111111
 114911111
 11111111
 11111111
 11115015050
 50505011111
 11111111
 111115011
 11111111
 115111525353
 535353535353531
 5455555555555555
 555515656565656
 11111111
 11111111
 115611111
 111111571
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 111111158
 1565656565611
 11111111
 11111111
 561111111
 111157111
 5555555555555555
 5555111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1111158159
 1595959595911
 11111111
 11111111
 591111111
 11111111
 11111111
 1160160606060
 601111111
 11111111
 111601111
 11111111
 61116263636363
 636363636316465
 6565656565656565
 1666666666611
 11111111
 11111111
 661111111
 111167111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1111168166
 666666661111
 11111111
 111111661
 11111111
 11671116565
 6565656565656565
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11168169170
 1707070707011
 11111111
 11111111
 701111111
 11111111
 11111111
 1171171717171
 711111111
 11111111
 111711111
 11111111
 1117273737373
 737373737317474
 74747411111
 11111111
 111117411
 11111111
 175111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1176174747474
 741111111
 11111111
 111741111
 111111175
 1117777777777
 7777777777111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 76178178787878
 781111111
 11111111
 111781111
 11111111
 11111111
 1111179179
 797979791111
 11111111
 111111791
 801111111
 1111118182
 8282828282828282
 184838383838383
 8383838383838383
 8383838383838383
 8383838383838383
 8383838383838383
 8383838383838383
 8383838383838383
 8383838583868686
 8686111111
 11111111
 111186111
 11111111
 871111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1881831111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1111183189
 898989891111
 11111111
 111111891
 11111111
 119011111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 111911898989
 8989111111
 11111111
 111189111
 11111111
 9011192929292
 92929292929211
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 1911931939393
 9393111111
 11111111
 111193111
 11111111
 11111111
 111111941
 9494949494111
 11111111
 111111194
 11111111
 111111195
 9696969696969696
 96189898989891
 11111111
 11111111
 189111111
 111119011
 197979797979797
 97979711111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 111111911
 00000111
 11111111
 11111110
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 11111111
 112110
};

static const char _deserialize_json_trans_targs[] = {
 1022341925
 384452513678
 9129121021110
 1111565714151617
 181718102112021
 222324102112426
 3227282930313031
 102113334353637
 363710211394041
 424310211434546
 475051474849102
 111021151535450
 5555
};

static const char _deserialize_json_trans_actions[] = {
 00100000
 00000002
 22003340
 50000022
 20066700
 02288900
 00022200
 10101100222
 00121213000
 22141415000
 2161601701818
 19202021170022
 2223
};

static const int deserialize_json_start = 1;
static const int deserialize_json_first_final = 56;
static const int deserialize_json_error = 0;

static const int deserialize_json_en_main = 1;


#line 111 "hb-buffer-deserialize-json.rl"


static hb_bool_t
_hb_buffer_deserialize_json (hb_buffer_t *buffer,
        const char *buf,
        unsigned int buf_len,
        const char **end_ptr,
        hb_font_t *font)
{
  const char *p = buf, *pe = buf + buf_len;

  /* Ensure we have positions. */
  (void) hb_buffer_get_glyph_positions (buffer, nullptr);

  while (p < pe && ISSPACE (*p))
    p++;
  if (p < pe && *p == (buffer->len ? ',' : '['))
    *end_ptr = ++p;

  const char *tok = nullptr;
  int cs;
  hb_glyph_info_t info = {0};
  hb_glyph_position_t pos = {0};
  
#line 559 "hb-buffer-deserialize-json.hh"
 {
 cs = deserialize_json_start;
 }

#line 564 "hb-buffer-deserialize-json.hh"
 {
 int _slen;
 int _trans;
 const unsigned char *_keys;
 const char *_inds;
 if ( p == pe )
  goto _test_eof;
 if ( cs == 0 )
  goto _out;
_resume:
 _keys = _deserialize_json_trans_keys + (cs<<1);
 _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs];

 _slen = _deserialize_json_key_spans[cs];
 _trans = _inds[ _slen > 0 && _keys[0] <=(*p) &&
  (*p) <= _keys[1] ?
  (*p) - _keys[0] : _slen ];

 cs = _deserialize_json_trans_targs[_trans];

 if ( _deserialize_json_trans_actions[_trans] == 0 )
  goto _again;

 switch ( _deserialize_json_trans_actions[_trans] ) {
 case 1:
#line 38 "hb-buffer-deserialize-json.rl"
 {
 hb_memset (&info, 0sizeof (info));
 hb_memset (&pos , 0sizeof (pos ));
}
 break;
 case 5:
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 2:
#line 51 "hb-buffer-deserialize-json.rl"
 {
 tok = p;
}
 break;
 case 17:
#line 55 "hb-buffer-deserialize-json.rl"
 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
 break;
 case 23:
#line 56 "hb-buffer-deserialize-json.rl"
 { if (unlikely (!buffer->ensure_unicode ())) return false; }
 break;
 case 18:
#line 58 "hb-buffer-deserialize-json.rl"
 {
 /* TODO Unescape \" and \\ if found. */
 if (!hb_font_glyph_from_string (font,
     tok+1, p - tok - 2/* Skip "" */
     &info.codepoint))
   return false;
}
 break;
 case 20:
#line 66 "hb-buffer-deserialize-json.rl"
 { if (!parse_uint (tok, p, &info.codepoint)) return false; }
 break;
 case 8:
#line 67 "hb-buffer-deserialize-json.rl"
 { if (!parse_uint (tok, p, &info.cluster )) return false; }
 break;
 case 10:
#line 68 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.x_offset )) return false; }
 break;
 case 12:
#line 69 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.y_offset )) return false; }
 break;
 case 3:
#line 70 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.x_advance)) return false; }
 break;
 case 6:
#line 71 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.y_advance)) return false; }
 break;
 case 14:
#line 72 "hb-buffer-deserialize-json.rl"
 { if (!parse_uint (tok, p, &info.mask    )) return false; }
 break;
 case 16:
#line 51 "hb-buffer-deserialize-json.rl"
 {
 tok = p;
}
#line 55 "hb-buffer-deserialize-json.rl"
 { if (unlikely (!buffer->ensure_glyphs ())) return false; }
 break;
 case 22:
#line 51 "hb-buffer-deserialize-json.rl"
 {
 tok = p;
}
#line 56 "hb-buffer-deserialize-json.rl"
 { if (unlikely (!buffer->ensure_unicode ())) return false; }
 break;
 case 19:
#line 58 "hb-buffer-deserialize-json.rl"
 {
 /* TODO Unescape \" and \\ if found. */
 if (!hb_font_glyph_from_string (font,
     tok+1, p - tok - 2/* Skip "" */
     &info.codepoint))
   return false;
}
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 21:
#line 66 "hb-buffer-deserialize-json.rl"
 { if (!parse_uint (tok, p, &info.codepoint)) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 9:
#line 67 "hb-buffer-deserialize-json.rl"
 { if (!parse_uint (tok, p, &info.cluster )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 11:
#line 68 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.x_offset )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 13:
#line 69 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.y_offset )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 4:
#line 70 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.x_advance)) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 7:
#line 71 "hb-buffer-deserialize-json.rl"
 { if (!parse_int  (tok, p, &pos.y_advance)) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
 case 15:
#line 72 "hb-buffer-deserialize-json.rl"
 { if (!parse_uint (tok, p, &info.mask    )) return false; }
#line 43 "hb-buffer-deserialize-json.rl"
 {
 buffer->add_info (info);
 if (unlikely (!buffer->successful))
   return false;
 buffer->pos[buffer->len - 1] = pos;
 *end_ptr = p;
}
 break;
#line 776 "hb-buffer-deserialize-json.hh"
 }

_again:
 if ( cs == 0 )
  goto _out;
 if ( ++p != pe )
  goto _resume;
 _test_eof: {}
 _out: {}
 }

#line 137 "hb-buffer-deserialize-json.rl"


  *end_ptr = p;

  return p == pe && *(p-1) != ']';
}

#endif /* HB_BUFFER_DESERIALIZE_JSON_HH */

Messung V0.5 in Prozent
C=100 H=94 G=96

¤ Dauer der Verarbeitung: 0.6 Sekunden  (vorverarbeitet am  2026-06-10) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge