Lines Matching refs:state

68 static void _set_state(_lv_svg_parser_state_t * state, uint32_t bit)  in _set_state()  argument
70 state->flags |= bit; in _set_state()
73 static void _clear_state(_lv_svg_parser_state_t * state, uint32_t bit) in _clear_state() argument
75 state->flags &= ~bit; in _clear_state()
78 static bool _is_state(_lv_svg_parser_state_t * state, uint32_t bit) in _is_state() argument
80 return state->flags & bit; in _is_state()
83 static void _set_tag_state(_lv_svg_parser_state_t * state, uint32_t bit) in _set_tag_state() argument
85 state->flags = (state->flags & ~SVG_TAG_MASK) | bit; in _set_tag_state()
88 static void _set_quote_state(_lv_svg_parser_state_t * state, uint32_t bit) in _set_quote_state() argument
90 state->flags = (state->flags & ~SVG_QUOTE_MASK) | (bit << 3); in _set_quote_state()
93 static bool _special_handle(_lv_svg_parser_state_t * state) in _special_handle() argument
95 …return state->flags & (SVG_TAG | SVG_SEARCH | SVG_TAG_MASK | SVG_COMMENT | SVG_DOCTYPE | SVG_XMLIN… in _special_handle()
140 static void _svg_parser_xml_inst(_lv_svg_parser_state_t * state, _lv_svg_token_t * token) in _svg_parser_xml_inst() argument
144 while(state->cur <= state->end) { in _svg_parser_xml_inst()
145 char ch = *(state->cur); in _svg_parser_xml_inst()
146 if(ch == '>' && (*(state->cur - 1)) == '?') { in _svg_parser_xml_inst()
147 _clear_state(state, SVG_XMLINST); in _svg_parser_xml_inst()
148 state->cur++; in _svg_parser_xml_inst()
151 state->cur++; in _svg_parser_xml_inst()
155 static void _svg_parser_comment(_lv_svg_parser_state_t * state, _lv_svg_token_t * token) in _svg_parser_comment() argument
159 while(state->cur <= state->end) { in _svg_parser_comment()
160 char ch = *(state->cur); in _svg_parser_comment()
161 if(ch == '>' && (*(state->cur - 1)) == '-' && (*(state->cur - 2)) == '-') { in _svg_parser_comment()
162 _clear_state(state, SVG_COMMENT); in _svg_parser_comment()
163 state->cur++; in _svg_parser_comment()
166 state->cur++; in _svg_parser_comment()
170 static void _svg_parser_doctype(_lv_svg_parser_state_t * state, _lv_svg_token_t * token) in _svg_parser_doctype() argument
175 while(state->cur <= state->end) { in _svg_parser_doctype()
176 char ch = *(state->cur); in _svg_parser_doctype()
178 _clear_state(state, SVG_DOCTYPE); in _svg_parser_doctype()
179 state->cur++; in _svg_parser_doctype()
182 state->cur++; in _svg_parser_doctype()
186 static bool _svg_parser_tag(_lv_svg_parser_state_t * state, _lv_svg_token_t * token, svg_token_proc… in _svg_parser_tag() argument
188 while(state->cur <= state->end) { in _svg_parser_tag()
189 switch(state->flags & SVG_TAG_MASK) { in _svg_parser_tag()
194 state->cur++; in _svg_parser_tag()
198 char ch = *(state->cur); in _svg_parser_tag()
201 state->cur++; in _svg_parser_tag()
203 token->start = state->cur; in _svg_parser_tag()
208 token->end = state->cur; in _svg_parser_tag()
209 _set_tag_state(state, SVG_ATTR_START); in _svg_parser_tag()
215 token->start = state->cur; in _svg_parser_tag()
217 state->cur++; in _svg_parser_tag()
223 char ch = *(state->cur); in _svg_parser_tag()
227 state->cur++; in _svg_parser_tag()
231 _set_tag_state(state, SVG_NO_TAG); in _svg_parser_tag()
235 _set_tag_state(state, SVG_ATTR_NAME); in _svg_parser_tag()
245 char ch = *(state->cur); in _svg_parser_tag()
247 token->cur_attr->name_end = state->cur; in _svg_parser_tag()
248 _set_tag_state(state, SVG_SEARCH_EQUAL); in _svg_parser_tag()
253 token->cur_attr->name_start = state->cur; in _svg_parser_tag()
255 state->cur++; in _svg_parser_tag()
261 char ch = *(state->cur); in _svg_parser_tag()
264 _set_tag_state(state, SVG_SEARCH_VALUE); in _svg_parser_tag()
269 _set_tag_state(state, SVG_ATTR_START); in _svg_parser_tag()
276 char ch = *(state->cur); in _svg_parser_tag()
280 _set_quote_state(state, SVG_SINGLE_QUOTE); in _svg_parser_tag()
283 _set_quote_state(state, SVG_DOUBLE_QUOTE); in _svg_parser_tag()
285 _set_tag_state(state, SVG_QUOTE_VALUE); in _svg_parser_tag()
288 _set_tag_state(state, SVG_VALUE); in _svg_parser_tag()
295 char ch = *(state->cur); in _svg_parser_tag()
296 if((ch == '\'' && ((state->flags & SVG_QUOTE_MASK) >> 3) == SVG_SINGLE_QUOTE) in _svg_parser_tag()
297 … || (ch == '\"' && ((state->flags & SVG_QUOTE_MASK) >> 3) == SVG_DOUBLE_QUOTE)) { in _svg_parser_tag()
299 token->cur_attr->value_start = state->cur; in _svg_parser_tag()
301 token->cur_attr->value_end = state->cur; in _svg_parser_tag()
302 _set_quote_state(state, SVG_NO_QUOTE); in _svg_parser_tag()
303 _set_tag_state(state, SVG_ATTR_START); in _svg_parser_tag()
308 token->cur_attr->value_start = state->cur; in _svg_parser_tag()
310 state->cur++; in _svg_parser_tag()
316 char ch = *(state->cur); in _svg_parser_tag()
319 token->cur_attr->value_start = state->cur; in _svg_parser_tag()
321 token->cur_attr->value_end = state->cur; in _svg_parser_tag()
322 _set_quote_state(state, SVG_NO_QUOTE); in _svg_parser_tag()
323 _set_tag_state(state, SVG_ATTR_START); in _svg_parser_tag()
328 token->cur_attr->value_start = state->cur; in _svg_parser_tag()
330 state->cur++; in _svg_parser_tag()
336 state->cur++; in _svg_parser_tag()
362 _lv_svg_parser_state_t state = { in _lv_svg_tokenizer() local
368 while(state.cur <= state.end) { in _lv_svg_tokenizer()
369 char ch = *(state.cur); in _lv_svg_tokenizer()
371 state.cur++; in _lv_svg_tokenizer()
374 else if(_special_handle(&state)) { in _lv_svg_tokenizer()
375 if(_is_state(&state, SVG_TAG)) { in _lv_svg_tokenizer()
376 _clear_state(&state, SVG_TAG); in _lv_svg_tokenizer()
379 _set_tag_state(&state, SVG_TAG_NAME); in _lv_svg_tokenizer()
383 _set_state(&state, SVG_SEARCH); // get more character in _lv_svg_tokenizer()
384 state.cur++; in _lv_svg_tokenizer()
389 _set_state(&state, SVG_XMLINST); in _lv_svg_tokenizer()
390 state.cur++; in _lv_svg_tokenizer()
395 _set_tag_state(&state, SVG_TAG_NAME); in _lv_svg_tokenizer()
411 else if(_is_state(&state, SVG_SEARCH)) { in _lv_svg_tokenizer()
414 token.start = state.cur; in _lv_svg_tokenizer()
416 token.end = state.cur; in _lv_svg_tokenizer()
420 _clear_state(&state, SVG_SEARCH); in _lv_svg_tokenizer()
421 _set_tag_state(&state, SVG_TAG_NAME); in _lv_svg_tokenizer()
427 _clear_state(&state, SVG_SEARCH); in _lv_svg_tokenizer()
429 _set_state(&state, SVG_COMMENT); in _lv_svg_tokenizer()
432 _clear_state(&state, SVG_SEARCH); in _lv_svg_tokenizer()
434 _set_state(&state, SVG_DOCTYPE); in _lv_svg_tokenizer()
436 state.cur++; in _lv_svg_tokenizer()
438 else if(_is_state(&state, SVG_COMMENT)) { in _lv_svg_tokenizer()
439 _svg_parser_comment(&state, &token); in _lv_svg_tokenizer()
441 else if(_is_state(&state, SVG_DOCTYPE)) { in _lv_svg_tokenizer()
442 _svg_parser_doctype(&state, &token); in _lv_svg_tokenizer()
444 else if(_is_state(&state, SVG_TAG_MASK)) { in _lv_svg_tokenizer()
445 if(!_svg_parser_tag(&state, &token, cb, data)) { in _lv_svg_tokenizer()
451 else if(_is_state(&state, SVG_XMLINST)) { in _lv_svg_tokenizer()
452 _svg_parser_xml_inst(&state, &token); in _lv_svg_tokenizer()
458 _set_state(&state, SVG_TAG); // start a new tag in _lv_svg_tokenizer()
459 state.cur++; in _lv_svg_tokenizer()
464 token.start = state.cur; in _lv_svg_tokenizer()
466 if(state.cur == state.end) { in _lv_svg_tokenizer()
469 token.end = ++state.cur; in _lv_svg_tokenizer()