File Coverage

third_party/modest/source/mycss/tokenizer_end.c
Criterion Covered Total %
statement 36 487 7.3
branch 6 182 3.3
condition n/a
subroutine n/a
pod n/a
total 42 669 6.2


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/tokenizer_end.h"
22              
23 109           size_t mycss_tokenizer_end_run_state_single(mycss_entry_t* entry, mycss_tokenizer_state_t state, const char* css, size_t css_offset, size_t css_size)
24             {
25 109           mycss_t* mycss = entry->mycss;
26 109           mycss_tokenizer_state_f* state_f = mycss->parse_state_func;
27            
28 109           return state_f[state + MyCSS_TOKENIZER_STATE_LAST_ENTRY](entry, entry->token, css, css_offset, css_size);
29             }
30              
31             /////////////////////////////////////////////////////////
32             //// whitespace
33             ////
34             /////////////////////////////////////////////////////////
35 0           size_t mycss_tokenizer_end_state_whitespace(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
36             {
37 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
38            
39 0 0         if(token->length) {
40 0           token->type = MyCSS_TOKEN_TYPE_WHITESPACE;
41 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
42             }
43            
44 0           return css_size;
45             }
46              
47             /////////////////////////////////////////////////////////
48             //// U+0022 QUOTATION MARK (")
49             ////
50             /////////////////////////////////////////////////////////
51 0           size_t mycss_tokenizer_end_state_quotation_mark(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
52             {
53 0           token->type = MyCSS_TOKEN_TYPE_BAD_STRING;
54 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
55            
56 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
57            
58 0           return css_size;
59             }
60              
61 0           size_t mycss_tokenizer_end_state_quotation_mark_back(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
62             {
63 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
64 0           return css_size;
65             }
66              
67             /////////////////////////////////////////////////////////
68             //// U+0023 NUMBER SIGN (#)
69             ////
70             /////////////////////////////////////////////////////////
71 0           size_t mycss_tokenizer_end_state_number_sign(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
72             {
73 0           token->length = 1;
74 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
75            
76 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
77            
78 0           return css_size;
79             }
80              
81 39           size_t mycss_tokenizer_end_state_number_sign_name_back(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
82             {
83 39           token->type = MyCSS_TOKEN_TYPE_HASH;
84 39 50         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
85            
86 39           return css_size;
87             }
88              
89 0           size_t mycss_tokenizer_end_state_number_sign_name_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
90             {
91 0           size_t begin = token->begin;
92            
93             // and '#' character
94 0           token->length = 1;
95 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
96            
97 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
98            
99             // and '\' character
100 0           token->length = 1;
101 0           token->begin = begin + 1;
102 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
103            
104 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
105            
106 0           return css_size;
107             }
108              
109             /////////////////////////////////////////////////////////
110             //// U+0024 DOLLAR SIGN ($)
111             ////
112             /////////////////////////////////////////////////////////
113 0           size_t mycss_tokenizer_end_state_dollar_sign(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
114             {
115 0           token->length = 1;
116 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
117            
118 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
119            
120 0           return css_size;
121             }
122              
123             /////////////////////////////////////////////////////////
124             //// U+0027 APOSTROPHE (')
125             ////
126             /////////////////////////////////////////////////////////
127 0           size_t mycss_tokenizer_end_state_apostrophe(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
128             {
129 0           token->type = MyCSS_TOKEN_TYPE_BAD_STRING;
130 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
131            
132 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
133            
134 0           return css_size;
135             }
136              
137 0           size_t mycss_tokenizer_end_state_apostrophe_back(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
138             {
139 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
140 0           return css_size;
141             }
142              
143             /////////////////////////////////////////////////////////
144             //// U+0028 LEFT PARENTHESIS (()
145             ////
146             /////////////////////////////////////////////////////////
147 1           size_t mycss_tokenizer_end_state_left_parenthesis(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
148             {
149 1           token->length = 1;
150 1           token->type = MyCSS_TOKEN_TYPE_LEFT_PARENTHESIS;
151            
152 1 50         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
153 1           return css_size;
154             }
155              
156             /////////////////////////////////////////////////////////
157             //// U+0029 RIGHT PARENTHESIS ())
158             ////
159             /////////////////////////////////////////////////////////
160 0           size_t mycss_tokenizer_end_state_right_parenthesis(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
161             {
162 0           token->length = 1;
163 0           token->type = MyCSS_TOKEN_TYPE_RIGHT_PARENTHESIS;
164            
165 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
166 0           return css_size;
167             }
168              
169             /////////////////////////////////////////////////////////
170             //// U+002A ASTERISK (*)
171             ////
172             /////////////////////////////////////////////////////////
173 1           size_t mycss_tokenizer_end_state_asterisk(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
174             {
175 1           token->length = 1;
176 1           token->type = MyCSS_TOKEN_TYPE_DELIM;
177            
178 1 50         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
179 1           return css_size;
180             }
181              
182             /////////////////////////////////////////////////////////
183             //// U+002B PLUS SIGN (+)
184             ////
185             /////////////////////////////////////////////////////////
186 0           size_t mycss_tokenizer_end_state_plus_sign(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
187             {
188 0           token->length = 1;
189 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
190            
191 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
192 0           return css_size;
193             }
194              
195 0           size_t mycss_tokenizer_end_state_plus_sign_full_stop(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
196             {
197 0           size_t begin = token->begin;
198            
199             // '+' character
200 0           token->length = 1;
201 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
202            
203 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
204            
205             // and '.' character
206 0           token->length = 1;
207 0           token->begin = begin + 1;
208 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
209            
210 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
211            
212 0           return css_size;
213             }
214              
215             /////////////////////////////////////////////////////////
216             //// U+002C COMMA (,)
217             ////
218             /////////////////////////////////////////////////////////
219 0           size_t mycss_tokenizer_end_state_comma(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
220             {
221 0           token->length = 1;
222 0           token->type = MyCSS_TOKEN_TYPE_COMMA;
223            
224 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
225 0           return css_size;
226             }
227              
228             /////////////////////////////////////////////////////////
229             //// U+002D HYPHEN-MINUS (-)
230             ////
231             /////////////////////////////////////////////////////////
232 0           size_t mycss_tokenizer_end_state_hyphen_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
233             {
234 0           token->length = 1;
235 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
236            
237 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
238 0           return css_size;
239             }
240              
241 0           size_t mycss_tokenizer_end_state_hyphen_minus_full_stop(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
242             {
243 0           size_t begin = token->begin;
244            
245             // '-' character
246 0           token->length = 1;
247 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
248            
249 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
250            
251             // and '.' character
252 0           token->length = 1;
253 0           token->begin = begin + 1;
254 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
255            
256 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
257            
258 0           return css_size;
259             }
260              
261 0           size_t mycss_tokenizer_end_state_hyphen_minus_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
262             {
263 0           size_t begin = token->begin;
264            
265             // '-' character
266 0           token->length = 1;
267 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
268            
269 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
270            
271             // and '-' character
272 0           token->length = 1;
273 0           token->begin = begin + 1;
274 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
275            
276 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
277            
278 0           return css_size;
279             }
280              
281 0           size_t mycss_tokenizer_end_state_hyphen_minus_minus_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
282             {
283 0           size_t begin = token->begin;
284            
285             // '-' character
286 0           token->length = 1;
287 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
288            
289 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
290            
291             // and '-' character
292 0           token->length = 1;
293 0           token->begin = begin + 1;
294 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
295            
296 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
297            
298             // and '\' character
299 0           token->length = 1;
300 0           token->begin = begin + 2;
301 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
302            
303 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
304            
305 0           return css_size;
306             }
307              
308 0           size_t mycss_tokenizer_end_state_hyphen_minus_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
309             {
310 0           size_t begin = token->begin;
311            
312             // '-' character
313 0           token->length = 1;
314 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
315            
316 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
317            
318             // and '\' character
319 0           token->length = 1;
320 0           token->begin = begin + 1;
321 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
322            
323 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
324            
325 0           return css_size;
326             }
327              
328             /////////////////////////////////////////////////////////
329             //// U+002E FULL STOP (.)
330             ////
331             /////////////////////////////////////////////////////////
332 0           size_t mycss_tokenizer_end_state_full_stop(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
333             {
334 0           token->length = 1;
335 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
336            
337 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
338 0           return css_size;
339             }
340              
341             /////////////////////////////////////////////////////////
342             //// U+002F SOLIDUS (/)
343             ////
344             /////////////////////////////////////////////////////////
345 0           size_t mycss_tokenizer_end_state_solidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
346             {
347 0           token->length = 1;
348 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
349            
350 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
351 0           return css_size;
352             }
353              
354 0           size_t mycss_tokenizer_end_state_solidus_comment_end(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
355             {
356 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
357 0           token->type = MyCSS_TOKEN_TYPE_COMMENT;
358            
359 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
360 0           return css_size;
361             }
362              
363             /////////////////////////////////////////////////////////
364             //// U+003A COLON (:)
365             ////
366             /////////////////////////////////////////////////////////
367 0           size_t mycss_tokenizer_end_state_colon(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
368             {
369 0           token->length = 1;
370 0           token->type = MyCSS_TOKEN_TYPE_COLON;
371            
372 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
373 0           return css_size;
374             }
375              
376             /////////////////////////////////////////////////////////
377             //// U+003B SEMICOLON (;)
378             ////
379             /////////////////////////////////////////////////////////
380 0           size_t mycss_tokenizer_end_state_semicolon(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
381             {
382 0           token->length = 1;
383 0           token->type = MyCSS_TOKEN_TYPE_SEMICOLON;
384            
385 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
386 0           return css_size;
387             }
388              
389             /////////////////////////////////////////////////////////
390             //// U+003C LESS-THAN SIGN (<)
391             ////
392             /////////////////////////////////////////////////////////
393 0           size_t mycss_tokenizer_end_state_less_than_sign(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
394             {
395 0           token->length = 1;
396 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
397            
398 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
399 0           return css_size;
400             }
401              
402 0           size_t mycss_tokenizer_end_state_less_than_sign_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
403             {
404 0           size_t begin = token->begin;
405            
406             // '<' character
407 0           token->length = 1;
408 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
409            
410 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
411            
412             // and '-' character
413 0           token->length = 1;
414 0           token->begin = begin + 1;
415 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
416            
417 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
418            
419 0           return css_size;
420             }
421              
422 0           size_t mycss_tokenizer_end_state_less_than_sign_minus_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
423             {
424 0           size_t begin = token->begin;
425            
426             // '<' character
427 0           token->length = 1;
428 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
429            
430 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
431            
432             // and '-' character
433 0           token->length = 1;
434 0           token->begin = begin + 1;
435 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
436            
437 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
438            
439             // and '-' character
440 0           token->length = 1;
441 0           token->begin = begin + 2;
442 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
443            
444 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
445 0           return css_size;
446             }
447              
448             /////////////////////////////////////////////////////////
449             //// U+0040 COMMERCIAL AT (@)
450             ////
451             /////////////////////////////////////////////////////////
452 0           size_t mycss_tokenizer_end_state_commercial_at(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
453             {
454 0           token->length = 1;
455 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
456            
457 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
458 0           return css_size;
459             }
460              
461 0           size_t mycss_tokenizer_end_state_commercial_at_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
462             {
463 0           size_t begin = token->begin;
464            
465             // '@' character
466 0           token->length = 1;
467 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
468            
469 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
470            
471             // and '-' character
472 0           token->length = 1;
473 0           token->begin = begin + 1;
474 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
475            
476 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
477 0           return css_size;
478             }
479              
480 0           size_t mycss_tokenizer_end_state_commercial_at_minus_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
481             {
482 0           size_t begin = token->begin;
483            
484             // '@' character
485 0           token->length = 1;
486 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
487            
488 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
489            
490             // and '-' character
491 0           token->length = 1;
492 0           token->begin = begin + 1;
493 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
494            
495 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
496            
497             // and '\' character
498 0           token->length = 1;
499 0           token->begin = begin + 2;
500 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
501            
502 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
503 0           return css_size;
504             }
505              
506 0           size_t mycss_tokenizer_end_state_commercial_at_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
507             {
508 0           size_t begin = token->begin;
509            
510             // '@' character
511 0           token->length = 1;
512 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
513            
514 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
515            
516             // and '\' character
517 0           token->length = 1;
518 0           token->begin = begin + 1;
519 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
520            
521 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
522 0           return css_size;
523             }
524              
525 0           size_t mycss_tokenizer_end_state_commercial_at_back(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
526             {
527 0           token->type = MyCSS_TOKEN_TYPE_AT_KEYWORD;
528            
529 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
530 0           return css_size;
531             }
532              
533             /////////////////////////////////////////////////////////
534             //// U+005B LEFT SQUARE BRACKET ([)
535             ////
536             /////////////////////////////////////////////////////////
537 0           size_t mycss_tokenizer_end_state_left_square_bracket(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
538             {
539 0           token->length = 1;
540 0           token->type = MyCSS_TOKEN_TYPE_LEFT_SQUARE_BRACKET;
541            
542 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
543 0           return css_size;
544             }
545              
546             /////////////////////////////////////////////////////////
547             //// U+005C REVERSE SOLIDUS (\)
548             ////
549             /////////////////////////////////////////////////////////
550 0           size_t mycss_tokenizer_end_state_reverse_solidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
551             {
552 0           token->length = 1;
553 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
554            
555 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
556 0           return css_size;
557             }
558              
559             /////////////////////////////////////////////////////////
560             //// U+005D RIGHT SQUARE BRACKET (])
561             ////
562             /////////////////////////////////////////////////////////
563 9           size_t mycss_tokenizer_end_state_right_square_bracket(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
564             {
565 9           token->length = 1;
566 9           token->type = MyCSS_TOKEN_TYPE_RIGHT_SQUARE_BRACKET;
567            
568 9 50         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
569 9           return css_size;
570             }
571              
572             /////////////////////////////////////////////////////////
573             //// U+005E CIRCUMFLEX ACCENT (^)
574             ////
575             /////////////////////////////////////////////////////////
576 0           size_t mycss_tokenizer_end_state_circumflex_accent(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
577             {
578 0           token->length = 1;
579 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
580            
581 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
582 0           return css_size;
583             }
584              
585             /////////////////////////////////////////////////////////
586             //// U+007B LEFT CURLY BRACKET ({)
587             ////
588             /////////////////////////////////////////////////////////
589 0           size_t mycss_tokenizer_end_state_left_curly_bracket(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
590             {
591 0           token->length = 1;
592 0           token->type = MyCSS_TOKEN_TYPE_LEFT_CURLY_BRACKET;
593            
594 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
595 0           return css_size;
596             }
597              
598             /////////////////////////////////////////////////////////
599             //// U+007D RIGHT CURLY BRACKET (})
600             ////
601             /////////////////////////////////////////////////////////
602 0           size_t mycss_tokenizer_end_state_right_curly_bracket(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
603             {
604 0           token->length = 1;
605 0           token->type = MyCSS_TOKEN_TYPE_RIGHT_CURLY_BRACKET;
606            
607 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
608 0           return css_size;
609             }
610              
611             /////////////////////////////////////////////////////////
612             //// Digit
613             ////
614             /////////////////////////////////////////////////////////
615 0           size_t mycss_tokenizer_end_state_digit(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
616             {
617 0           token->length = 1;
618 0           token->type = MyCSS_TOKEN_TYPE_NUMBER;
619            
620 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
621 0           return css_size;
622             }
623              
624             /////////////////////////////////////////////////////////
625             //// U+0055 LATIN CAPITAL LETTER U (U) || U+0075 LATIN SMALL LETTER U (u)
626             ////
627             /////////////////////////////////////////////////////////
628 0           size_t mycss_tokenizer_end_state_letter_u(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
629             {
630 0           token->length = 1;
631 0           token->type = MyCSS_TOKEN_TYPE_IDENT;
632            
633 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
634 0           return css_size;
635             }
636              
637 0           size_t mycss_tokenizer_end_state_letter_u_next(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
638             {
639 0           size_t begin = token->begin;
640            
641             // 'u' or 'U' character
642 0           token->length = 1;
643 0           token->type = MyCSS_TOKEN_TYPE_IDENT;
644            
645 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
646            
647             // and '+' character
648 0           token->length = 1;
649 0           token->begin = begin + 1;
650 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
651            
652 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
653 0           return css_size;
654             }
655              
656             /////////////////////////////////////////////////////////
657             //// name-start code point
658             ////
659             /////////////////////////////////////////////////////////
660 8           size_t mycss_tokenizer_end_state_name_start_code_point(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
661             {
662 8           token->length = 1;
663 8           token->type = MyCSS_TOKEN_TYPE_IDENT;
664            
665 8 50         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
666 8           return css_size;
667             }
668              
669             /////////////////////////////////////////////////////////
670             //// U+007C VERTICAL LINE (|)
671             ////
672             /////////////////////////////////////////////////////////
673 0           size_t mycss_tokenizer_end_state_vertical_line(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
674             {
675 0           token->length = 1;
676 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
677            
678 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
679 0           return css_size;
680             }
681              
682             /////////////////////////////////////////////////////////
683             //// U+007E TILDE (~)
684             ////
685             /////////////////////////////////////////////////////////
686 0           size_t mycss_tokenizer_end_state_tilde(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
687             {
688 0           token->length = 1;
689 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
690            
691 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
692 0           return css_size;
693             }
694              
695             /////////////////////////////////////////////////////////
696             //// anything else
697             ////
698             /////////////////////////////////////////////////////////
699 0           size_t mycss_tokenizer_end_state_delim_single_code_point(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
700             {
701 0           token->length = css_offset - token->begin;
702 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
703            
704 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
705 0           return css_size;
706             }
707              
708              
709             /////////////////////////////////////////////////////////
710             //// Global
711              
712             /////////////////////////////////////////////////////////
713             //// Global back
714             ////
715             /////////////////////////////////////////////////////////
716 0           size_t mycss_tokenizer_end_global_back(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
717             {
718 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
719 0           return css_size;
720             }
721              
722             /////////////////////////////////////////////////////////
723             //// Consume a numeric
724             ////
725             /////////////////////////////////////////////////////////
726 0           size_t mycss_tokenizer_end_global_state_numeric(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
727             {
728 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
729 0           token->type = MyCSS_TOKEN_TYPE_NUMBER;
730            
731 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
732 0           return css_size;
733             }
734              
735 0           size_t mycss_tokenizer_end_global_state_numeric_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
736             {
737             // numbers
738 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 1;
739 0           token->type = MyCSS_TOKEN_TYPE_NUMBER;
740            
741 0           size_t begin = token->begin + token->length;
742            
743 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
744            
745             // and '-' character
746 0           token->length = 1;
747 0           token->begin = begin;
748 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
749            
750 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
751 0           return css_size;
752             }
753              
754 0           size_t mycss_tokenizer_end_global_state_numeric_minus_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
755             {
756             // numbers
757 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 2;
758 0           token->type = MyCSS_TOKEN_TYPE_NUMBER;
759            
760 0           size_t begin = token->begin + token->length;
761            
762 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
763            
764             // and '-' character
765 0           token->length = 1;
766 0           token->begin = begin;
767 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
768            
769 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
770            
771             // and '\' character
772 0           token->length = 1;
773 0           token->begin = begin + 1;
774 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
775            
776 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
777 0           return css_size;
778             }
779              
780 0           size_t mycss_tokenizer_end_global_state_numeric_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
781             {
782             // numbers
783 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 1;
784 0           token->type = MyCSS_TOKEN_TYPE_NUMBER;
785            
786 0           size_t begin = token->begin + token->length;
787            
788 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
789            
790             // and '\' character
791 0           token->length = 1;
792 0           token->begin = begin;
793 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
794            
795 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
796 0           return css_size;
797             }
798              
799             /////////////////////////////////////////////////////////
800             //// Consume a number
801             ////
802             /////////////////////////////////////////////////////////
803 0           size_t mycss_tokenizer_end_global_state_number_digit(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
804             {
805 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
806 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
807            
808 0           return css_size;
809             }
810              
811 0           size_t mycss_tokenizer_end_global_state_number_dot(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
812             {
813 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 1;
814 0           size_t begin = token->begin + token->length;
815            
816 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
817            
818             // '.' character
819 0           token->length = 1;
820 0           token->begin = begin;
821 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
822            
823 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
824 0           return css_size;
825             }
826              
827 0           size_t mycss_tokenizer_end_global_state_number_decimal(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
828             {
829 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
830 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
831            
832 0           return css_size;
833             }
834              
835 0           size_t mycss_tokenizer_end_global_state_number_e(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
836             {
837 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 1;
838 0           size_t begin = token->begin + token->length;
839            
840 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
841            
842             // 'e' or 'E' character
843 0           token->length = 1;
844 0           token->begin = begin;
845 0           token->type = MyCSS_TOKEN_TYPE_IDENT;
846            
847 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
848 0           return css_size;
849             }
850              
851 0           size_t mycss_tokenizer_end_global_state_number_e_plus_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
852             {
853 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 2;
854 0           size_t begin = token->begin + token->length;
855            
856 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
857            
858             // 'e' or 'E' character
859 0           token->length = 1;
860 0           token->begin = begin;
861 0           token->type = MyCSS_TOKEN_TYPE_IDENT;
862            
863 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
864            
865             // and '+' or '-' character
866 0           token->length = 1;
867 0           token->begin = begin + 1;
868 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
869            
870 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
871 0           return css_size;
872             }
873              
874 0           size_t mycss_tokenizer_end_global_state_number_e_decimal(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
875             {
876 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
877 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
878            
879 0           return css_size;
880             }
881              
882             /////////////////////////////////////////////////////////
883             //// Consume a url token
884             ////
885             /////////////////////////////////////////////////////////
886 0           size_t mycss_tokenizer_end_global_state_url(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
887             {
888 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
889 0           token->type = MyCSS_TOKEN_TYPE_BAD_URL;
890            
891 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
892 0           return css_size;
893             }
894              
895 0           size_t mycss_tokenizer_end_global_state_url_string_back(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
896             {
897 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
898            
899 0 0         if(token->type == MyCSS_TOKEN_TYPE_BAD_STRING)
900 0           token->type = MyCSS_TOKEN_TYPE_BAD_URL;
901             else
902 0           token->type = MyCSS_TOKEN_TYPE_URL;
903            
904 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
905 0           return css_size;
906             }
907              
908 0           size_t mycss_tokenizer_end_global_state_url_after(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
909             {
910 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
911 0           token->type = MyCSS_TOKEN_TYPE_URL;
912            
913 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
914 0           return css_size;
915             }
916              
917 0           size_t mycss_tokenizer_end_global_state_url_after_whitespace(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
918             {
919 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
920 0           token->type = MyCSS_TOKEN_TYPE_URL;
921            
922 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
923 0           return css_size;
924             }
925              
926 0           size_t mycss_tokenizer_end_global_state_url_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
927             {
928 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 1;
929 0           token->type = MyCSS_TOKEN_TYPE_BAD_URL;
930            
931 0           size_t begin = token->begin + token->length;
932            
933 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
934            
935             // '\' character
936 0           token->length = 1;
937 0           token->begin = begin;
938 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
939            
940 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
941 0           return css_size;
942             }
943              
944 0           size_t mycss_tokenizer_end_global_state_bad_url(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
945             {
946 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
947 0           token->type = MyCSS_TOKEN_TYPE_BAD_URL;
948            
949 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
950 0           return css_size;
951             }
952              
953             /////////////////////////////////////////////////////////
954             //// Consume a string token
955             ////
956             /////////////////////////////////////////////////////////
957 0           size_t mycss_tokenizer_end_global_state_string_double_quoted(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
958             {
959 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
960 0           token->type = MyCSS_TOKEN_TYPE_BAD_STRING;
961            
962 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
963            
964 0           return css_size;
965             }
966              
967 0           size_t mycss_tokenizer_end_global_state_string_double_quoted_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
968             {
969 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
970 0           token->type = MyCSS_TOKEN_TYPE_BAD_STRING;
971            
972 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
973            
974 0           return css_size;
975             }
976              
977 0           size_t mycss_tokenizer_end_global_state_string_single_quoted(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
978             {
979 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
980 0           token->type = MyCSS_TOKEN_TYPE_BAD_STRING;
981            
982 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
983            
984 0           return css_size;
985             }
986              
987 0           size_t mycss_tokenizer_end_global_state_string_single_quoted_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
988             {
989 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
990 0           token->type = MyCSS_TOKEN_TYPE_BAD_STRING;
991            
992 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
993            
994 0           return css_size;
995             }
996              
997             /////////////////////////////////////////////////////////
998             //// Consume an ident-like token
999             ////
1000             /////////////////////////////////////////////////////////
1001 70           size_t mycss_tokenizer_end_global_state_ident(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
1002             {
1003 70           token->type = MyCSS_TOKEN_TYPE_IDENT;
1004            
1005 70 50         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
1006 70           return css_size;
1007             }
1008              
1009             /////////////////////////////////////////////////////////
1010             //// Consume a name
1011             ////
1012             /////////////////////////////////////////////////////////
1013 109           size_t mycss_tokenizer_end_global_state_name(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
1014             {
1015 109           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
1016            
1017 109           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
1018            
1019 109           return css_size;
1020             }
1021              
1022 0           size_t mycss_tokenizer_end_global_state_name_rsolidus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
1023             {
1024 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 1;
1025 0           size_t begin = token->begin + token->length;
1026            
1027 0           mycss_tokenizer_end_run_state_single(entry, entry->state_back, css, css_offset, css_size);
1028            
1029             // '\' character
1030 0           token->length = 1;
1031 0           token->begin = begin;
1032 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
1033            
1034 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
1035 0           return css_size;
1036             }
1037              
1038             /////////////////////////////////////////////////////////
1039             //// Consume a unicode-range token
1040             ////
1041             /////////////////////////////////////////////////////////
1042 0           size_t mycss_tokenizer_end_global_state_unicode_range_before(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
1043             {
1044 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
1045 0           token->type = MyCSS_TOKEN_TYPE_UNICODE_RANGE;
1046            
1047 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
1048 0           return css_size;
1049             }
1050              
1051 0           size_t mycss_tokenizer_end_global_state_unicode_range(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
1052             {
1053 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
1054 0           token->type = MyCSS_TOKEN_TYPE_UNICODE_RANGE;
1055            
1056 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
1057 0           return css_size;
1058             }
1059              
1060 0           size_t mycss_tokenizer_end_global_state_unicode_range_question(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
1061             {
1062 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
1063 0           token->type = MyCSS_TOKEN_TYPE_UNICODE_RANGE;
1064            
1065 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
1066 0           return css_size;
1067             }
1068              
1069 0           size_t mycss_tokenizer_end_global_state_unicode_range_minus(mycss_entry_t* entry, mycss_token_t* token, const char* css, size_t css_offset, size_t css_size)
1070             {
1071 0 0         if(entry->help_counter == 0) {
1072 0           token->length = ((entry->current_buffer->offset + css_offset) - token->begin) - 1;
1073             }
1074             else {
1075 0           token->length = (entry->current_buffer->offset + css_offset) - token->begin;
1076             }
1077            
1078 0           token->type = MyCSS_TOKEN_TYPE_UNICODE_RANGE;
1079 0           size_t begin = token->begin + token->length;
1080            
1081 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
1082            
1083             // character
1084 0           token->length = 1;
1085 0           token->begin = begin;
1086 0           token->type = MyCSS_TOKEN_TYPE_DELIM;
1087            
1088 0 0         MyCSS_TOKEN_READY_CALLBACK_FUNCTION(entry, token);
1089 0           return css_offset;
1090             }
1091              
1092              
1093