File Coverage

third_party/modest/source/mycss/property/parser.c
Criterion Covered Total %
statement 0 1604 0.0
branch 0 620 0.0
condition n/a
subroutine n/a
pod n/a
total 0 2224 0.0


line stmt bran cond sub pod time code
1             /*
2             Copyright (C) 2016-2017 Alexander Borisov
3            
4             This library is free software; you can redistribute it and/or
5             modify it under the terms of the GNU Lesser General Public
6             License as published by the Free Software Foundation; either
7             version 2.1 of the License, or (at your option) any later version.
8            
9             This library is distributed in the hope that it will be useful,
10             but WITHOUT ANY WARRANTY; without even the implied warranty of
11             MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12             Lesser General Public License for more details.
13            
14             You should have received a copy of the GNU Lesser General Public
15             License along with this library; if not, write to the Free Software
16             Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17            
18             Author: lex.borisov@gmail.com (Alexander Borisov)
19             */
20              
21             #include "mycss/property/parser.h"
22              
23 0           bool mycss_property_parser_destroy_string(mycore_string_t* str, bool return_value)
24             {
25 0           mycss_property_shared_destroy_string(str);
26 0           return return_value;
27             }
28              
29 0           bool mycss_property_parser_switcher_to_find_important(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
30             {
31 0           entry->parser = mycss_declaration_state_colon_before_important;
32 0           return true;
33             }
34              
35             /////////////////////////////////////////////////////////
36             //// CSS Property
37             ////
38             /////////////////////////////////////////////////////////
39 0           bool mycss_property_parser_undef(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
40             {
41 0           return mycss_property_shared_switch_to_parse_error(entry);
42             }
43              
44             /* width height */
45 0           bool mycss_property_parser_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
46             {
47 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
48 0           return true;
49            
50 0           mycore_string_t str = {0};
51 0           mycss_declaration_entry_t* declr_entry = entry->declaration->entry_last;
52            
53 0 0         if(mycss_property_shared_width(entry, token, &declr_entry->value, &declr_entry->value_type, &str)) {
54 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
55             }
56            
57 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
58             }
59              
60 0           bool mycss_property_parser_height(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
61             {
62 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
63 0           return true;
64            
65 0           mycore_string_t str = {0};
66 0           mycss_declaration_entry_t* declr_entry = entry->declaration->entry_last;
67            
68 0 0         if(mycss_property_shared_height(entry, token, &declr_entry->value, &declr_entry->value_type, &str))
69 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
70            
71 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
72             }
73              
74 0           bool mycss_property_parser_max_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
75             {
76 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
77 0           return true;
78            
79 0           mycore_string_t str = {0};
80 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
81            
82 0 0         if(mycss_property_shared_length_percentage(entry, token, &dec_entry->value, &dec_entry->value_type, &str))
83 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
84            
85 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
86 0           return mycss_property_shared_switch_to_parse_error(entry);
87            
88 0 0         if(str.data == NULL)
89 0           mycss_token_data_to_string(entry, token, &str, true, false);
90            
91 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
92            
93 0 0         switch (dec_entry->value_type) {
94             case MyCSS_PROPERTY_MAX_WIDTH_NONE:
95             /* default values */
96             case MyCSS_PROPERTY_VALUE_INHERIT:
97             case MyCSS_PROPERTY_VALUE_INITIAL:
98             case MyCSS_PROPERTY_VALUE_UNSET:
99 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
100            
101             default:
102 0           dec_entry->value_type = MyCSS_PROPERTY_VALUE_UNDEF;
103 0           break;
104             }
105            
106 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
107             }
108              
109 0           bool mycss_property_parser_max_height(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
110             {
111 0           return mycss_property_parser_max_width(entry, token, last_response);
112             }
113              
114 0           bool mycss_property_parser_min_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
115             {
116 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
117 0           return true;
118            
119 0           mycore_string_t str = {0};
120 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
121            
122 0           if(mycss_property_shared_length_percentage(entry, token, &dec_entry->value, &dec_entry->value_type, &str) ||
123 0           mycss_property_shared_default(entry, token, &dec_entry->value_type, &str))
124             {
125 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
126             }
127            
128 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
129             }
130              
131 0           bool mycss_property_parser_min_height(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
132             {
133 0           return mycss_property_parser_min_width(entry, token, last_response);
134             }
135              
136             /* padding */
137 0           mycss_declaration_entry_t * mycss_property_parser_padding_shared(mycss_entry_t* entry, mycss_token_t* token, mycore_string_t* str)
138             {
139 0           void *value = NULL;
140 0           unsigned int value_type = 0;
141            
142 0           if(mycss_property_shared_length_percentage(entry, token, &value, &value_type, str) ||
143 0           mycss_property_shared_default(entry, token, &value_type, str))
144             {
145 0           mycss_declaration_entry_t* decl = mycss_declaration_entry_create(entry->declaration, NULL);
146            
147 0           decl->value = value;
148 0           decl->value_type = value_type;
149            
150 0           return decl;
151             }
152            
153 0           return NULL;
154             }
155              
156 0           bool mycss_property_parser_padding(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
157             {
158 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
159 0           return true;
160            
161 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
162            
163 0 0         if(dec_entry->value == NULL)
164 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_shorthand_four_t));
165            
166 0           mycss_values_shorthand_four_t *value = dec_entry->value;
167            
168 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
169             {
170 0 0         if(value->one == NULL)
171 0           return mycss_property_shared_switch_to_parse_error(entry);
172            
173 0           return true;
174             }
175            
176 0           mycore_string_t str = {0};
177            
178 0 0         if(value->one == NULL)
179             {
180 0 0         if((value->one = mycss_property_parser_padding_shared(entry, token, &str))) {
181 0           value->one->type = MyCSS_PROPERTY_TYPE_PADDING_TOP;
182 0           return mycss_property_parser_destroy_string(&str, true);
183             }
184             }
185 0 0         else if(value->two == NULL)
186             {
187 0 0         if((value->two = mycss_property_parser_padding_shared(entry, token, &str))) {
188 0           value->two->type = MyCSS_PROPERTY_TYPE_PADDING_RIGHT;
189 0           return mycss_property_parser_destroy_string(&str, true);
190             }
191             }
192 0 0         else if(value->three == NULL)
193             {
194 0 0         if((value->three = mycss_property_parser_padding_shared(entry, token, &str))) {
195 0           value->three->type = MyCSS_PROPERTY_TYPE_PADDING_BOTTOM;
196 0           return mycss_property_parser_destroy_string(&str, true);
197             }
198             }
199 0 0         else if(value->four == NULL)
200             {
201 0 0         if((value->four = mycss_property_parser_padding_shared(entry, token, &str))) {
202 0           value->four->type = MyCSS_PROPERTY_TYPE_PADDING_LEFT;
203 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
204             }
205             }
206            
207 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
208             }
209              
210 0           bool mycss_property_parser_padding_X(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
211             {
212 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
213 0           return true;
214            
215 0           mycore_string_t str = {0};
216 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
217            
218 0           if(mycss_property_shared_length_percentage(entry, token, &dec_entry->value, &dec_entry->value_type, &str) ||
219 0           mycss_property_shared_default(entry, token, &dec_entry->value_type, &str))
220             {
221 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
222             }
223            
224 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
225             }
226              
227 0           bool mycss_property_parser_padding_bottom(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
228             {
229 0           return mycss_property_parser_padding_X(entry, token, last_response);
230             }
231              
232 0           bool mycss_property_parser_padding_left(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
233             {
234 0           return mycss_property_parser_padding_X(entry, token, last_response);
235             }
236              
237 0           bool mycss_property_parser_padding_right(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
238             {
239 0           return mycss_property_parser_padding_X(entry, token, last_response);
240             }
241              
242 0           bool mycss_property_parser_padding_top(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
243             {
244 0           return mycss_property_parser_padding_X(entry, token, last_response);
245             }
246              
247             /* padding logical */
248 0           bool mycss_property_parser_padding_block_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
249             {
250 0           return mycss_property_parser_padding_X(entry, token, last_response);
251             }
252              
253 0           bool mycss_property_parser_padding_block_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
254             {
255 0           return mycss_property_parser_padding_X(entry, token, last_response);
256             }
257              
258 0           bool mycss_property_parser_padding_inline_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
259             {
260 0           return mycss_property_parser_padding_X(entry, token, last_response);
261             }
262              
263 0           bool mycss_property_parser_padding_inline_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
264             {
265 0           return mycss_property_parser_padding_X(entry, token, last_response);
266             }
267              
268             /* margin */
269 0           mycss_declaration_entry_t * mycss_property_parser_margin_shared(mycss_entry_t* entry, mycss_token_t* token, mycore_string_t* str)
270             {
271 0           void *value = NULL;
272 0           unsigned int value_type = 0;
273            
274 0           if(mycss_property_shared_length_percentage(entry, token, &value, &value_type, str) ||
275 0 0         mycss_property_shared_default(entry, token, &value_type, str) ||
276 0           mycss_property_shared_by_value_type(entry, token, &value_type, MyCSS_PROPERTY_MARGIN_AUTO, str))
277             {
278 0           mycss_declaration_entry_t* decl = mycss_declaration_entry_create(entry->declaration, NULL);
279            
280 0           decl->value = value;
281 0           decl->value_type = value_type;
282            
283 0           return decl;
284             }
285            
286 0           return NULL;
287             }
288              
289 0           bool mycss_property_parser_margin(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
290             {
291 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
292 0           return true;
293            
294 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
295            
296 0 0         if(dec_entry->value == NULL)
297 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_shorthand_four_t));
298            
299 0           mycss_values_shorthand_four_t *value = dec_entry->value;
300            
301 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
302             {
303 0 0         if(value->one == NULL)
304 0           return mycss_property_shared_switch_to_parse_error(entry);
305            
306 0           return true;
307             }
308            
309 0           mycore_string_t str = {0};
310            
311 0 0         if(value->one == NULL)
312             {
313 0 0         if((value->one = mycss_property_parser_margin_shared(entry, token, &str))) {
314 0           value->one->type = MyCSS_PROPERTY_TYPE_MARGIN_TOP;
315 0           return mycss_property_parser_destroy_string(&str, true);
316             }
317             }
318 0 0         else if(value->two == NULL)
319             {
320 0 0         if((value->two = mycss_property_parser_margin_shared(entry, token, &str))) {
321 0           value->two->type = MyCSS_PROPERTY_TYPE_MARGIN_RIGHT;
322 0           return mycss_property_parser_destroy_string(&str, true);
323             }
324             }
325 0 0         else if(value->three == NULL)
326             {
327 0 0         if((value->three = mycss_property_parser_margin_shared(entry, token, &str))) {
328 0           value->three->type = MyCSS_PROPERTY_TYPE_MARGIN_BOTTOM;
329 0           return mycss_property_parser_destroy_string(&str, true);
330             }
331             }
332 0 0         else if(value->four == NULL)
333             {
334 0 0         if((value->four = mycss_property_parser_margin_shared(entry, token, &str))) {
335 0           value->four->type = MyCSS_PROPERTY_TYPE_MARGIN_LEFT;
336 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
337             }
338             }
339            
340 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
341             }
342              
343 0           bool mycss_property_parser_margin_X(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
344             {
345 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
346 0           return true;
347            
348 0           mycore_string_t str = {0};
349 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
350            
351 0           if(mycss_property_shared_length(entry, token, &dec_entry->value, &dec_entry->value_type, &str) ||
352 0 0         mycss_property_shared_default(entry, token, &dec_entry->value_type, &str) ||
353 0           mycss_property_shared_by_value_type(entry, token, &dec_entry->value_type, MyCSS_PROPERTY_MARGIN_AUTO, &str))
354             {
355 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
356             }
357            
358 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
359             }
360              
361 0           bool mycss_property_parser_margin_bottom(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
362             {
363 0           return mycss_property_parser_margin_X(entry, token, last_response);
364             }
365              
366 0           bool mycss_property_parser_margin_left(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
367             {
368 0           return mycss_property_parser_margin_X(entry, token, last_response);
369             }
370              
371 0           bool mycss_property_parser_margin_right(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
372             {
373 0           return mycss_property_parser_margin_X(entry, token, last_response);
374             }
375              
376 0           bool mycss_property_parser_margin_top(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
377             {
378 0           return mycss_property_parser_margin_X(entry, token, last_response);
379             }
380              
381             /* margin logical */
382 0           bool mycss_property_parser_margin_block_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
383             {
384 0           return mycss_property_parser_margin_X(entry, token, last_response);
385             }
386              
387 0           bool mycss_property_parser_margin_block_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
388             {
389 0           return mycss_property_parser_margin_X(entry, token, last_response);
390             }
391              
392 0           bool mycss_property_parser_margin_inline_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
393             {
394 0           return mycss_property_parser_margin_X(entry, token, last_response);
395             }
396              
397 0           bool mycss_property_parser_margin_inline_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
398             {
399 0           return mycss_property_parser_margin_X(entry, token, last_response);
400             }
401              
402             /* display */
403 0           bool mycss_property_parser_display(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
404             {
405 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
406 0           return true;
407            
408 0           mycore_string_t str = {0};
409            
410 0 0         if(token->type == MyCSS_TOKEN_TYPE_IDENT)
411             {
412 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
413 0           mycss_token_data_to_string(entry, token, &str, true, false);
414            
415 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
416            
417 0 0         switch (dec_entry->value_type) {
418             case MyCSS_PROPERTY_DISPLAY_BLOCK:
419             case MyCSS_PROPERTY_DISPLAY_CONTENTS:
420             case MyCSS_PROPERTY_DISPLAY_FLEX:
421             case MyCSS_PROPERTY_DISPLAY_FLOW:
422             case MyCSS_PROPERTY_DISPLAY_FLOW_ROOT:
423             case MyCSS_PROPERTY_DISPLAY_GRID:
424             case MyCSS_PROPERTY_DISPLAY_INLINE:
425             case MyCSS_PROPERTY_DISPLAY_INLINE_BLOCK:
426             case MyCSS_PROPERTY_DISPLAY_INLINE_FLEX:
427             case MyCSS_PROPERTY_DISPLAY_INLINE_GRID:
428             case MyCSS_PROPERTY_DISPLAY_INLINE_LIST_ITEM:
429             case MyCSS_PROPERTY_DISPLAY_INLINE_TABLE:
430             case MyCSS_PROPERTY_DISPLAY_LIST_ITEM:
431             case MyCSS_PROPERTY_DISPLAY_NONE:
432             case MyCSS_PROPERTY_DISPLAY_RUBY:
433             case MyCSS_PROPERTY_DISPLAY_RUBY_BASE:
434             case MyCSS_PROPERTY_DISPLAY_RUBY_BASE_CONTAINER:
435             case MyCSS_PROPERTY_DISPLAY_RUBY_TEXT:
436             case MyCSS_PROPERTY_DISPLAY_RUBY_TEXT_CONTAINER:
437             case MyCSS_PROPERTY_DISPLAY_RUN_IN:
438             case MyCSS_PROPERTY_DISPLAY_TABLE:
439             case MyCSS_PROPERTY_DISPLAY_TABLE_CAPTION:
440             case MyCSS_PROPERTY_DISPLAY_TABLE_CELL:
441             case MyCSS_PROPERTY_DISPLAY_TABLE_COLUMN:
442             case MyCSS_PROPERTY_DISPLAY_TABLE_COLUMN_GROUP:
443             case MyCSS_PROPERTY_DISPLAY_TABLE_FOOTER_GROUP:
444             case MyCSS_PROPERTY_DISPLAY_TABLE_HEADER_GROUP:
445             case MyCSS_PROPERTY_DISPLAY_TABLE_ROW:
446             case MyCSS_PROPERTY_DISPLAY_TABLE_ROW_GROUP:
447 0           break;
448            
449             default:
450 0 0         if(mycss_property_shared_default(entry, token, &dec_entry->value_type, &str) == false) {
451 0           dec_entry->value_type = MyCSS_PROPERTY_TYPE_UNDEF;
452 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
453             }
454 0           break;
455             }
456             }
457            
458 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
459             }
460              
461             /* border */
462 0           mycss_declaration_entry_t * mycss_property_parser_border_width_shared(mycss_entry_t* entry, mycss_token_t* token, mycore_string_t* str)
463             {
464 0           void *value = NULL;
465 0           unsigned int value_type = 0;
466            
467 0 0         if(mycss_property_shared_line_width(entry, token, &value, &value_type, str))
468             {
469 0           mycss_declaration_entry_t* decl = mycss_declaration_entry_create(entry->declaration, NULL);
470            
471 0           decl->value = value;
472 0           decl->value_type = value_type;
473            
474 0           return decl;
475             }
476            
477 0           return NULL;
478             }
479              
480 0           static mycss_declaration_entry_t * mycss_property_parser_border_color_shared(mycss_entry_t* entry, mycss_token_t* token,
481             mycore_string_t* str, mycss_parser_token_f return_parser,
482             unsigned int type)
483             {
484 0           void *value = NULL;
485 0           unsigned int value_type = 0;
486 0           bool parser_changed = false;
487            
488 0 0         if(mycss_property_shared_color(entry, token, &value, &value_type, str, &parser_changed))
489             {
490 0           mycss_declaration_entry_t* step_dec_entry = mycss_declaration_entry_create(entry->declaration, NULL);
491            
492 0           step_dec_entry->type = type;
493 0           step_dec_entry->value = value;
494 0           step_dec_entry->value_type = value_type;
495            
496 0 0         if(parser_changed) {
497 0           mycss_stack_push(entry->declaration->stack, entry->declaration->entry_last->value, return_parser);
498 0           entry->declaration->entry_last->value = step_dec_entry->value;
499             }
500            
501 0           return step_dec_entry;
502             }
503            
504 0           return NULL;
505             }
506              
507 0           mycss_declaration_entry_t * mycss_property_parser_border_style_shared(mycss_entry_t* entry, mycss_token_t* token, mycore_string_t* str)
508             {
509 0           unsigned int value_type = 0;
510            
511 0 0         if(mycss_property_shared_line_style(entry, token, &value_type, str))
512             {
513 0           mycss_declaration_entry_t* decl = mycss_declaration_entry_create(entry->declaration, NULL);
514 0           decl->value_type = value_type;
515            
516 0           return decl;
517             }
518            
519 0           return NULL;
520             }
521              
522 0           bool mycss_property_parser_border_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
523             {
524 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
525 0           return true;
526            
527 0 0         if(mycss_property_shared_check_declaration_end(entry, token)) {
528 0           return true;
529             }
530            
531 0           entry->parser = mycss_property_parser_border_top;
532 0           return false;
533             }
534              
535 0           bool mycss_property_parser_border(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
536             {
537 0           return mycss_property_parser_border_top(entry, token, last_response);
538             }
539              
540 0           bool mycss_property_parser_border_top(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
541             {
542 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
543 0           return true;
544            
545 0           mycore_string_t str = {0};
546 0           unsigned int value_type = 0;
547 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
548            
549 0 0         if(mycss_property_shared_default(entry, token, &value_type, &str))
550             {
551 0 0         if(dec_entry->value == NULL) {
552 0           dec_entry->value_type = value_type;
553 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
554             }
555             }
556            
557 0 0         if(dec_entry->value == NULL)
558 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_border_t));
559            
560             mycss_declaration_entry_t* shared_declr;
561 0           mycss_values_border_t *border = dec_entry->value;
562            
563 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
564             {
565 0 0         if(border == NULL || (border->style == NULL && border->width == NULL && border->color == NULL))
    0          
    0          
    0          
566 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
567            
568 0           return mycss_property_parser_destroy_string(&str, true);
569             }
570            
571 0 0         if((shared_declr = mycss_property_parser_border_width_shared(entry, token, &str))) {
572 0 0         if(border->width)
573 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
574            
575 0           border->width = shared_declr;
576 0           border->width->type = MyCSS_PROPERTY_TYPE_BORDER_TOP_WIDTH;
577            
578 0           return mycss_property_parser_destroy_string(&str, true);
579             }
580            
581 0 0         if((shared_declr = mycss_property_parser_border_style_shared(entry, token, &str))) {
582 0 0         if(border->style)
583 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
584            
585 0           border->style = shared_declr;
586 0           border->style->type = MyCSS_PROPERTY_TYPE_BORDER_TOP_STYLE;
587            
588 0           return mycss_property_parser_destroy_string(&str, true);
589             }
590            
591 0 0         if(border->color == NULL) {
592 0 0         if((shared_declr = mycss_property_parser_border_color_shared(entry, token, &str,
593             mycss_property_parser_border_after,
594             MyCSS_PROPERTY_TYPE_BORDER_TOP_COLOR)))
595             {
596 0           border->color = shared_declr;
597 0           return mycss_property_parser_destroy_string(&str, true);
598             }
599             }
600            
601 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
602             }
603              
604 0           bool mycss_property_parser_border_right(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
605             {
606 0           return mycss_property_parser_border_top(entry, token, last_response);
607             }
608              
609 0           bool mycss_property_parser_border_bottom(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
610             {
611 0           return mycss_property_parser_border_top(entry, token, last_response);
612             }
613              
614 0           bool mycss_property_parser_border_left(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
615             {
616 0           return mycss_property_parser_border_top(entry, token, last_response);
617             }
618              
619             /* border logical */
620 0           bool mycss_property_parser_border_block_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
621             {
622 0           return mycss_property_parser_border(entry, token, last_response);
623             }
624              
625 0           bool mycss_property_parser_border_block_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
626             {
627 0           return mycss_property_parser_border(entry, token, last_response);
628             }
629              
630 0           bool mycss_property_parser_border_inline_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
631             {
632 0           return mycss_property_parser_border(entry, token, last_response);
633             }
634              
635 0           bool mycss_property_parser_border_inline_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
636             {
637 0           return mycss_property_parser_border(entry, token, last_response);
638             }
639              
640             /* border width */
641 0           bool mycss_property_parser_border_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
642             {
643 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
644 0           return true;
645            
646 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
647            
648 0 0         if(dec_entry->value == NULL)
649 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_shorthand_four_t));
650            
651 0           mycss_values_shorthand_four_t *value = dec_entry->value;
652            
653 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
654             {
655 0 0         if(value->one == NULL)
656 0           return mycss_property_shared_switch_to_parse_error(entry);
657            
658 0           return true;
659             }
660            
661 0           mycore_string_t str = {0};
662            
663 0 0         if(value->one == NULL)
664             {
665 0 0         if((value->one = mycss_property_parser_border_width_shared(entry, token, &str))) {
666 0           value->one->type = MyCSS_PROPERTY_TYPE_BORDER_TOP_WIDTH;
667 0           return mycss_property_parser_destroy_string(&str, true);
668             }
669             }
670 0 0         else if(value->two == NULL)
671             {
672 0 0         if((value->two = mycss_property_parser_border_width_shared(entry, token, &str))) {
673 0           value->two->type = MyCSS_PROPERTY_TYPE_BORDER_RIGHT_WIDTH;
674 0           return mycss_property_parser_destroy_string(&str, true);
675             }
676             }
677 0 0         else if(value->three == NULL)
678             {
679 0 0         if((value->three = mycss_property_parser_border_width_shared(entry, token, &str))) {
680 0           value->three->type = MyCSS_PROPERTY_TYPE_BORDER_BOTTOM_WIDTH;
681 0           return mycss_property_parser_destroy_string(&str, true);
682             }
683             }
684 0 0         else if(value->four == NULL)
685             {
686 0 0         if((value->four = mycss_property_parser_border_width_shared(entry, token, &str))) {
687 0           value->four->type = MyCSS_PROPERTY_TYPE_BORDER_LEFT_WIDTH;
688 0           return mycss_property_parser_destroy_string(&str, true);
689             }
690             }
691            
692 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
693             }
694              
695 0           bool mycss_property_parser_border_top_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
696             {
697 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
698 0           return true;
699            
700 0           mycore_string_t str = {0};
701 0           mycss_declaration_entry_t* declr_entry = entry->declaration->entry_last;
702            
703 0 0         if(mycss_property_shared_line_width(entry, token, &declr_entry->value, &declr_entry->value_type, &str)) {
704 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
705             }
706            
707 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
708             }
709              
710 0           bool mycss_property_parser_border_right_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
711             {
712 0           return mycss_property_parser_border_top_width(entry, token, last_response);
713             }
714              
715 0           bool mycss_property_parser_border_bottom_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
716             {
717 0           return mycss_property_parser_border_top_width(entry, token, last_response);
718             }
719              
720 0           bool mycss_property_parser_border_left_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
721             {
722 0           return mycss_property_parser_border_top_width(entry, token, last_response);
723             }
724              
725             /* border width logical */
726 0           bool mycss_property_parser_border_block_start_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
727             {
728 0           return mycss_property_parser_border_width(entry, token, last_response);
729             }
730              
731 0           bool mycss_property_parser_border_block_end_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
732             {
733 0           return mycss_property_parser_border_width(entry, token, last_response);
734             }
735              
736 0           bool mycss_property_parser_border_inline_start_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
737             {
738 0           return mycss_property_parser_border_width(entry, token, last_response);
739             }
740              
741 0           bool mycss_property_parser_border_inline_end_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
742             {
743 0           return mycss_property_parser_border_width(entry, token, last_response);
744             }
745              
746             /* border style */
747 0           bool mycss_property_parser_border_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
748             {
749 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
750 0           return true;
751            
752 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
753            
754 0 0         if(dec_entry->value == NULL)
755 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_shorthand_four_t));
756            
757 0           mycss_values_shorthand_four_t *value = dec_entry->value;
758            
759 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
760             {
761 0 0         if(value->one == NULL)
762 0           return mycss_property_shared_switch_to_parse_error(entry);
763            
764 0           return true;
765             }
766            
767 0           mycore_string_t str = {0};
768            
769 0 0         if(value->one == NULL)
770             {
771 0 0         if((value->one = mycss_property_parser_border_style_shared(entry, token, &str))) {
772 0           value->one->type = MyCSS_PROPERTY_TYPE_BORDER_TOP_STYLE;
773 0           return mycss_property_parser_destroy_string(&str, true);
774             }
775             }
776 0 0         else if(value->two == NULL)
777             {
778 0 0         if((value->two = mycss_property_parser_border_style_shared(entry, token, &str))) {
779 0           value->two->type = MyCSS_PROPERTY_TYPE_BORDER_RIGHT_STYLE;
780 0           return mycss_property_parser_destroy_string(&str, true);
781             }
782             }
783 0 0         else if(value->three == NULL)
784             {
785 0 0         if((value->three = mycss_property_parser_border_style_shared(entry, token, &str))) {
786 0           value->three->type = MyCSS_PROPERTY_TYPE_BORDER_BOTTOM_STYLE;
787 0           return mycss_property_parser_destroy_string(&str, true);
788             }
789             }
790 0 0         else if(value->four == NULL)
791             {
792 0 0         if((value->four = mycss_property_parser_border_style_shared(entry, token, &str))) {
793 0           value->four->type = MyCSS_PROPERTY_TYPE_BORDER_LEFT_STYLE;
794 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
795             }
796             }
797            
798 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
799             }
800              
801 0           bool mycss_property_parser_border_top_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
802             {
803 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
804 0           return true;
805            
806 0           mycore_string_t str = {0};
807 0           mycss_declaration_entry_t* declr_entry = entry->declaration->entry_last;
808            
809 0 0         if(mycss_property_shared_line_style(entry, token, &declr_entry->value_type, &str)) {
810 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
811             }
812            
813 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
814             }
815              
816 0           bool mycss_property_parser_border_right_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
817             {
818 0           return mycss_property_parser_border_top_style(entry, token, last_response);
819             }
820              
821 0           bool mycss_property_parser_border_bottom_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
822             {
823 0           return mycss_property_parser_border_top_style(entry, token, last_response);
824             }
825              
826 0           bool mycss_property_parser_border_left_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
827             {
828 0           return mycss_property_parser_border_top_style(entry, token, last_response);
829             }
830              
831             /* border style logical */
832 0           bool mycss_property_parser_border_block_start_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
833             {
834 0           return mycss_property_parser_border_style(entry, token, last_response);
835             }
836              
837 0           bool mycss_property_parser_border_block_end_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
838             {
839 0           return mycss_property_parser_border_style(entry, token, last_response);
840             }
841              
842 0           bool mycss_property_parser_border_inline_start_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
843             {
844 0           return mycss_property_parser_border_style(entry, token, last_response);
845             }
846              
847 0           bool mycss_property_parser_border_inline_end_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
848             {
849 0           return mycss_property_parser_border_style(entry, token, last_response);
850             }
851              
852             /* border radius */
853 0           static mycss_declaration_entry_t * mycss_property_parser_border_radius_shared(mycss_entry_t* entry, mycss_token_t* token, mycore_string_t* str, bool is_first)
854             {
855 0           void *value = NULL;
856 0           unsigned int value_type = 0;
857            
858 0 0         if(mycss_property_shared_length_percentage(entry, token, &value, &value_type, str))
859             {
860 0           mycss_declaration_entry_t* decl = mycss_declaration_entry_create(entry->declaration, NULL);
861            
862 0           mycss_values_shorthand_two_type_t *short_two_type = mycss_values_create(entry, sizeof(mycss_values_shorthand_two_type_t));
863            
864 0 0         if(is_first) {
865 0           short_two_type->one = value;
866 0           short_two_type->type_one = value_type;
867             }
868             else {
869 0           short_two_type->two = value;
870 0           short_two_type->type_two = value_type;
871             }
872            
873 0           decl->value = short_two_type;
874 0           return decl;
875             }
876            
877 0           return NULL;
878             }
879              
880 0           static bool mycss_property_parser_border_radius_two_shared(mycss_entry_t* entry, mycss_token_t* token,
881             mycss_values_shorthand_two_type_t *short_two_type, mycore_string_t* str)
882             {
883 0 0         if(mycss_property_shared_length_percentage(entry, token, &short_two_type->two, &short_two_type->type_two, str)) {
884 0           return true;
885             }
886            
887 0           return false;
888             }
889              
890 0           bool mycss_property_parser_border_radius_two(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
891             {
892 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
893 0           return true;
894            
895 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
896 0           mycss_values_shorthand_four_t *value = dec_entry->value;
897            
898 0 0         if(mycss_property_shared_check_declaration_end(entry, token)) {
899 0           return true;
900             }
901            
902 0           mycore_string_t str = {0};
903            
904 0 0         if(((mycss_values_shorthand_two_type_t*)(value->one->value))->two == NULL)
905             {
906 0 0         if(mycss_property_parser_border_radius_two_shared(entry, token, value->one->value, &str))
907 0           return mycss_property_parser_destroy_string(&str, true);
908             }
909 0 0         else if(value->two == NULL)
910             {
911 0 0         if((value->two = mycss_property_parser_border_radius_shared(entry, token, &str, false))) {
912 0           value->two->type = MyCSS_PROPERTY_TYPE_BORDER_TOP_RIGHT_RADIUS;
913 0           return mycss_property_parser_destroy_string(&str, true);
914             }
915             }
916 0 0         else if(((mycss_values_shorthand_two_type_t*)(value->two->value))->two == NULL)
917             {
918 0 0         if(mycss_property_parser_border_radius_two_shared(entry, token, value->two->value, &str))
919 0           return mycss_property_parser_destroy_string(&str, true);
920             }
921 0 0         else if(value->three == NULL)
922             {
923 0 0         if((value->three = mycss_property_parser_border_radius_shared(entry, token, &str, false))) {
924 0           value->three->type = MyCSS_PROPERTY_TYPE_BORDER_BOTTOM_RIGHT_RADIUS;
925 0           return mycss_property_parser_destroy_string(&str, true);
926             }
927             }
928 0 0         else if(((mycss_values_shorthand_two_type_t*)(value->three->value))->two == NULL)
929             {
930 0 0         if(mycss_property_parser_border_radius_two_shared(entry, token, value->three->value, &str))
931 0           return mycss_property_parser_destroy_string(&str, true);
932             }
933 0 0         else if(value->four == NULL)
934             {
935 0 0         if((value->four = mycss_property_parser_border_radius_shared(entry, token, &str, false))) {
936 0           value->four->type = MyCSS_PROPERTY_TYPE_BORDER_BOTTOM_LEFT_RADIUS;
937 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
938             }
939             }
940 0 0         else if(((mycss_values_shorthand_two_type_t*)(value->four->value))->two == NULL)
941             {
942 0 0         if(mycss_property_parser_border_radius_two_shared(entry, token, value->four->value, &str))
943 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
944             }
945            
946 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
947             }
948              
949 0           static bool mycss_property_parser_border_radius_wait_two(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
950             {
951 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
952 0           return true;
953            
954 0 0         if(mycss_property_shared_check_declaration_end(entry, token)) {
955 0           return true;
956             }
957            
958 0 0         if(token->type == MyCSS_TOKEN_TYPE_DELIM && *token->data == '/') {
    0          
959 0           entry->parser = mycss_property_parser_border_radius_two;
960 0           return true;
961             }
962            
963 0           return mycss_property_shared_switch_to_parse_error(entry);
964             }
965              
966 0           bool mycss_property_parser_border_radius(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
967             {
968 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
969 0           return true;
970            
971 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
972            
973 0 0         if(dec_entry->value == NULL)
974 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_shorthand_four_t));
975            
976 0           mycss_values_shorthand_four_t *value = dec_entry->value;
977            
978 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
979             {
980 0 0         if(value->one == NULL)
981 0           return mycss_property_shared_switch_to_parse_error(entry);
982            
983 0           return true;
984             }
985            
986 0           mycore_string_t str = {0};
987            
988 0 0         if(value->one == NULL)
989             {
990 0 0         if((value->one = mycss_property_parser_border_radius_shared(entry, token, &str, true))) {
991 0           value->one->type = MyCSS_PROPERTY_TYPE_BORDER_TOP_LEFT_RADIUS;
992 0           return mycss_property_parser_destroy_string(&str, true);
993             }
994            
995 0           unsigned int value_type = 0;
996            
997 0 0         if(mycss_property_shared_default(entry, token, &value_type, &str)) {
998 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
999             }
1000             }
1001 0 0         else if(value->two == NULL)
1002             {
1003 0 0         if((value->two = mycss_property_parser_border_radius_shared(entry, token, &str, true))) {
1004 0           value->two->type = MyCSS_PROPERTY_TYPE_BORDER_TOP_RIGHT_RADIUS;
1005 0           return mycss_property_parser_destroy_string(&str, true);
1006             }
1007             }
1008 0 0         else if(value->three == NULL)
1009             {
1010 0 0         if((value->three = mycss_property_parser_border_radius_shared(entry, token, &str, true))) {
1011 0           value->three->type = MyCSS_PROPERTY_TYPE_BORDER_BOTTOM_RIGHT_RADIUS;
1012 0           return mycss_property_parser_destroy_string(&str, true);
1013             }
1014             }
1015 0 0         else if(value->four == NULL)
1016             {
1017 0 0         if((value->four = mycss_property_parser_border_radius_shared(entry, token, &str, true))) {
1018 0           value->four->type = MyCSS_PROPERTY_TYPE_BORDER_BOTTOM_LEFT_RADIUS;
1019            
1020 0           entry->parser = mycss_property_parser_border_radius_wait_two;
1021 0           return mycss_property_parser_destroy_string(&str, true);
1022             }
1023             }
1024            
1025 0 0         if(token->type == MyCSS_TOKEN_TYPE_DELIM && *token->data == '/') {
    0          
1026 0 0         if(value->one == NULL)
1027 0           return mycss_property_shared_switch_to_parse_error(entry);
1028            
1029 0           entry->parser = mycss_property_parser_border_radius_two;
1030 0           return mycss_property_parser_destroy_string(&str, true);
1031             }
1032            
1033 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1034             }
1035              
1036 0           bool mycss_property_parser_short_two_type(mycss_entry_t* entry, mycss_token_t* token)
1037             {
1038 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1039 0           return true;
1040            
1041 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1042            
1043 0 0         if(dec_entry->value == NULL)
1044 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_shorthand_two_type_t));
1045            
1046 0           mycss_values_shorthand_two_type_t *short_two_type = dec_entry->value;
1047            
1048 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
1049             {
1050 0 0         if(short_two_type->one == NULL)
1051 0           return mycss_property_shared_switch_to_parse_error(entry);
1052            
1053 0           return true;
1054             }
1055            
1056 0           mycore_string_t str = {0};
1057            
1058 0 0         if(short_two_type->one == NULL)
1059             {
1060 0           if(mycss_property_shared_length_percentage(entry, token, &short_two_type->one, &short_two_type->type_one, &str) ||
1061 0           mycss_property_shared_default(entry, token, &short_two_type->type_one, &str))
1062             {
1063 0           return mycss_property_parser_destroy_string(&str, true);
1064             }
1065             }
1066 0 0         else if(short_two_type->two == NULL)
1067             {
1068 0           if(mycss_property_shared_length_percentage(entry, token, &short_two_type->two, &short_two_type->type_two, &str) ||
1069 0           mycss_property_shared_default(entry, token, &short_two_type->type_two, &str))
1070             {
1071 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1072             }
1073             }
1074            
1075 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1076             }
1077              
1078 0           bool mycss_property_parser_border_top_right_radius(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1079             {
1080 0           return mycss_property_parser_short_two_type(entry, token);
1081             }
1082              
1083 0           bool mycss_property_parser_border_top_left_radius(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1084             {
1085 0           return mycss_property_parser_border_top_right_radius(entry, token, last_response);
1086             }
1087              
1088 0           bool mycss_property_parser_border_bottom_right_radius(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1089             {
1090 0           return mycss_property_parser_border_top_right_radius(entry, token, last_response);
1091             }
1092              
1093 0           bool mycss_property_parser_border_bottom_left_radius(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1094             {
1095 0           return mycss_property_parser_border_top_right_radius(entry, token, last_response);
1096             }
1097              
1098             /* border color */
1099 0           bool mycss_property_parser_border_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1100             {
1101 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1102 0           return true;
1103            
1104 0           mycore_string_t str = {0};
1105            
1106 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1107 0           mycss_values_shorthand_four_t *value = dec_entry->value;
1108            
1109 0 0         if(value == NULL)
1110             {
1111 0           unsigned int value_type = 0;
1112 0 0         if(mycss_property_shared_default(entry, token, &value_type, &str))
1113             {
1114 0           dec_entry->value_type = value_type;
1115 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1116             }
1117            
1118             mycss_declaration_entry_t* shared_declr;
1119 0           dec_entry->value = value = mycss_values_create(entry, sizeof(mycss_values_shorthand_four_t));
1120            
1121 0 0         if((shared_declr = mycss_property_parser_border_color_shared(entry, token, &str, mycss_property_parser_border_color_after,
1122             MyCSS_PROPERTY_TYPE_BORDER_TOP_COLOR)))
1123             {
1124 0           value->one = shared_declr;
1125 0           return mycss_property_parser_destroy_string(&str, true);
1126             }
1127             }
1128 0 0         else if(value->two == NULL) {
1129 0 0         if((value->two = mycss_property_parser_border_color_shared(entry, token, &str, mycss_property_parser_border_color_after,
1130             MyCSS_PROPERTY_TYPE_BORDER_RIGHT_COLOR)))
1131             {
1132 0           return mycss_property_parser_destroy_string(&str, true);
1133             }
1134             }
1135 0 0         else if(value->three == NULL) {
1136 0 0         if((value->three = mycss_property_parser_border_color_shared(entry, token, &str, mycss_property_parser_border_color_after,
1137             MyCSS_PROPERTY_TYPE_BORDER_BOTTOM_COLOR)))
1138             {
1139 0           return mycss_property_parser_destroy_string(&str, true);
1140             }
1141             }
1142 0 0         else if(value->four == NULL) {
1143 0 0         if((value->four = mycss_property_parser_border_color_shared(entry, token, &str, mycss_property_parser_border_color_after,
1144             MyCSS_PROPERTY_TYPE_BORDER_LEFT_COLOR)))
1145             {
1146 0           return mycss_property_parser_destroy_string(&str, true);
1147             }
1148             }
1149            
1150 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1151             }
1152              
1153 0           bool mycss_property_parser_border_color_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1154             {
1155 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1156 0           return true;
1157            
1158 0 0         if(mycss_property_shared_check_declaration_end(entry, token)) {
1159 0           return true;
1160             }
1161            
1162 0           entry->parser = mycss_property_parser_border_color;
1163 0           return false;
1164             }
1165              
1166 0           bool mycss_property_parser_border_top_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1167             {
1168 0           return mycss_property_parser_color(entry, token, last_response);
1169             }
1170              
1171 0           bool mycss_property_parser_border_right_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1172             {
1173 0           return mycss_property_parser_color(entry, token, last_response);
1174             }
1175              
1176 0           bool mycss_property_parser_border_bottom_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1177             {
1178 0           return mycss_property_parser_color(entry, token, last_response);
1179             }
1180              
1181 0           bool mycss_property_parser_border_left_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1182             {
1183 0           return mycss_property_parser_color(entry, token, last_response);
1184             }
1185              
1186             /* border color logical */
1187 0           bool mycss_property_parser_border_block_start_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1188             {
1189 0           return mycss_property_parser_color(entry, token, last_response);
1190             }
1191              
1192 0           bool mycss_property_parser_border_block_end_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1193             {
1194 0           return mycss_property_parser_color(entry, token, last_response);
1195             }
1196              
1197 0           bool mycss_property_parser_border_inline_start_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1198             {
1199 0           return mycss_property_parser_color(entry, token, last_response);
1200             }
1201              
1202 0           bool mycss_property_parser_border_inline_end_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1203             {
1204 0           return mycss_property_parser_color(entry, token, last_response);
1205             }
1206              
1207             /* box sizing */
1208 0           bool mycss_property_parser_box_sizing(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1209             {
1210 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1211 0           return true;
1212            
1213 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1214 0           return mycss_property_shared_switch_to_parse_error(entry);
1215            
1216 0           mycore_string_t str = {0};
1217 0           mycss_token_data_to_string(entry, token, &str, true, false);
1218            
1219 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1220 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1221            
1222 0 0         switch (dec_entry->value_type) {
1223             case MyCSS_PROPERTY_BOX_SIZING_CONTENT_BOX:
1224             case MyCSS_PROPERTY_BOX_SIZING_BORDER_BOX:
1225             /* default values */
1226             case MyCSS_PROPERTY_VALUE_INHERIT:
1227             case MyCSS_PROPERTY_VALUE_INITIAL:
1228             case MyCSS_PROPERTY_VALUE_UNSET:
1229 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1230            
1231             default:
1232 0           break;
1233             }
1234            
1235 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1236             }
1237              
1238             /* vertical align */
1239 0           bool mycss_property_parser_vertical_align(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1240             {
1241 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1242 0           return true;
1243            
1244 0           mycore_string_t str = {0};
1245 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1246            
1247 0 0         if(mycss_property_shared_length_percentage(entry, token, &dec_entry->value, &dec_entry->value_type, &str))
1248 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1249            
1250 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1251 0           return mycss_property_shared_switch_to_parse_error(entry);
1252            
1253 0 0         if(str.data == NULL)
1254 0           mycss_token_data_to_string(entry, token, &str, true, false);
1255            
1256 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1257            
1258 0 0         switch (dec_entry->value_type) {
1259             case MyCSS_PROPERTY_VERTICAL_ALIGN_BASELINE:
1260             case MyCSS_PROPERTY_VERTICAL_ALIGN_SUB:
1261             case MyCSS_PROPERTY_VERTICAL_ALIGN_SUPER:
1262             case MyCSS_PROPERTY_VERTICAL_ALIGN_TOP:
1263             case MyCSS_PROPERTY_VERTICAL_ALIGN_TEXT_TOP:
1264             case MyCSS_PROPERTY_VERTICAL_ALIGN_MIDDLE:
1265             case MyCSS_PROPERTY_VERTICAL_ALIGN_BOTTOM:
1266             case MyCSS_PROPERTY_VERTICAL_ALIGN_TEXT_BOTTOM:
1267             /* default values */
1268             case MyCSS_PROPERTY_VALUE_INHERIT:
1269             case MyCSS_PROPERTY_VALUE_INITIAL:
1270             case MyCSS_PROPERTY_VALUE_UNSET:
1271 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1272            
1273             default:
1274 0           break;
1275             }
1276            
1277 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1278             }
1279              
1280             /* line height */
1281 0           bool mycss_property_parser_line_height(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1282             {
1283 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1284 0           return true;
1285            
1286 0           mycore_string_t str = {0};
1287 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1288            
1289 0 0         if(mycss_property_shared_line_height(entry, token, &dec_entry->value, &dec_entry->value_type, &str))
1290 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1291            
1292 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1293             }
1294              
1295             /* color */
1296 0           bool mycss_property_parser_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1297             {
1298 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1299 0           return true;
1300            
1301 0           mycore_string_t str = {0};
1302 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1303            
1304 0           bool parser_changed = false;
1305            
1306 0           dec_entry->value = NULL;
1307            
1308 0 0         if(mycss_property_shared_color(entry, token, &dec_entry->value, &dec_entry->value_type, &str, &parser_changed))
1309             {
1310 0 0         if(parser_changed) {
1311 0           mycss_stack_push(entry->declaration->stack, NULL, mycss_property_parser_color_after);
1312 0           return true;
1313             }
1314            
1315 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1316             }
1317            
1318 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1319             }
1320              
1321 0           bool mycss_property_parser_color_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1322             {
1323 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1324 0           return true;
1325            
1326 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
1327 0           return true;
1328            
1329 0           return mycss_property_shared_switch_to_parse_error(entry);
1330             }
1331              
1332             /* position */
1333 0           bool mycss_property_parser_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1334             {
1335 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1336 0           return true;
1337            
1338 0           mycore_string_t str = {0};
1339 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1340            
1341 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1342 0           return mycss_property_shared_switch_to_parse_error(entry);
1343            
1344 0           mycss_token_data_to_string(entry, token, &str, true, false);
1345 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1346            
1347 0 0         switch (dec_entry->value_type) {
1348             case MyCSS_PROPERTY_POSITION_STATIC:
1349             case MyCSS_PROPERTY_POSITION_RELATIVE:
1350             case MyCSS_PROPERTY_POSITION_ABSOLUTE:
1351             case MyCSS_PROPERTY_POSITION_STICKY:
1352             case MyCSS_PROPERTY_POSITION_FIXED:
1353             /* default values */
1354             case MyCSS_PROPERTY_VALUE_INHERIT:
1355             case MyCSS_PROPERTY_VALUE_INITIAL:
1356             case MyCSS_PROPERTY_VALUE_UNSET:
1357 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1358            
1359             default:
1360 0           break;
1361             }
1362            
1363 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1364             }
1365              
1366             /* z-index */
1367 0           bool mycss_property_parser_z_index(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1368             {
1369 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1370 0           return true;
1371            
1372 0           mycore_string_t str = {0};
1373 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1374            
1375 0 0         if(mycss_property_shared_number(entry, token, &dec_entry->value, &dec_entry->value_type, &str))
1376 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1377            
1378 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1379 0           return mycss_property_shared_switch_to_parse_error(entry);
1380            
1381 0 0         if(str.data == NULL)
1382 0           mycss_token_data_to_string(entry, token, &str, true, false);
1383            
1384 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1385            
1386 0 0         switch (dec_entry->value_type) {
1387             case MyCSS_PROPERTY_Z_INDEX_AUTO:
1388             /* default values */
1389             case MyCSS_PROPERTY_VALUE_INHERIT:
1390             case MyCSS_PROPERTY_VALUE_INITIAL:
1391             case MyCSS_PROPERTY_VALUE_UNSET:
1392 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1393            
1394             default:
1395 0           dec_entry->value_type = MyCSS_PROPERTY_VALUE_UNDEF;
1396 0           break;
1397             }
1398            
1399 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1400             }
1401              
1402             /* Cursor */
1403 0           bool mycss_property_parser_cursor(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1404             {
1405 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1406 0           return true;
1407            
1408 0           mycore_string_t str = {0};
1409 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1410            
1411 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1412 0           return mycss_property_shared_switch_to_parse_error(entry);
1413            
1414 0           mycss_token_data_to_string(entry, token, &str, true, false);
1415 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1416            
1417 0 0         switch (dec_entry->value_type) {
1418             case MyCSS_PROPERTY_CURSOR_AUTO:
1419             case MyCSS_PROPERTY_CURSOR_DEFAULT:
1420             case MyCSS_PROPERTY_CURSOR_NONE:
1421             case MyCSS_PROPERTY_CURSOR_CONTEXT_MENU:
1422             case MyCSS_PROPERTY_CURSOR_HELP:
1423             case MyCSS_PROPERTY_CURSOR_POINTER:
1424             case MyCSS_PROPERTY_CURSOR_PROGRESS:
1425             case MyCSS_PROPERTY_CURSOR_WAIT:
1426             case MyCSS_PROPERTY_CURSOR_CELL:
1427             case MyCSS_PROPERTY_CURSOR_CROSSHAIR:
1428             case MyCSS_PROPERTY_CURSOR_TEXT:
1429             case MyCSS_PROPERTY_CURSOR_VERTICAL_TEXT:
1430             case MyCSS_PROPERTY_CURSOR_ALIAS:
1431             case MyCSS_PROPERTY_CURSOR_COPY:
1432             case MyCSS_PROPERTY_CURSOR_MOVE:
1433             case MyCSS_PROPERTY_CURSOR_NO_DROP:
1434             case MyCSS_PROPERTY_CURSOR_NOT_ALLOWED:
1435             case MyCSS_PROPERTY_CURSOR_GRAB:
1436             case MyCSS_PROPERTY_CURSOR_GRABBING:
1437             case MyCSS_PROPERTY_CURSOR_E_RESIZE:
1438             case MyCSS_PROPERTY_CURSOR_N_RESIZE:
1439             case MyCSS_PROPERTY_CURSOR_NE_RESIZE:
1440             case MyCSS_PROPERTY_CURSOR_NW_RESIZE:
1441             case MyCSS_PROPERTY_CURSOR_S_RESIZE:
1442             case MyCSS_PROPERTY_CURSOR_SE_RESIZE:
1443             case MyCSS_PROPERTY_CURSOR_SW_RESIZE:
1444             case MyCSS_PROPERTY_CURSOR_W_RESIZE:
1445             case MyCSS_PROPERTY_CURSOR_EW_RESIZE:
1446             case MyCSS_PROPERTY_CURSOR_NS_RESIZE:
1447             case MyCSS_PROPERTY_CURSOR_NESW_RESIZE:
1448             case MyCSS_PROPERTY_CURSOR_NWSE_RESIZE:
1449             case MyCSS_PROPERTY_CURSOR_COL_RESIZE:
1450             case MyCSS_PROPERTY_CURSOR_ROW_RESIZE:
1451             case MyCSS_PROPERTY_CURSOR_ALL_SCROLL:
1452             case MyCSS_PROPERTY_CURSOR_ZOOM_IN:
1453             case MyCSS_PROPERTY_CURSOR_ZOOM_OUT:
1454             /* default values */
1455             case MyCSS_PROPERTY_VALUE_INHERIT:
1456             case MyCSS_PROPERTY_VALUE_INITIAL:
1457             case MyCSS_PROPERTY_VALUE_UNSET:
1458 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1459            
1460             default:
1461 0           break;
1462             }
1463            
1464 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1465             }
1466              
1467             /* float */
1468 0           bool mycss_property_parser_float(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1469             {
1470 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1471 0           return true;
1472            
1473 0           mycore_string_t str = {0};
1474 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1475            
1476 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1477 0           return mycss_property_shared_switch_to_parse_error(entry);
1478            
1479 0           mycss_token_data_to_string(entry, token, &str, true, false);
1480 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1481            
1482 0 0         switch (dec_entry->value_type) {
1483             case MyCSS_PROPERTY_FLOAT_LEFT:
1484             case MyCSS_PROPERTY_FLOAT_RIGHT:
1485             case MyCSS_PROPERTY_FLOAT_TOP:
1486             case MyCSS_PROPERTY_FLOAT_BOTTOM:
1487             case MyCSS_PROPERTY_FLOAT_START:
1488             case MyCSS_PROPERTY_FLOAT_END:
1489             case MyCSS_PROPERTY_FLOAT_NONE:
1490             /* default values */
1491             case MyCSS_PROPERTY_VALUE_INHERIT:
1492             case MyCSS_PROPERTY_VALUE_INITIAL:
1493             case MyCSS_PROPERTY_VALUE_UNSET:
1494 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1495            
1496             default:
1497 0           break;
1498             }
1499            
1500 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1501             }
1502              
1503 0           bool mycss_property_parser_float_displace(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1504             {
1505 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1506 0           return true;
1507            
1508 0           mycore_string_t str = {0};
1509 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1510            
1511 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1512 0           return mycss_property_shared_switch_to_parse_error(entry);
1513            
1514 0           mycss_token_data_to_string(entry, token, &str, true, false);
1515 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1516            
1517 0 0         switch (dec_entry->value_type) {
1518             case MyCSS_PROPERTY_FLOAT_DISPLACE_LINE:
1519             case MyCSS_PROPERTY_FLOAT_DISPLACE_INDENT:
1520             case MyCSS_PROPERTY_FLOAT_DISPLACE_BLOCK:
1521             case MyCSS_PROPERTY_FLOAT_DISPLACE_BLOCK_WITHIN_PAGE:
1522             /* default values */
1523             case MyCSS_PROPERTY_VALUE_INHERIT:
1524             case MyCSS_PROPERTY_VALUE_INITIAL:
1525             case MyCSS_PROPERTY_VALUE_UNSET:
1526 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1527            
1528             default:
1529 0           break;
1530             }
1531            
1532 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1533             }
1534              
1535             /* top right bottom left */
1536 0           bool mycss_property_parser_top(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1537             {
1538 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1539 0           return true;
1540            
1541 0           mycore_string_t str = {0};
1542 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1543            
1544 0 0         if(mycss_property_shared_length_percentage(entry, token, &dec_entry->value, &dec_entry->value_type, &str))
1545 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1546            
1547 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1548 0           return mycss_property_shared_switch_to_parse_error(entry);
1549            
1550 0 0         if(str.data == NULL)
1551 0           mycss_token_data_to_string(entry, token, &str, true, false);
1552            
1553 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1554            
1555 0 0         switch (dec_entry->value_type) {
1556             case MyCSS_PROPERTY_VALUE_AUTO:
1557             /* default values */
1558             case MyCSS_PROPERTY_VALUE_INHERIT:
1559             case MyCSS_PROPERTY_VALUE_INITIAL:
1560             case MyCSS_PROPERTY_VALUE_UNSET:
1561 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1562            
1563             default:
1564 0           dec_entry->value_type = MyCSS_PROPERTY_VALUE_UNDEF;
1565 0           break;
1566             }
1567            
1568 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1569             }
1570              
1571 0           bool mycss_property_parser_right(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1572             {
1573 0           return mycss_property_parser_top(entry, token, last_response);
1574             }
1575              
1576 0           bool mycss_property_parser_bottom(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1577             {
1578 0           return mycss_property_parser_top(entry, token, last_response);
1579             }
1580              
1581 0           bool mycss_property_parser_left(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1582             {
1583 0           return mycss_property_parser_top(entry, token, last_response);
1584             }
1585              
1586             /* clear */
1587 0           bool mycss_property_parser_clear(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1588             {
1589 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1590 0           return true;
1591            
1592 0           mycore_string_t str = {0};
1593 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1594            
1595 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1596 0           return mycss_property_shared_switch_to_parse_error(entry);
1597            
1598 0           mycss_token_data_to_string(entry, token, &str, true, false);
1599 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1600            
1601 0 0         switch (dec_entry->value_type) {
1602             case MyCSS_PROPERTY_CLEAR_LEFT:
1603             case MyCSS_PROPERTY_CLEAR_RIGHT:
1604             case MyCSS_PROPERTY_CLEAR_BOTH:
1605             case MyCSS_PROPERTY_CLEAR_NONE:
1606             /* default values */
1607             case MyCSS_PROPERTY_VALUE_INHERIT:
1608             case MyCSS_PROPERTY_VALUE_INITIAL:
1609             case MyCSS_PROPERTY_VALUE_UNSET:
1610 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1611            
1612             default:
1613 0           break;
1614             }
1615            
1616 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1617             }
1618              
1619 0           bool mycss_property_parser_clear_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1620             {
1621 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1622 0           return true;
1623            
1624 0           mycore_string_t str = {0};
1625 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1626            
1627 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1628 0           return mycss_property_shared_switch_to_parse_error(entry);
1629            
1630 0           mycss_token_data_to_string(entry, token, &str, true, false);
1631 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1632            
1633 0 0         switch (dec_entry->value_type) {
1634             case MyCSS_PROPERTY_CLEAR_AFTER_NONE:
1635             case MyCSS_PROPERTY_CLEAR_AFTER_LEFT:
1636             case MyCSS_PROPERTY_CLEAR_AFTER_RIGHT:
1637             case MyCSS_PROPERTY_CLEAR_AFTER_TOP:
1638             case MyCSS_PROPERTY_CLEAR_AFTER_BOTTOM:
1639             case MyCSS_PROPERTY_CLEAR_AFTER_INSIDE:
1640             case MyCSS_PROPERTY_CLEAR_AFTER_OUTSIDE:
1641             case MyCSS_PROPERTY_CLEAR_AFTER_START:
1642             case MyCSS_PROPERTY_CLEAR_AFTER_END:
1643             case MyCSS_PROPERTY_CLEAR_AFTER_BOTH:
1644             case MyCSS_PROPERTY_CLEAR_AFTER_DESCENDANTS:
1645             /* default values */
1646             case MyCSS_PROPERTY_VALUE_INHERIT:
1647             case MyCSS_PROPERTY_VALUE_INITIAL:
1648             case MyCSS_PROPERTY_VALUE_UNSET:
1649 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1650            
1651             default:
1652 0           break;
1653             }
1654            
1655 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1656             }
1657              
1658             /* overflow */
1659 0           bool mycss_property_parser_overflow(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1660             {
1661 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1662 0           return true;
1663            
1664 0           mycore_string_t str = {0};
1665 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1666            
1667 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1668 0           return mycss_property_shared_switch_to_parse_error(entry);
1669            
1670 0           mycss_token_data_to_string(entry, token, &str, true, false);
1671 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1672            
1673 0 0         switch (dec_entry->value_type) {
1674             case MyCSS_PROPERTY_OVERFLOW_VISIBLE:
1675             case MyCSS_PROPERTY_OVERFLOW_HIDDEN:
1676             case MyCSS_PROPERTY_OVERFLOW_SCROLL:
1677             case MyCSS_PROPERTY_OVERFLOW_AUTO:
1678             case MyCSS_PROPERTY_OVERFLOW_NO_DISPLAY:
1679             case MyCSS_PROPERTY_OVERFLOW_NO_CONTENT:
1680             /* default values */
1681             case MyCSS_PROPERTY_VALUE_INHERIT:
1682             case MyCSS_PROPERTY_VALUE_INITIAL:
1683             case MyCSS_PROPERTY_VALUE_UNSET:
1684 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1685            
1686             default:
1687 0           break;
1688             }
1689            
1690 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1691             }
1692              
1693 0           bool mycss_property_parser_overflow_wrap(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1694             {
1695 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1696 0           return true;
1697            
1698 0           mycore_string_t str = {0};
1699 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1700            
1701 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1702 0           return mycss_property_shared_switch_to_parse_error(entry);
1703            
1704 0           mycss_token_data_to_string(entry, token, &str, true, false);
1705 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1706            
1707 0 0         switch (dec_entry->value_type) {
1708             case MyCSS_PROPERTY_OVERFLOW_WRAP_NORMAL:
1709             case MyCSS_PROPERTY_OVERFLOW_WRAP_BREAK_WORD:
1710             case MyCSS_PROPERTY_OVERFLOW_WRAP_BREAK_SPACES:
1711             /* default values */
1712             case MyCSS_PROPERTY_VALUE_INHERIT:
1713             case MyCSS_PROPERTY_VALUE_INITIAL:
1714             case MyCSS_PROPERTY_VALUE_UNSET:
1715 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1716            
1717             default:
1718 0           break;
1719             }
1720            
1721 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1722             }
1723              
1724 0           bool mycss_property_parser_overflow_x(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1725             {
1726 0           return mycss_property_parser_overflow(entry, token, last_response);
1727             }
1728              
1729 0           bool mycss_property_parser_overflow_y(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1730             {
1731 0           return mycss_property_parser_overflow(entry, token, last_response);
1732             }
1733              
1734             /* visibility */
1735 0           bool mycss_property_parser_visibility(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1736             {
1737 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1738 0           return true;
1739            
1740 0           mycore_string_t str = {0};
1741 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1742            
1743 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1744 0           return mycss_property_shared_switch_to_parse_error(entry);
1745            
1746 0           mycss_token_data_to_string(entry, token, &str, true, false);
1747 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1748            
1749 0 0         switch (dec_entry->value_type) {
1750             case MyCSS_PROPERTY_VISIBILITY_VISIBLE:
1751             case MyCSS_PROPERTY_VISIBILITY_HIDDEN:
1752             case MyCSS_PROPERTY_VISIBILITY_COLLAPSE:
1753             /* default values */
1754             case MyCSS_PROPERTY_VALUE_INHERIT:
1755             case MyCSS_PROPERTY_VALUE_INITIAL:
1756             case MyCSS_PROPERTY_VALUE_UNSET:
1757 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1758            
1759             default:
1760 0           break;
1761             }
1762            
1763 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1764             }
1765              
1766             /* font */
1767 0           bool mycss_property_parser_font_weight(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1768             {
1769 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1770 0           return true;
1771            
1772 0           mycore_string_t str = {0};
1773 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1774            
1775 0 0         if(mycss_property_shared_font_weight(entry, token, &dec_entry->value_type, &str))
1776 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1777            
1778 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1779             }
1780              
1781 0           bool mycss_property_parser_font_size(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1782             {
1783 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1784 0           return true;
1785            
1786 0           mycore_string_t str = {0};
1787 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1788            
1789 0 0         if(mycss_property_shared_font_size(entry, token, &dec_entry->value, &dec_entry->value_type, &str))
1790 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1791            
1792 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1793             }
1794              
1795 0           bool mycss_property_parser_font_size_adjust(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1796             {
1797 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1798 0           return true;
1799            
1800 0           mycore_string_t str = {0};
1801 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1802            
1803 0 0         if(mycss_property_shared_number(entry, token, &dec_entry->value, &dec_entry->value_type, &str))
1804 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1805            
1806 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
1807 0           return mycss_property_shared_switch_to_parse_error(entry);
1808            
1809 0 0         if(str.data == NULL)
1810 0           mycss_token_data_to_string(entry, token, &str, true, false);
1811            
1812 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
1813            
1814 0 0         switch (dec_entry->value_type) {
1815             case MyCSS_PROPERTY_FONT_SIZE_ADJUST_NONE:
1816             /* default values */
1817             case MyCSS_PROPERTY_VALUE_INHERIT:
1818             case MyCSS_PROPERTY_VALUE_INITIAL:
1819             case MyCSS_PROPERTY_VALUE_UNSET:
1820 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1821            
1822             default:
1823 0           dec_entry->value_type = MyCSS_PROPERTY_VALUE_UNDEF;
1824 0           break;
1825             }
1826            
1827 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1828             }
1829              
1830 0           bool mycss_property_parser_font_stretch(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1831             {
1832 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1833 0           return true;
1834            
1835 0           mycore_string_t str = {0};
1836 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1837            
1838 0 0         if(mycss_property_shared_font_stretch(entry, token, &dec_entry->value_type, &str))
1839 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1840            
1841 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1842             }
1843              
1844 0           bool mycss_property_parser_font_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1845             {
1846 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1847 0           return true;
1848            
1849 0           mycore_string_t str = {0};
1850 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1851            
1852 0 0         if(mycss_property_shared_font_style(entry, token, &dec_entry->value_type, &str))
1853 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
1854            
1855 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1856             }
1857              
1858 0           static bool mycss_property_parser_font_family_wait_comma_or_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1859             {
1860 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE )
1861 0           return true;
1862            
1863 0 0         if(token->type == MyCSS_TOKEN_TYPE_COMMA) {
1864 0           entry->parser = mycss_property_parser_font_family;
1865 0           return true;
1866             }
1867            
1868 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
1869 0           return true;
1870            
1871 0           return mycss_property_shared_switch_to_parse_error(entry);
1872             }
1873              
1874 0           bool mycss_property_parser_font_family(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1875             {
1876 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1877 0           return true;
1878            
1879 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
1880 0           return true;
1881            
1882 0           mycore_string_t str = {0}; bool dont_destroy_str;
1883 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1884            
1885 0 0         if(mycss_property_shared_font_family(entry, token, &dec_entry->value, &dec_entry->value_type, &dont_destroy_str, &str)) {
1886 0 0         if(dont_destroy_str == false)
1887 0           mycss_property_shared_destroy_string(&str);
1888            
1889 0           entry->parser = mycss_property_parser_font_family_wait_comma_or_end;
1890 0           return true;
1891             }
1892            
1893 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1894             }
1895              
1896             /*
1897             * Font
1898             */
1899             bool mycss_property_parser_font_step_wait_family(mycss_entry_t* entry, mycss_token_t* token, bool last_response);
1900              
1901 0           static bool mycss_property_parser_font_step_wait_family_comma_or_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1902             {
1903 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE )
1904 0           return true;
1905            
1906 0 0         if(token->type == MyCSS_TOKEN_TYPE_COMMA) {
1907 0           entry->parser = mycss_property_parser_font_step_wait_family;
1908 0           return true;
1909             }
1910            
1911 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
1912 0           return true;
1913            
1914 0           return mycss_property_shared_switch_to_parse_error(entry);
1915             }
1916              
1917 0           bool mycss_property_parser_font_step_wait_family(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1918             {
1919 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1920 0           return true;
1921 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
1922 0           return true;
1923            
1924 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1925            
1926 0 0         if(dec_entry->value == NULL)
1927 0           return mycss_property_shared_switch_to_parse_error(entry);
1928            
1929 0           mycore_string_t str = {0};
1930 0           mycss_values_font_t *font = (mycss_values_font_t*)dec_entry->value;
1931            
1932 0           void *value = NULL;
1933 0           unsigned int value_type = 0;
1934             bool dont_destroy_str;
1935            
1936 0 0         if(font->family) {
1937 0           value = font->family->value;
1938 0           value_type = font->family->value_type;
1939             }
1940            
1941 0 0         if(mycss_property_shared_font_family(entry, token, &value, &value_type, &dont_destroy_str, &str)) {
1942 0 0         if(dont_destroy_str == false)
1943 0           mycss_property_shared_destroy_string(&str);
1944            
1945 0 0         if(font->family == NULL) {
1946 0           font->family = mycss_declaration_entry_create(entry->declaration, NULL);
1947            
1948 0           font->family->type = MyCSS_PROPERTY_TYPE_FONT_FAMILY;
1949 0           font->family->value = value;
1950 0           font->family->value_type = value_type;
1951             }
1952            
1953 0           entry->parser = mycss_property_parser_font_step_wait_family_comma_or_end;
1954 0           return true;
1955             }
1956            
1957 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1958             }
1959              
1960 0           bool mycss_property_parser_font_step_wait_line_height(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1961             {
1962 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1963 0           return true;
1964 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
1965 0           return true;
1966            
1967 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
1968            
1969 0 0         if(dec_entry->value == NULL)
1970 0           return mycss_property_shared_switch_to_parse_error(entry);
1971            
1972 0           void *value = NULL;
1973 0           unsigned int value_type = 0;
1974            
1975 0           mycore_string_t str = {0};
1976 0           mycss_values_font_t *font = (mycss_values_font_t*)dec_entry->value;
1977            
1978 0 0         if(mycss_property_shared_line_height(entry, token, &value, &value_type, &str)) {
1979 0           font->line_height = mycss_declaration_entry_create(entry->declaration, NULL);
1980            
1981 0           font->line_height->type = MyCSS_PROPERTY_TYPE_LINE_HEIGHT;
1982 0           font->line_height->value = value;
1983 0           font->line_height->value_type = value_type;
1984            
1985 0           entry->parser = mycss_property_parser_font_step_wait_family;
1986 0           return mycss_property_parser_destroy_string(&str, true);
1987             }
1988            
1989 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
1990             }
1991              
1992 0           bool mycss_property_parser_font_step_after_size(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
1993             {
1994 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
1995 0           return true;
1996            
1997 0 0         if(token->type == MyCSS_TOKEN_TYPE_DELIM) {
1998 0 0         if(*token->data == '/') {
1999 0           entry->parser = mycss_property_parser_font_step_wait_line_height;
2000 0           return true;
2001             }
2002            
2003 0           return mycss_property_shared_switch_to_parse_error(entry);
2004             }
2005            
2006 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
2007 0           return true;
2008            
2009 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2010            
2011 0 0         if(dec_entry->value == NULL)
2012 0           return mycss_property_shared_switch_to_parse_error(entry);
2013            
2014 0           void *value = NULL;
2015 0           unsigned int value_type = 0;
2016             bool dont_destroy_str;
2017            
2018 0           mycore_string_t str = {0};
2019 0           mycss_values_font_t *font = (mycss_values_font_t*)dec_entry->value;
2020            
2021 0 0         if(mycss_property_shared_font_family(entry, token, &value, &value_type, &dont_destroy_str, &str)) {
2022 0 0         if(dont_destroy_str == false)
2023 0           mycss_property_shared_destroy_string(&str);
2024            
2025 0           font->family = mycss_declaration_entry_create(entry->declaration, NULL);
2026            
2027 0           font->family->type = MyCSS_PROPERTY_TYPE_FONT_FAMILY;
2028 0           font->family->value = value;
2029 0           font->family->value_type = value_type;
2030            
2031 0           entry->parser = mycss_property_parser_font_step_wait_family_comma_or_end;
2032 0           return true;
2033             }
2034            
2035 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2036             }
2037              
2038 0           bool mycss_property_parser_font_step_one(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2039             {
2040 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2041 0           return true;
2042            
2043 0 0         if(mycss_property_shared_check_declaration_end(entry, token))
2044 0           return true;
2045            
2046 0           mycore_string_t str = {0};
2047 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2048            
2049 0 0         if(dec_entry->value == NULL)
2050 0           return mycss_property_shared_switch_to_parse_error(entry);
2051            
2052 0           void *value = NULL;
2053 0           unsigned int value_type = 0;
2054            
2055 0           mycss_values_font_t *font = (mycss_values_font_t*)dec_entry->value;
2056            
2057 0 0         if(mycss_property_shared_font_style(entry, token, &value_type, &str))
2058             {
2059 0 0         if(font->style)
2060 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2061            
2062 0           font->style = mycss_declaration_entry_create(entry->declaration, NULL);
2063            
2064 0           font->style->type = MyCSS_PROPERTY_TYPE_FONT_STYLE;
2065 0           font->style->value_type = value_type;
2066            
2067 0           return mycss_property_parser_destroy_string(&str, true);
2068             }
2069 0 0         else if(mycss_property_shared_font_weight(entry, token, &value_type, &str)) {
2070 0 0         if(font->weight)
2071 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2072            
2073 0           font->weight = mycss_declaration_entry_create(entry->declaration, NULL);
2074            
2075 0           font->weight->type = MyCSS_PROPERTY_TYPE_FONT_WEIGHT;
2076 0           font->weight->value_type = value_type;
2077            
2078 0           return mycss_property_parser_destroy_string(&str, true);
2079             }
2080 0 0         else if(mycss_property_shared_font_stretch(entry, token, &value_type, &str)) {
2081 0 0         if(font->stretch)
2082 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2083            
2084 0           font->stretch = mycss_declaration_entry_create(entry->declaration, NULL);
2085            
2086 0           font->stretch->type = MyCSS_PROPERTY_TYPE_FONT_STRETCH;
2087 0           font->stretch->value_type = value_type;
2088            
2089 0           return mycss_property_parser_destroy_string(&str, true);
2090             }
2091            
2092             /* <‘font-size’> [ / <‘line-height’> ]? <‘font-family’> */
2093 0 0         if(mycss_property_shared_font_size(entry, token, &value, &value_type, &str)) {
2094 0           font->size = mycss_declaration_entry_create(entry->declaration, NULL);
2095            
2096 0           font->size->type = MyCSS_PROPERTY_TYPE_FONT_SIZE;
2097 0           font->size->value = value;
2098 0           font->size->value_type = value_type;
2099            
2100 0           entry->parser = mycss_property_parser_font_step_after_size;
2101 0           return mycss_property_parser_destroy_string(&str, true);
2102             }
2103            
2104             bool dont_destroy_str;
2105            
2106 0 0         if(mycss_property_shared_font_family(entry, token, &value, &value_type, &dont_destroy_str, &str)) {
2107 0 0         if(dont_destroy_str == false)
2108 0           mycss_property_shared_destroy_string(&str);
2109            
2110 0           font->family = mycss_declaration_entry_create(entry->declaration, NULL);
2111            
2112 0           font->family->type = MyCSS_PROPERTY_TYPE_FONT_FAMILY;
2113 0           font->family->value = value;
2114 0           font->family->value_type = value_type;
2115            
2116 0           entry->parser = mycss_property_parser_font_step_wait_family_comma_or_end;
2117 0           return true;
2118             }
2119            
2120 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2121             }
2122              
2123 0           bool mycss_property_parser_font(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2124             {
2125 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2126 0           return true;
2127            
2128 0           mycore_string_t str = {0};
2129 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2130            
2131 0           dec_entry->value = mycss_values_create(entry, sizeof(mycss_values_font_t));
2132            
2133 0 0         if(dec_entry->value == NULL)
2134 0           return mycss_property_shared_switch_to_parse_error(entry);
2135            
2136 0           void *value = NULL;
2137 0           unsigned int value_type = 0;
2138            
2139 0           mycss_values_font_t *font = (mycss_values_font_t*)dec_entry->value;
2140            
2141             /* caption | icon | menu | message-box | small-caption | status-bar */
2142 0 0         if(mycss_property_shared_font_ends(entry, token, &value_type, &str)) {
2143 0           dec_entry->value_type = value_type;
2144 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2145             }
2146            
2147             /* [ <‘font-style’> || || <‘font-weight’> || <‘font-stretch’> ]? */
2148 0 0         if(mycss_property_shared_font_style(entry, token, &value_type, &str))
2149             {
2150 0           font->style = mycss_declaration_entry_create(entry->declaration, NULL);
2151            
2152 0           font->style->type = MyCSS_PROPERTY_TYPE_FONT_STYLE;
2153 0           font->style->value_type = value_type;
2154            
2155 0           entry->parser = mycss_property_parser_font_step_one;
2156 0           return mycss_property_parser_destroy_string(&str, true);
2157             }
2158 0 0         else if(mycss_property_shared_font_weight(entry, token, &value_type, &str)) {
2159 0           font->weight = mycss_declaration_entry_create(entry->declaration, NULL);
2160            
2161 0           font->weight->type = MyCSS_PROPERTY_TYPE_FONT_STYLE;
2162 0           font->weight->value_type = value_type;
2163            
2164 0           entry->parser = mycss_property_parser_font_step_one;
2165 0           return mycss_property_parser_destroy_string(&str, true);
2166             }
2167 0 0         else if(mycss_property_shared_font_stretch(entry, token, &value_type, &str)) {
2168 0           font->stretch = mycss_declaration_entry_create(entry->declaration, NULL);
2169            
2170 0           font->stretch->type = MyCSS_PROPERTY_TYPE_FONT_STYLE;
2171 0           font->stretch->value_type = value_type;
2172            
2173 0           entry->parser = mycss_property_parser_font_step_one;
2174 0           return mycss_property_parser_destroy_string(&str, true);
2175             }
2176            
2177             /* <‘font-size’> [ / <‘line-height’> ]? <‘font-family’> */
2178 0 0         if(mycss_property_shared_font_size(entry, token, &value, &value_type, &str)) {
2179 0           font->size = mycss_declaration_entry_create(entry->declaration, NULL);
2180            
2181 0           font->size->type = MyCSS_PROPERTY_TYPE_FONT_STYLE;
2182 0           font->size->value = value;
2183 0           font->size->value_type = value_type;
2184            
2185 0           entry->parser = mycss_property_parser_font_step_after_size;
2186 0           return mycss_property_parser_destroy_string(&str, true);
2187             }
2188            
2189             bool dont_destroy_str;
2190            
2191 0 0         if(mycss_property_shared_font_family(entry, token, &value, &value_type, &dont_destroy_str, &str)) {
2192 0 0         if(dont_destroy_str == false)
2193 0           mycss_property_shared_destroy_string(&str);
2194            
2195 0           font->family = mycss_declaration_entry_create(entry->declaration, NULL);
2196            
2197 0           font->family->type = MyCSS_PROPERTY_TYPE_FONT_FAMILY;
2198 0           font->family->value = value;
2199 0           font->family->value_type = value_type;
2200            
2201 0           entry->parser = mycss_property_parser_font_step_wait_family_comma_or_end;
2202 0           return true;
2203             }
2204            
2205 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2206             }
2207              
2208             /* text align */
2209 0           bool mycss_property_parser_text_align(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2210             {
2211 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2212 0           return true;
2213            
2214 0           mycore_string_t str = {0};
2215 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2216            
2217 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2218 0           return mycss_property_shared_switch_to_parse_error(entry);
2219            
2220 0           mycss_token_data_to_string(entry, token, &str, true, false);
2221 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2222            
2223 0 0         switch (dec_entry->value_type) {
2224             case MyCSS_PROPERTY_TEXT_ALIGN_START:
2225             case MyCSS_PROPERTY_TEXT_ALIGN_END:
2226             case MyCSS_PROPERTY_TEXT_ALIGN_LEFT:
2227             case MyCSS_PROPERTY_TEXT_ALIGN_RIGHT:
2228             case MyCSS_PROPERTY_TEXT_ALIGN_CENTER:
2229             case MyCSS_PROPERTY_TEXT_ALIGN_JUSTIFY:
2230             case MyCSS_PROPERTY_TEXT_ALIGN_MATCH_PARENT:
2231             case MyCSS_PROPERTY_TEXT_ALIGN_JUSTIFY_ALL:
2232             /* default values */
2233             case MyCSS_PROPERTY_VALUE_INHERIT:
2234             case MyCSS_PROPERTY_VALUE_INITIAL:
2235             case MyCSS_PROPERTY_VALUE_UNSET:
2236 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2237            
2238             default:
2239 0           break;
2240             }
2241            
2242 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2243             }
2244              
2245 0           bool mycss_property_parser_text_align_all(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2246             {
2247 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2248 0           return true;
2249            
2250 0           mycore_string_t str = {0};
2251 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2252            
2253 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2254 0           return mycss_property_shared_switch_to_parse_error(entry);
2255            
2256 0           mycss_token_data_to_string(entry, token, &str, true, false);
2257 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2258            
2259 0 0         switch (dec_entry->value_type) {
2260             case MyCSS_PROPERTY_TEXT_ALIGN_ALL_START:
2261             case MyCSS_PROPERTY_TEXT_ALIGN_ALL_END:
2262             case MyCSS_PROPERTY_TEXT_ALIGN_ALL_LEFT:
2263             case MyCSS_PROPERTY_TEXT_ALIGN_ALL_RIGHT:
2264             case MyCSS_PROPERTY_TEXT_ALIGN_ALL_CENTER:
2265             case MyCSS_PROPERTY_TEXT_ALIGN_ALL_JUSTIFY:
2266             case MyCSS_PROPERTY_TEXT_ALIGN_ALL_MATCH_PARENT:
2267             /* default values */
2268             case MyCSS_PROPERTY_VALUE_INHERIT:
2269             case MyCSS_PROPERTY_VALUE_INITIAL:
2270             case MyCSS_PROPERTY_VALUE_UNSET:
2271 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2272            
2273             default:
2274 0           break;
2275             }
2276            
2277 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2278             }
2279              
2280 0           bool mycss_property_parser_text_align_last(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2281             {
2282 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2283 0           return true;
2284            
2285 0           mycore_string_t str = {0};
2286 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2287            
2288 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2289 0           return mycss_property_shared_switch_to_parse_error(entry);
2290            
2291 0           mycss_token_data_to_string(entry, token, &str, true, false);
2292 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2293            
2294 0 0         switch (dec_entry->value_type) {
2295             case MyCSS_PROPERTY_TEXT_ALIGN_LAST_AUTO:
2296             case MyCSS_PROPERTY_TEXT_ALIGN_LAST_START:
2297             case MyCSS_PROPERTY_TEXT_ALIGN_LAST_END:
2298             case MyCSS_PROPERTY_TEXT_ALIGN_LAST_LEFT:
2299             case MyCSS_PROPERTY_TEXT_ALIGN_LAST_RIGHT:
2300             case MyCSS_PROPERTY_TEXT_ALIGN_LAST_CENTER:
2301             case MyCSS_PROPERTY_TEXT_ALIGN_LAST_JUSTIFY:
2302             /* default values */
2303             case MyCSS_PROPERTY_VALUE_INHERIT:
2304             case MyCSS_PROPERTY_VALUE_INITIAL:
2305             case MyCSS_PROPERTY_VALUE_UNSET:
2306 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2307            
2308             default:
2309 0           break;
2310             }
2311            
2312 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2313             }
2314              
2315             /* text-transform */
2316 0           bool mycss_property_parser_white_space(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2317             {
2318 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2319 0           return true;
2320            
2321 0           mycore_string_t str = {0};
2322 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2323            
2324 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2325 0           return mycss_property_shared_switch_to_parse_error(entry);
2326            
2327 0           mycss_token_data_to_string(entry, token, &str, true, false);
2328 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2329            
2330 0 0         switch (dec_entry->value_type) {
2331             case MyCSS_PROPERTY_WHITE_SPACE_NORMAL:
2332             case MyCSS_PROPERTY_WHITE_SPACE_PRE:
2333             case MyCSS_PROPERTY_WHITE_SPACE_NOWRAP:
2334             case MyCSS_PROPERTY_WHITE_SPACE_PRE_WRAP:
2335             case MyCSS_PROPERTY_WHITE_SPACE_PRE_LINE:
2336             /* default values */
2337             case MyCSS_PROPERTY_VALUE_INHERIT:
2338             case MyCSS_PROPERTY_VALUE_INITIAL:
2339             case MyCSS_PROPERTY_VALUE_UNSET:
2340 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2341            
2342             default:
2343 0           break;
2344             }
2345            
2346 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2347             }
2348              
2349 0           bool mycss_property_parser_text_transform(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2350             {
2351 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2352 0           return true;
2353            
2354 0           mycore_string_t str = {0};
2355 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2356            
2357 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2358 0           return mycss_property_shared_switch_to_parse_error(entry);
2359            
2360 0           mycss_token_data_to_string(entry, token, &str, true, false);
2361 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2362            
2363 0 0         switch (dec_entry->value_type) {
2364             case MyCSS_PROPERTY_TEXT_TRANSFORM_NONE:
2365             case MyCSS_PROPERTY_TEXT_TRANSFORM_CAPITALIZE:
2366             case MyCSS_PROPERTY_TEXT_TRANSFORM_UPPERCASE:
2367             case MyCSS_PROPERTY_TEXT_TRANSFORM_LOWERCASE:
2368             case MyCSS_PROPERTY_TEXT_TRANSFORM_FULL_WIDTH:
2369             /* default values */
2370             case MyCSS_PROPERTY_VALUE_INHERIT:
2371             case MyCSS_PROPERTY_VALUE_INITIAL:
2372             case MyCSS_PROPERTY_VALUE_UNSET:
2373 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2374            
2375             default:
2376 0           break;
2377             }
2378            
2379 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2380             }
2381              
2382 0           bool mycss_property_parser_word_break(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2383             {
2384 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2385 0           return true;
2386            
2387 0           mycore_string_t str = {0};
2388 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2389            
2390 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2391 0           return mycss_property_shared_switch_to_parse_error(entry);
2392            
2393 0           mycss_token_data_to_string(entry, token, &str, true, false);
2394 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2395            
2396 0 0         switch (dec_entry->value_type) {
2397             case MyCSS_PROPERTY_WORD_BREAK_NORMAL:
2398             case MyCSS_PROPERTY_WORD_BREAK_KEEP_ALL:
2399             case MyCSS_PROPERTY_WORD_BREAK_BREAK_ALL:
2400             /* default values */
2401             case MyCSS_PROPERTY_VALUE_INHERIT:
2402             case MyCSS_PROPERTY_VALUE_INITIAL:
2403             case MyCSS_PROPERTY_VALUE_UNSET:
2404 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2405            
2406             default:
2407 0           break;
2408             }
2409            
2410 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2411             }
2412              
2413 0           bool mycss_property_parser_line_break(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2414             {
2415 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2416 0           return true;
2417            
2418 0           mycore_string_t str = {0};
2419 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2420            
2421 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2422 0           return mycss_property_shared_switch_to_parse_error(entry);
2423            
2424 0           mycss_token_data_to_string(entry, token, &str, true, false);
2425 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2426            
2427 0 0         switch (dec_entry->value_type) {
2428             case MyCSS_PROPERTY_LINE_BREAK_AUTO:
2429             case MyCSS_PROPERTY_LINE_BREAK_LOOSE:
2430             case MyCSS_PROPERTY_LINE_BREAK_NORMAL:
2431             case MyCSS_PROPERTY_LINE_BREAK_STRICT:
2432             /* default values */
2433             case MyCSS_PROPERTY_VALUE_INHERIT:
2434             case MyCSS_PROPERTY_VALUE_INITIAL:
2435             case MyCSS_PROPERTY_VALUE_UNSET:
2436 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2437            
2438             default:
2439 0           break;
2440             }
2441            
2442 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2443             }
2444              
2445 0           bool mycss_property_parser_tab_size(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2446             {
2447 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2448 0           return true;
2449            
2450 0           mycore_string_t str = {0};
2451 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2452            
2453 0           if(mycss_property_shared_number(entry, token, &dec_entry->value, &dec_entry->value_type, &str) ||
2454 0 0         mycss_property_shared_length(entry, token, &dec_entry->value, &dec_entry->value_type, &str) ||
2455 0           mycss_property_shared_default(entry, token, &dec_entry->value_type, &str))
2456             {
2457 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2458             }
2459            
2460 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2461             }
2462              
2463 0           bool mycss_property_parser_hyphens(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2464             {
2465 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2466 0           return true;
2467            
2468 0           mycore_string_t str = {0};
2469 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2470            
2471 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2472 0           return mycss_property_shared_switch_to_parse_error(entry);
2473            
2474 0           mycss_token_data_to_string(entry, token, &str, true, false);
2475 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2476            
2477 0 0         switch (dec_entry->value_type) {
2478             case MyCSS_PROPERTY_HYPHENS_NONE:
2479             case MyCSS_PROPERTY_HYPHENS_MANUAL:
2480             case MyCSS_PROPERTY_HYPHENS_AUTO:
2481             /* default values */
2482             case MyCSS_PROPERTY_VALUE_INHERIT:
2483             case MyCSS_PROPERTY_VALUE_INITIAL:
2484             case MyCSS_PROPERTY_VALUE_UNSET:
2485 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2486            
2487             default:
2488 0           break;
2489             }
2490            
2491 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2492             }
2493              
2494 0           bool mycss_property_parser_word_wrap(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2495             {
2496 0           return mycss_property_parser_overflow_wrap(entry, token, last_response);
2497             }
2498              
2499 0           bool mycss_property_parser_text_justify(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2500             {
2501 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2502 0           return true;
2503            
2504 0           mycore_string_t str = {0};
2505 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2506            
2507 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2508 0           return mycss_property_shared_switch_to_parse_error(entry);
2509            
2510 0           mycss_token_data_to_string(entry, token, &str, true, false);
2511 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2512            
2513 0 0         switch (dec_entry->value_type) {
2514             case MyCSS_PROPERTY_TEXT_JUSTIFY_AUTO:
2515             case MyCSS_PROPERTY_TEXT_JUSTIFY_NONE:
2516             case MyCSS_PROPERTY_TEXT_JUSTIFY_INTER_WORD:
2517             case MyCSS_PROPERTY_TEXT_JUSTIFY_INTER_CHARACTER:
2518             /* default values */
2519             case MyCSS_PROPERTY_VALUE_INHERIT:
2520             case MyCSS_PROPERTY_VALUE_INITIAL:
2521             case MyCSS_PROPERTY_VALUE_UNSET:
2522 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2523            
2524             default:
2525 0           break;
2526             }
2527            
2528 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2529             }
2530              
2531 0           bool mycss_property_parser_word_spacing(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2532             {
2533 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2534 0           return true;
2535            
2536 0           mycore_string_t str = {0};
2537 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2538            
2539 0           if(mycss_property_shared_length_percentage(entry, token, &dec_entry->value, &dec_entry->value_type, &str) ||
2540 0 0         mycss_property_shared_by_value_type(entry, token, &dec_entry->value_type, MyCSS_PROPERTY_WORD_SPACING_NORMAL, &str) ||
2541 0           mycss_property_shared_default(entry, token, &dec_entry->value_type, &str))
2542             {
2543 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2544             }
2545            
2546 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2547             }
2548              
2549 0           bool mycss_property_parser_letter_spacing(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2550             {
2551 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2552 0           return true;
2553            
2554 0           mycore_string_t str = {0};
2555 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2556            
2557 0           if(mycss_property_shared_length(entry, token, &dec_entry->value, &dec_entry->value_type, &str) ||
2558 0 0         mycss_property_shared_by_value_type(entry, token, &dec_entry->value_type, MyCSS_PROPERTY_LETTER_SPACING_NORMAL, &str) ||
2559 0           mycss_property_shared_default(entry, token, &dec_entry->value_type, &str))
2560             {
2561 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2562             }
2563            
2564 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2565             }
2566              
2567 0           bool mycss_property_parser_direction(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2568             {
2569 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2570 0           return true;
2571            
2572 0           mycore_string_t str = {0};
2573 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2574            
2575 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2576 0           return mycss_property_shared_switch_to_parse_error(entry);
2577            
2578 0           mycss_token_data_to_string(entry, token, &str, true, false);
2579 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2580            
2581 0 0         switch (dec_entry->value_type) {
2582             case MyCSS_PROPERTY_DIRECTION_LTR:
2583             case MyCSS_PROPERTY_DIRECTION_RTL:
2584             /* default values */
2585             case MyCSS_PROPERTY_VALUE_INHERIT:
2586             case MyCSS_PROPERTY_VALUE_INITIAL:
2587             case MyCSS_PROPERTY_VALUE_UNSET:
2588 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2589            
2590             default:
2591 0           break;
2592             }
2593            
2594 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2595             }
2596              
2597 0           bool mycss_property_parser_unicode_bidi(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2598             {
2599 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2600 0           return true;
2601            
2602 0           mycore_string_t str = {0};
2603 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2604            
2605 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2606 0           return mycss_property_shared_switch_to_parse_error(entry);
2607            
2608 0           mycss_token_data_to_string(entry, token, &str, true, false);
2609 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2610            
2611 0 0         switch (dec_entry->value_type) {
2612             case MyCSS_PROPERTY_UNICODE_BIDI_NORMAL:
2613             case MyCSS_PROPERTY_UNICODE_BIDI_EMBED:
2614             case MyCSS_PROPERTY_UNICODE_BIDI_ISOLATE:
2615             case MyCSS_PROPERTY_UNICODE_BIDI_BIDI_OVERRIDE:
2616             case MyCSS_PROPERTY_UNICODE_BIDI_ISOLATE_OVERRIDE:
2617             case MyCSS_PROPERTY_UNICODE_BIDI_PLAINTEXT:
2618             /* default values */
2619             case MyCSS_PROPERTY_VALUE_INHERIT:
2620             case MyCSS_PROPERTY_VALUE_INITIAL:
2621             case MyCSS_PROPERTY_VALUE_UNSET:
2622 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2623            
2624             default:
2625 0           break;
2626             }
2627            
2628 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2629             }
2630              
2631 0           bool mycss_property_parser_writing_mode(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2632             {
2633 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2634 0           return true;
2635            
2636 0           mycore_string_t str = {0};
2637 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2638            
2639 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2640 0           return mycss_property_shared_switch_to_parse_error(entry);
2641            
2642 0           mycss_token_data_to_string(entry, token, &str, true, false);
2643 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2644            
2645 0 0         switch (dec_entry->value_type) {
2646             case MyCSS_PROPERTY_WRITING_MODE_HORIZONTAL_TB:
2647             case MyCSS_PROPERTY_WRITING_MODE_VERTICAL_LR:
2648             case MyCSS_PROPERTY_WRITING_MODE_VERTICAL_RL:
2649             case MyCSS_PROPERTY_WRITING_MODE_SIDEWAYS_LR:
2650             case MyCSS_PROPERTY_WRITING_MODE_SIDEWAYS_RL:
2651             /* default values */
2652             case MyCSS_PROPERTY_VALUE_INHERIT:
2653             case MyCSS_PROPERTY_VALUE_INITIAL:
2654             case MyCSS_PROPERTY_VALUE_UNSET:
2655 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2656            
2657             default:
2658 0           break;
2659             }
2660            
2661 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2662             }
2663              
2664 0           bool mycss_property_parser_text_orientation(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2665             {
2666 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2667 0           return true;
2668            
2669 0           mycore_string_t str = {0};
2670 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2671            
2672 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2673 0           return mycss_property_shared_switch_to_parse_error(entry);
2674            
2675 0           mycss_token_data_to_string(entry, token, &str, true, false);
2676 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2677            
2678 0 0         switch (dec_entry->value_type) {
2679             case MyCSS_PROPERTY_TEXT_ORIENTATION_MIXED:
2680             case MyCSS_PROPERTY_TEXT_ORIENTATION_UPRIGHT:
2681             case MyCSS_PROPERTY_TEXT_ORIENTATION_SIDEWAYS:
2682             /* default values */
2683             case MyCSS_PROPERTY_VALUE_INHERIT:
2684             case MyCSS_PROPERTY_VALUE_INITIAL:
2685             case MyCSS_PROPERTY_VALUE_UNSET:
2686 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2687            
2688             default:
2689 0           break;
2690             }
2691            
2692 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2693             }
2694              
2695 0           bool mycss_property_parser_glyph_orientation_vertical(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2696             {
2697 0 0         if(token->type == MyCSS_TOKEN_TYPE_WHITESPACE)
2698 0           return true;
2699            
2700 0           mycore_string_t str = {0};
2701 0           mycss_declaration_entry_t* dec_entry = entry->declaration->entry_last;
2702            
2703 0 0         if(token->type != MyCSS_TOKEN_TYPE_IDENT)
2704 0           return mycss_property_shared_switch_to_parse_error(entry);
2705            
2706 0           mycss_token_data_to_string(entry, token, &str, true, false);
2707 0           dec_entry->value_type = mycss_property_value_type_by_name(str.data, str.length);
2708            
2709 0 0         switch (dec_entry->value_type) {
2710             case MyCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL_AUTO:
2711             case MyCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL_0DEG:
2712             case MyCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL_90DEG:
2713             case MyCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL_0:
2714             case MyCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL_90:
2715             /* default values */
2716             case MyCSS_PROPERTY_VALUE_INHERIT:
2717             case MyCSS_PROPERTY_VALUE_INITIAL:
2718             case MyCSS_PROPERTY_VALUE_UNSET:
2719 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_find_important(entry));
2720            
2721             default:
2722 0           break;
2723             }
2724            
2725 0           return mycss_property_parser_destroy_string(&str, mycss_property_shared_switch_to_parse_error(entry));
2726             }
2727              
2728             /* not yet */
2729 0           bool mycss_property_parser_align_content(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2730             {
2731 0           return mycss_property_shared_switch_to_parse_error(entry);
2732             }
2733              
2734 0           bool mycss_property_parser_align_items(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2735             {
2736 0           return mycss_property_shared_switch_to_parse_error(entry);
2737             }
2738              
2739 0           bool mycss_property_parser_align_self(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2740             {
2741 0           return mycss_property_shared_switch_to_parse_error(entry);
2742             }
2743              
2744 0           bool mycss_property_parser_animation(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2745             {
2746 0           return mycss_property_shared_switch_to_parse_error(entry);
2747             }
2748              
2749 0           bool mycss_property_parser_animation_delay(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2750             {
2751 0           return mycss_property_shared_switch_to_parse_error(entry);
2752             }
2753              
2754 0           bool mycss_property_parser_animation_direction(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2755             {
2756 0           return mycss_property_shared_switch_to_parse_error(entry);
2757             }
2758              
2759 0           bool mycss_property_parser_animation_duration(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2760             {
2761 0           return mycss_property_shared_switch_to_parse_error(entry);
2762             }
2763              
2764 0           bool mycss_property_parser_animation_fill_mode(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2765             {
2766 0           return mycss_property_shared_switch_to_parse_error(entry);
2767             }
2768              
2769 0           bool mycss_property_parser_animation_iteration_count(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2770             {
2771 0           return mycss_property_shared_switch_to_parse_error(entry);
2772             }
2773              
2774 0           bool mycss_property_parser_animation_name(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2775             {
2776 0           return mycss_property_shared_switch_to_parse_error(entry);
2777             }
2778              
2779 0           bool mycss_property_parser_animation_play_state(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2780             {
2781 0           return mycss_property_shared_switch_to_parse_error(entry);
2782             }
2783              
2784 0           bool mycss_property_parser_animation_timing_function(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2785             {
2786 0           return mycss_property_shared_switch_to_parse_error(entry);
2787             }
2788              
2789 0           bool mycss_property_parser_appearance(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2790             {
2791 0           return mycss_property_shared_switch_to_parse_error(entry);
2792             }
2793              
2794 0           bool mycss_property_parser_backface_visibility(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2795             {
2796 0           return mycss_property_shared_switch_to_parse_error(entry);
2797             }
2798              
2799 0           bool mycss_property_parser_bookmark_label(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2800             {
2801 0           return mycss_property_shared_switch_to_parse_error(entry);
2802             }
2803              
2804 0           bool mycss_property_parser_bookmark_level(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2805             {
2806 0           return mycss_property_shared_switch_to_parse_error(entry);
2807             }
2808              
2809 0           bool mycss_property_parser_bookmark_state(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2810             {
2811 0           return mycss_property_shared_switch_to_parse_error(entry);
2812             }
2813              
2814 0           bool mycss_property_parser_border_collapse(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2815             {
2816 0           return mycss_property_shared_switch_to_parse_error(entry);
2817             }
2818              
2819 0           bool mycss_property_parser_border_image(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2820             {
2821 0           return mycss_property_shared_switch_to_parse_error(entry);
2822             }
2823              
2824 0           bool mycss_property_parser_border_image_outset(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2825             {
2826 0           return mycss_property_shared_switch_to_parse_error(entry);
2827             }
2828              
2829 0           bool mycss_property_parser_border_image_repeat(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2830             {
2831 0           return mycss_property_shared_switch_to_parse_error(entry);
2832             }
2833              
2834 0           bool mycss_property_parser_border_image_slice(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2835             {
2836 0           return mycss_property_shared_switch_to_parse_error(entry);
2837             }
2838              
2839 0           bool mycss_property_parser_border_image_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2840             {
2841 0           return mycss_property_shared_switch_to_parse_error(entry);
2842             }
2843              
2844 0           bool mycss_property_parser_border_spacing(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2845             {
2846 0           return mycss_property_parser_short_two_type(entry, token);
2847             }
2848              
2849 0           bool mycss_property_parser_box_decoration_break(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2850             {
2851 0           return mycss_property_shared_switch_to_parse_error(entry);
2852             }
2853              
2854 0           bool mycss_property_parser_box_shadow(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2855             {
2856 0           return mycss_property_shared_switch_to_parse_error(entry);
2857             }
2858              
2859 0           bool mycss_property_parser_box_suppress(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2860             {
2861 0           return mycss_property_shared_switch_to_parse_error(entry);
2862             }
2863              
2864 0           bool mycss_property_parser_break_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2865             {
2866 0           return mycss_property_shared_switch_to_parse_error(entry);
2867             }
2868              
2869 0           bool mycss_property_parser_break_before(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2870             {
2871 0           return mycss_property_shared_switch_to_parse_error(entry);
2872             }
2873              
2874 0           bool mycss_property_parser_break_inside(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2875             {
2876 0           return mycss_property_shared_switch_to_parse_error(entry);
2877             }
2878              
2879 0           bool mycss_property_parser_caption_side(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2880             {
2881 0           return mycss_property_shared_switch_to_parse_error(entry);
2882             }
2883              
2884 0           bool mycss_property_parser_caret(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2885             {
2886 0           return mycss_property_shared_switch_to_parse_error(entry);
2887             }
2888              
2889 0           bool mycss_property_parser_caret_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2890             {
2891 0           return mycss_property_shared_switch_to_parse_error(entry);
2892             }
2893              
2894 0           bool mycss_property_parser_caret_shape(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2895             {
2896 0           return mycss_property_shared_switch_to_parse_error(entry);
2897             }
2898              
2899 0           bool mycss_property_parser_color_adjust(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2900             {
2901 0           return mycss_property_shared_switch_to_parse_error(entry);
2902             }
2903              
2904 0           bool mycss_property_parser_color_interpolation(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2905             {
2906 0           return mycss_property_shared_switch_to_parse_error(entry);
2907             }
2908              
2909 0           bool mycss_property_parser_color_interpolation_filters(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2910             {
2911 0           return mycss_property_shared_switch_to_parse_error(entry);
2912             }
2913              
2914 0           bool mycss_property_parser_color_rendering(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2915             {
2916 0           return mycss_property_shared_switch_to_parse_error(entry);
2917             }
2918              
2919 0           bool mycss_property_parser_column_count(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2920             {
2921 0           return mycss_property_shared_switch_to_parse_error(entry);
2922             }
2923              
2924 0           bool mycss_property_parser_column_fill(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2925             {
2926 0           return mycss_property_shared_switch_to_parse_error(entry);
2927             }
2928              
2929 0           bool mycss_property_parser_column_gap(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2930             {
2931 0           return mycss_property_shared_switch_to_parse_error(entry);
2932             }
2933              
2934 0           bool mycss_property_parser_column_rule(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2935             {
2936 0           return mycss_property_shared_switch_to_parse_error(entry);
2937             }
2938              
2939 0           bool mycss_property_parser_column_rule_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2940             {
2941 0           return mycss_property_shared_switch_to_parse_error(entry);
2942             }
2943              
2944 0           bool mycss_property_parser_column_rule_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2945             {
2946 0           return mycss_property_shared_switch_to_parse_error(entry);
2947             }
2948              
2949 0           bool mycss_property_parser_column_rule_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2950             {
2951 0           return mycss_property_shared_switch_to_parse_error(entry);
2952             }
2953              
2954 0           bool mycss_property_parser_column_span(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2955             {
2956 0           return mycss_property_shared_switch_to_parse_error(entry);
2957             }
2958              
2959 0           bool mycss_property_parser_column_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2960             {
2961 0           return mycss_property_shared_switch_to_parse_error(entry);
2962             }
2963              
2964 0           bool mycss_property_parser_columns(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2965             {
2966 0           return mycss_property_shared_switch_to_parse_error(entry);
2967             }
2968              
2969 0           bool mycss_property_parser_contain(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2970             {
2971 0           return mycss_property_shared_switch_to_parse_error(entry);
2972             }
2973              
2974 0           bool mycss_property_parser_content(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2975             {
2976 0           return mycss_property_shared_switch_to_parse_error(entry);
2977             }
2978              
2979 0           bool mycss_property_parser_continue(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2980             {
2981 0           return mycss_property_shared_switch_to_parse_error(entry);
2982             }
2983              
2984 0           bool mycss_property_parser_counter_increment(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2985             {
2986 0           return mycss_property_shared_switch_to_parse_error(entry);
2987             }
2988              
2989 0           bool mycss_property_parser_cue(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2990             {
2991 0           return mycss_property_shared_switch_to_parse_error(entry);
2992             }
2993              
2994 0           bool mycss_property_parser_cue_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
2995             {
2996 0           return mycss_property_shared_switch_to_parse_error(entry);
2997             }
2998              
2999 0           bool mycss_property_parser_cue_before(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3000             {
3001 0           return mycss_property_shared_switch_to_parse_error(entry);
3002             }
3003              
3004 0           bool mycss_property_parser_empty_cells(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3005             {
3006 0           return mycss_property_shared_switch_to_parse_error(entry);
3007             }
3008              
3009 0           bool mycss_property_parser_fill(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3010             {
3011 0           return mycss_property_shared_switch_to_parse_error(entry);
3012             }
3013              
3014 0           bool mycss_property_parser_fill_opacity(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3015             {
3016 0           return mycss_property_shared_switch_to_parse_error(entry);
3017             }
3018              
3019 0           bool mycss_property_parser_fill_rule(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3020             {
3021 0           return mycss_property_shared_switch_to_parse_error(entry);
3022             }
3023              
3024 0           bool mycss_property_parser_flex(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3025             {
3026 0           return mycss_property_shared_switch_to_parse_error(entry);
3027             }
3028              
3029 0           bool mycss_property_parser_flex_basis(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3030             {
3031 0           return mycss_property_shared_switch_to_parse_error(entry);
3032             }
3033              
3034 0           bool mycss_property_parser_flex_direction(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3035             {
3036 0           return mycss_property_shared_switch_to_parse_error(entry);
3037             }
3038              
3039 0           bool mycss_property_parser_flex_flow(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3040             {
3041 0           return mycss_property_shared_switch_to_parse_error(entry);
3042             }
3043              
3044 0           bool mycss_property_parser_flex_grow(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3045             {
3046 0           return mycss_property_shared_switch_to_parse_error(entry);
3047             }
3048              
3049 0           bool mycss_property_parser_flex_shrink(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3050             {
3051 0           return mycss_property_shared_switch_to_parse_error(entry);
3052             }
3053              
3054 0           bool mycss_property_parser_flex_wrap(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3055             {
3056 0           return mycss_property_shared_switch_to_parse_error(entry);
3057             }
3058              
3059 0           bool mycss_property_parser_font_feature_settings(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3060             {
3061 0           return mycss_property_shared_switch_to_parse_error(entry);
3062             }
3063              
3064 0           bool mycss_property_parser_font_kerning(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3065             {
3066 0           return mycss_property_shared_switch_to_parse_error(entry);
3067             }
3068              
3069 0           bool mycss_property_parser_font_language_override(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3070             {
3071 0           return mycss_property_shared_switch_to_parse_error(entry);
3072             }
3073              
3074 0           bool mycss_property_parser_font_synthesis(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3075             {
3076 0           return mycss_property_shared_switch_to_parse_error(entry);
3077             }
3078              
3079 0           bool mycss_property_parser_font_variant(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3080             {
3081 0           return mycss_property_shared_switch_to_parse_error(entry);
3082             }
3083              
3084 0           bool mycss_property_parser_font_variant_alternates(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3085             {
3086 0           return mycss_property_shared_switch_to_parse_error(entry);
3087             }
3088              
3089 0           bool mycss_property_parser_font_variant_caps(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3090             {
3091 0           return mycss_property_shared_switch_to_parse_error(entry);
3092             }
3093              
3094 0           bool mycss_property_parser_font_variant_east_asian(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3095             {
3096 0           return mycss_property_shared_switch_to_parse_error(entry);
3097             }
3098              
3099 0           bool mycss_property_parser_font_variant_ligatures(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3100             {
3101 0           return mycss_property_shared_switch_to_parse_error(entry);
3102             }
3103              
3104 0           bool mycss_property_parser_font_variant_numeric(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3105             {
3106 0           return mycss_property_shared_switch_to_parse_error(entry);
3107             }
3108              
3109 0           bool mycss_property_parser_font_variant_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3110             {
3111 0           return mycss_property_shared_switch_to_parse_error(entry);
3112             }
3113              
3114 0           bool mycss_property_parser_hanging_punctuation(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3115             {
3116 0           return mycss_property_shared_switch_to_parse_error(entry);
3117             }
3118              
3119 0           bool mycss_property_parser_image_rendering(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3120             {
3121 0           return mycss_property_shared_switch_to_parse_error(entry);
3122             }
3123              
3124 0           bool mycss_property_parser_indent_edge_reset(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3125             {
3126 0           return mycss_property_shared_switch_to_parse_error(entry);
3127             }
3128              
3129 0           bool mycss_property_parser_inline_size_step(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3130             {
3131 0           return mycss_property_shared_switch_to_parse_error(entry);
3132             }
3133              
3134 0           bool mycss_property_parser_justify_content(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3135             {
3136 0           return mycss_property_shared_switch_to_parse_error(entry);
3137             }
3138              
3139 0           bool mycss_property_parser_line_height_step(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3140             {
3141 0           return mycss_property_shared_switch_to_parse_error(entry);
3142             }
3143              
3144 0           bool mycss_property_parser_list_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3145             {
3146 0           return mycss_property_shared_switch_to_parse_error(entry);
3147             }
3148              
3149 0           bool mycss_property_parser_list_style_image(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3150             {
3151 0           return mycss_property_shared_switch_to_parse_error(entry);
3152             }
3153              
3154 0           bool mycss_property_parser_list_style_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3155             {
3156 0           return mycss_property_shared_switch_to_parse_error(entry);
3157             }
3158              
3159 0           bool mycss_property_parser_list_style_type(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3160             {
3161 0           return mycss_property_shared_switch_to_parse_error(entry);
3162             }
3163              
3164 0           bool mycss_property_parser_marker(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3165             {
3166 0           return mycss_property_shared_switch_to_parse_error(entry);
3167             }
3168              
3169 0           bool mycss_property_parser_marker_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3170             {
3171 0           return mycss_property_shared_switch_to_parse_error(entry);
3172             }
3173              
3174 0           bool mycss_property_parser_marker_mid(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3175             {
3176 0           return mycss_property_shared_switch_to_parse_error(entry);
3177             }
3178              
3179 0           bool mycss_property_parser_marker_side(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3180             {
3181 0           return mycss_property_shared_switch_to_parse_error(entry);
3182             }
3183              
3184 0           bool mycss_property_parser_marker_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3185             {
3186 0           return mycss_property_shared_switch_to_parse_error(entry);
3187             }
3188              
3189 0           bool mycss_property_parser_max_lines(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3190             {
3191 0           return mycss_property_shared_switch_to_parse_error(entry);
3192             }
3193              
3194 0           bool mycss_property_parser_nav_down(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3195             {
3196 0           return mycss_property_shared_switch_to_parse_error(entry);
3197             }
3198              
3199 0           bool mycss_property_parser_nav_left(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3200             {
3201 0           return mycss_property_shared_switch_to_parse_error(entry);
3202             }
3203              
3204 0           bool mycss_property_parser_nav_right(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3205             {
3206 0           return mycss_property_shared_switch_to_parse_error(entry);
3207             }
3208              
3209 0           bool mycss_property_parser_nav_up(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3210             {
3211 0           return mycss_property_shared_switch_to_parse_error(entry);
3212             }
3213              
3214 0           bool mycss_property_parser_offset_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3215             {
3216 0           return mycss_property_shared_switch_to_parse_error(entry);
3217             }
3218              
3219 0           bool mycss_property_parser_offset_before(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3220             {
3221 0           return mycss_property_shared_switch_to_parse_error(entry);
3222             }
3223              
3224 0           bool mycss_property_parser_offset_end(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3225             {
3226 0           return mycss_property_shared_switch_to_parse_error(entry);
3227             }
3228              
3229 0           bool mycss_property_parser_offset_start(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3230             {
3231 0           return mycss_property_shared_switch_to_parse_error(entry);
3232             }
3233              
3234 0           bool mycss_property_parser_opacity(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3235             {
3236 0           return mycss_property_shared_switch_to_parse_error(entry);
3237             }
3238              
3239 0           bool mycss_property_parser_order(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3240             {
3241 0           return mycss_property_shared_switch_to_parse_error(entry);
3242             }
3243              
3244 0           bool mycss_property_parser_orphans(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3245             {
3246 0           return mycss_property_shared_switch_to_parse_error(entry);
3247             }
3248              
3249 0           bool mycss_property_parser_outline(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3250             {
3251 0           return mycss_property_shared_switch_to_parse_error(entry);
3252             }
3253              
3254 0           bool mycss_property_parser_outline_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3255             {
3256 0           return mycss_property_shared_switch_to_parse_error(entry);
3257             }
3258              
3259 0           bool mycss_property_parser_outline_offset(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3260             {
3261 0           return mycss_property_shared_switch_to_parse_error(entry);
3262             }
3263              
3264 0           bool mycss_property_parser_outline_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3265             {
3266 0           return mycss_property_shared_switch_to_parse_error(entry);
3267             }
3268              
3269 0           bool mycss_property_parser_outline_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3270             {
3271 0           return mycss_property_shared_switch_to_parse_error(entry);
3272             }
3273              
3274 0           bool mycss_property_parser_pause(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3275             {
3276 0           return mycss_property_shared_switch_to_parse_error(entry);
3277             }
3278              
3279 0           bool mycss_property_parser_pause_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3280             {
3281 0           return mycss_property_shared_switch_to_parse_error(entry);
3282             }
3283              
3284 0           bool mycss_property_parser_pause_before(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3285             {
3286 0           return mycss_property_shared_switch_to_parse_error(entry);
3287             }
3288              
3289 0           bool mycss_property_parser_perspective(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3290             {
3291 0           return mycss_property_shared_switch_to_parse_error(entry);
3292             }
3293              
3294 0           bool mycss_property_parser_perspective_origin(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3295             {
3296 0           return mycss_property_shared_switch_to_parse_error(entry);
3297             }
3298              
3299 0           bool mycss_property_parser_presentation_level(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3300             {
3301 0           return mycss_property_shared_switch_to_parse_error(entry);
3302             }
3303              
3304 0           bool mycss_property_parser_quotes(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3305             {
3306 0           return mycss_property_shared_switch_to_parse_error(entry);
3307             }
3308              
3309 0           bool mycss_property_parser_region_fragment(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3310             {
3311 0           return mycss_property_shared_switch_to_parse_error(entry);
3312             }
3313              
3314 0           bool mycss_property_parser_resize(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3315             {
3316 0           return mycss_property_shared_switch_to_parse_error(entry);
3317             }
3318              
3319 0           bool mycss_property_parser_rest(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3320             {
3321 0           return mycss_property_shared_switch_to_parse_error(entry);
3322             }
3323              
3324 0           bool mycss_property_parser_rest_after(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3325             {
3326 0           return mycss_property_shared_switch_to_parse_error(entry);
3327             }
3328              
3329 0           bool mycss_property_parser_rest_before(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3330             {
3331 0           return mycss_property_shared_switch_to_parse_error(entry);
3332             }
3333              
3334 0           bool mycss_property_parser_ruby_align(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3335             {
3336 0           return mycss_property_shared_switch_to_parse_error(entry);
3337             }
3338              
3339 0           bool mycss_property_parser_ruby_merge(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3340             {
3341 0           return mycss_property_shared_switch_to_parse_error(entry);
3342             }
3343              
3344 0           bool mycss_property_parser_ruby_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3345             {
3346 0           return mycss_property_shared_switch_to_parse_error(entry);
3347             }
3348              
3349 0           bool mycss_property_parser_scroll_padding(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3350             {
3351 0           return mycss_property_shared_switch_to_parse_error(entry);
3352             }
3353              
3354 0           bool mycss_property_parser_scroll_snap_align(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3355             {
3356 0           return mycss_property_shared_switch_to_parse_error(entry);
3357             }
3358              
3359 0           bool mycss_property_parser_scroll_snap_margin(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3360             {
3361 0           return mycss_property_shared_switch_to_parse_error(entry);
3362             }
3363              
3364 0           bool mycss_property_parser_scroll_snap_stop(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3365             {
3366 0           return mycss_property_shared_switch_to_parse_error(entry);
3367             }
3368              
3369 0           bool mycss_property_parser_scroll_snap_type(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3370             {
3371 0           return mycss_property_shared_switch_to_parse_error(entry);
3372             }
3373              
3374 0           bool mycss_property_parser_shape_image_threshold(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3375             {
3376 0           return mycss_property_shared_switch_to_parse_error(entry);
3377             }
3378              
3379 0           bool mycss_property_parser_shape_margin(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3380             {
3381 0           return mycss_property_shared_switch_to_parse_error(entry);
3382             }
3383              
3384 0           bool mycss_property_parser_shape_outside(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3385             {
3386 0           return mycss_property_shared_switch_to_parse_error(entry);
3387             }
3388              
3389 0           bool mycss_property_parser_shape_rendering(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3390             {
3391 0           return mycss_property_shared_switch_to_parse_error(entry);
3392             }
3393              
3394 0           bool mycss_property_parser_speak(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3395             {
3396 0           return mycss_property_shared_switch_to_parse_error(entry);
3397             }
3398              
3399 0           bool mycss_property_parser_speak_as(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3400             {
3401 0           return mycss_property_shared_switch_to_parse_error(entry);
3402             }
3403              
3404 0           bool mycss_property_parser_string_set(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3405             {
3406 0           return mycss_property_shared_switch_to_parse_error(entry);
3407             }
3408              
3409 0           bool mycss_property_parser_stroke(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3410             {
3411 0           return mycss_property_shared_switch_to_parse_error(entry);
3412             }
3413              
3414 0           bool mycss_property_parser_stroke_dasharray(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3415             {
3416 0           return mycss_property_shared_switch_to_parse_error(entry);
3417             }
3418              
3419 0           bool mycss_property_parser_stroke_dashoffset(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3420             {
3421 0           return mycss_property_shared_switch_to_parse_error(entry);
3422             }
3423              
3424 0           bool mycss_property_parser_stroke_linecap(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3425             {
3426 0           return mycss_property_shared_switch_to_parse_error(entry);
3427             }
3428              
3429 0           bool mycss_property_parser_stroke_linejoin(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3430             {
3431 0           return mycss_property_shared_switch_to_parse_error(entry);
3432             }
3433              
3434 0           bool mycss_property_parser_stroke_miterlimit(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3435             {
3436 0           return mycss_property_shared_switch_to_parse_error(entry);
3437             }
3438              
3439 0           bool mycss_property_parser_stroke_opacity(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3440             {
3441 0           return mycss_property_shared_switch_to_parse_error(entry);
3442             }
3443              
3444 0           bool mycss_property_parser_stroke_width(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3445             {
3446 0           return mycss_property_shared_switch_to_parse_error(entry);
3447             }
3448              
3449 0           bool mycss_property_parser_table_layout(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3450             {
3451 0           return mycss_property_shared_switch_to_parse_error(entry);
3452             }
3453              
3454 0           bool mycss_property_parser_text_combine_upright(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3455             {
3456 0           return mycss_property_shared_switch_to_parse_error(entry);
3457             }
3458              
3459 0           bool mycss_property_parser_text_emphasis(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3460             {
3461 0           return mycss_property_shared_switch_to_parse_error(entry);
3462             }
3463              
3464 0           bool mycss_property_parser_text_emphasis_color(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3465             {
3466 0           return mycss_property_shared_switch_to_parse_error(entry);
3467             }
3468              
3469 0           bool mycss_property_parser_text_emphasis_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3470             {
3471 0           return mycss_property_shared_switch_to_parse_error(entry);
3472             }
3473              
3474 0           bool mycss_property_parser_text_emphasis_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3475             {
3476 0           return mycss_property_shared_switch_to_parse_error(entry);
3477             }
3478              
3479 0           bool mycss_property_parser_text_indent(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3480             {
3481 0           return mycss_property_shared_switch_to_parse_error(entry);
3482             }
3483              
3484 0           bool mycss_property_parser_text_overflow(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3485             {
3486 0           return mycss_property_shared_switch_to_parse_error(entry);
3487             }
3488              
3489 0           bool mycss_property_parser_text_rendering(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3490             {
3491 0           return mycss_property_shared_switch_to_parse_error(entry);
3492             }
3493              
3494 0           bool mycss_property_parser_text_shadow(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3495             {
3496 0           return mycss_property_shared_switch_to_parse_error(entry);
3497             }
3498              
3499 0           bool mycss_property_parser_text_size_adjust(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3500             {
3501 0           return mycss_property_shared_switch_to_parse_error(entry);
3502             }
3503              
3504 0           bool mycss_property_parser_text_underline_position(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3505             {
3506 0           return mycss_property_shared_switch_to_parse_error(entry);
3507             }
3508              
3509 0           bool mycss_property_parser_touch_action(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3510             {
3511 0           return mycss_property_shared_switch_to_parse_error(entry);
3512             }
3513              
3514 0           bool mycss_property_parser_transform(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3515             {
3516 0           return mycss_property_shared_switch_to_parse_error(entry);
3517             }
3518              
3519 0           bool mycss_property_parser_transform_box(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3520             {
3521 0           return mycss_property_shared_switch_to_parse_error(entry);
3522             }
3523              
3524 0           bool mycss_property_parser_transform_origin(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3525             {
3526 0           return mycss_property_shared_switch_to_parse_error(entry);
3527             }
3528              
3529 0           bool mycss_property_parser_transform_style(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3530             {
3531 0           return mycss_property_shared_switch_to_parse_error(entry);
3532             }
3533              
3534 0           bool mycss_property_parser_transition(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3535             {
3536 0           return mycss_property_shared_switch_to_parse_error(entry);
3537             }
3538              
3539 0           bool mycss_property_parser_transition_delay(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3540             {
3541 0           return mycss_property_shared_switch_to_parse_error(entry);
3542             }
3543              
3544 0           bool mycss_property_parser_transition_duration(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3545             {
3546 0           return mycss_property_shared_switch_to_parse_error(entry);
3547             }
3548              
3549 0           bool mycss_property_parser_transition_property(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3550             {
3551 0           return mycss_property_shared_switch_to_parse_error(entry);
3552             }
3553              
3554 0           bool mycss_property_parser_transition_timing_function(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3555             {
3556 0           return mycss_property_shared_switch_to_parse_error(entry);
3557             }
3558              
3559 0           bool mycss_property_parser_user_select(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3560             {
3561 0           return mycss_property_shared_switch_to_parse_error(entry);
3562             }
3563              
3564 0           bool mycss_property_parser_voice_balance(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3565             {
3566 0           return mycss_property_shared_switch_to_parse_error(entry);
3567             }
3568              
3569 0           bool mycss_property_parser_voice_duration(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3570             {
3571 0           return mycss_property_shared_switch_to_parse_error(entry);
3572             }
3573              
3574 0           bool mycss_property_parser_voice_family(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3575             {
3576 0           return mycss_property_shared_switch_to_parse_error(entry);
3577             }
3578              
3579 0           bool mycss_property_parser_voice_pitch(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3580             {
3581 0           return mycss_property_shared_switch_to_parse_error(entry);
3582             }
3583              
3584 0           bool mycss_property_parser_voice_range(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3585             {
3586 0           return mycss_property_shared_switch_to_parse_error(entry);
3587             }
3588              
3589 0           bool mycss_property_parser_voice_rate(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3590             {
3591 0           return mycss_property_shared_switch_to_parse_error(entry);
3592             }
3593              
3594 0           bool mycss_property_parser_voice_stress(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3595             {
3596 0           return mycss_property_shared_switch_to_parse_error(entry);
3597             }
3598              
3599 0           bool mycss_property_parser_voice_volume(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3600             {
3601 0           return mycss_property_shared_switch_to_parse_error(entry);
3602             }
3603              
3604 0           bool mycss_property_parser_widows(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3605             {
3606 0           return mycss_property_shared_switch_to_parse_error(entry);
3607             }
3608              
3609 0           bool mycss_property_parser_will_change(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3610             {
3611 0           return mycss_property_shared_switch_to_parse_error(entry);
3612             }
3613              
3614 0           bool mycss_property_parser_wrap_flow(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3615             {
3616 0           return mycss_property_shared_switch_to_parse_error(entry);
3617             }
3618              
3619 0           bool mycss_property_parser_wrap_through(mycss_entry_t* entry, mycss_token_t* token, bool last_response)
3620             {
3621 0           return mycss_property_shared_switch_to_parse_error(entry);
3622             }
3623              
3624