1 /*
2  * Copyright (C) 2020-2021 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 /*
8  * Caution!
9  * This file generated by the script "utils/lexbor/css/selectors/pseudo.py"!
10  * Do not change this file!
11  */
12 
13 
14 #ifndef LXB_CSS_SELECTOS_PSEUDO_RES_H
15 #define LXB_CSS_SELECTOS_PSEUDO_RES_H
16 
17 #include "lexbor/core/shs.h"
18 #include "lexbor/css/selectors/pseudo_const.h"
19 
20 
21 static const lxb_css_selectors_pseudo_data_t lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS__LAST_ENTRY] =
22 {
23     {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS__UNDEF},
24     {(lxb_char_t *) "active", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_ACTIVE},
25     {(lxb_char_t *) "any-link", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_ANY_LINK},
26     {(lxb_char_t *) "blank", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_BLANK},
27     {(lxb_char_t *) "checked", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_CHECKED},
28     {(lxb_char_t *) "current", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_CURRENT},
29     {(lxb_char_t *) "default", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_DEFAULT},
30     {(lxb_char_t *) "disabled", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_DISABLED},
31     {(lxb_char_t *) "empty", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_EMPTY},
32     {(lxb_char_t *) "enabled", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_ENABLED},
33     {(lxb_char_t *) "first-child", 11, LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_CHILD},
34     {(lxb_char_t *) "first-of-type", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_OF_TYPE},
35     {(lxb_char_t *) "focus", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS},
36     {(lxb_char_t *) "focus-visible", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_VISIBLE},
37     {(lxb_char_t *) "focus-within", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_WITHIN},
38     {(lxb_char_t *) "fullscreen", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_FULLSCREEN},
39     {(lxb_char_t *) "future", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUTURE},
40     {(lxb_char_t *) "hover", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_HOVER},
41     {(lxb_char_t *) "in-range", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_IN_RANGE},
42     {(lxb_char_t *) "indeterminate", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_INDETERMINATE},
43     {(lxb_char_t *) "invalid", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_INVALID},
44     {(lxb_char_t *) "last-child", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_CHILD},
45     {(lxb_char_t *) "last-of-type", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_OF_TYPE},
46     {(lxb_char_t *) "link", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_LINK},
47     {(lxb_char_t *) "local-link", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_LOCAL_LINK},
48     {(lxb_char_t *) "only-child", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_CHILD},
49     {(lxb_char_t *) "only-of-type", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_OF_TYPE},
50     {(lxb_char_t *) "optional", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_OPTIONAL},
51     {(lxb_char_t *) "out-of-range", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_OUT_OF_RANGE},
52     {(lxb_char_t *) "past", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_PAST},
53     {(lxb_char_t *) "placeholder-shown", 17, LXB_CSS_SELECTOR_PSEUDO_CLASS_PLACEHOLDER_SHOWN},
54     {(lxb_char_t *) "read-only", 9, LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_ONLY},
55     {(lxb_char_t *) "read-write", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_WRITE},
56     {(lxb_char_t *) "required", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_REQUIRED},
57     {(lxb_char_t *) "root", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_ROOT},
58     {(lxb_char_t *) "scope", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_SCOPE},
59     {(lxb_char_t *) "target", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET},
60     {(lxb_char_t *) "target-within", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET_WITHIN},
61     {(lxb_char_t *) "user-invalid", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_USER_INVALID},
62     {(lxb_char_t *) "valid", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_VALID},
63     {(lxb_char_t *) "visited", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_VISITED},
64     {(lxb_char_t *) "warning", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_WARNING}
65 };
66 
67 static const lxb_css_selectors_pseudo_data_func_t lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION__LAST_ENTRY] =
68 {
69     {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION__UNDEF,
70      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
71      {.state = lxb_css_selectors_state_pseudo_class_function__undef, .block = NULL,
72       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
73     {(lxb_char_t *) "current", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT,
74      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
75      {.state = lxb_css_selectors_state_pseudo_class_function_current, .block = NULL,
76       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
77     {(lxb_char_t *) "dir", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR,
78      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
79      {.state = lxb_css_selectors_state_pseudo_class_function_dir, .block = NULL,
80       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
81     {(lxb_char_t *) "has", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS,
82      false, LXB_CSS_SELECTOR_COMBINATOR_DESCENDANT,
83      {.state = lxb_css_selectors_state_pseudo_class_function_has, .block = NULL,
84       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving_relative}, true, true},
85     {(lxb_char_t *) "is", 2, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS,
86      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
87      {.state = lxb_css_selectors_state_pseudo_class_function_is, .block = NULL,
88       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving}, true, true},
89     {(lxb_char_t *) "lang", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG,
90      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
91      {.state = lxb_css_selectors_state_pseudo_class_function_lang, .block = NULL,
92       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
93     {(lxb_char_t *) "not", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT,
94      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
95      {.state = lxb_css_selectors_state_pseudo_class_function_not, .block = NULL,
96       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
97     {(lxb_char_t *) "nth-child", 9, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD,
98      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
99      {.state = lxb_css_selectors_state_pseudo_class_function_nth_child, .block = NULL,
100       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
101     {(lxb_char_t *) "nth-col", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL,
102      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
103      {.state = lxb_css_selectors_state_pseudo_class_function_nth_col, .block = NULL,
104       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
105     {(lxb_char_t *) "nth-last-child", 14, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD,
106      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
107      {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_child, .block = NULL,
108       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
109     {(lxb_char_t *) "nth-last-col", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL,
110      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
111      {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_col, .block = NULL,
112       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
113     {(lxb_char_t *) "nth-last-of-type", 16, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE,
114      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
115      {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_of_type, .block = NULL,
116       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
117     {(lxb_char_t *) "nth-of-type", 11, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE,
118      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
119      {.state = lxb_css_selectors_state_pseudo_class_function_nth_of_type, .block = NULL,
120       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
121     {(lxb_char_t *) "where", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE,
122      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
123      {.state = lxb_css_selectors_state_pseudo_class_function_where, .block = NULL,
124       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving}, true, true}
125 };
126 
127 static const lxb_css_selectors_pseudo_data_t lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT__LAST_ENTRY] =
128 {
129     {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT__UNDEF},
130     {(lxb_char_t *) "after", 5, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_AFTER},
131     {(lxb_char_t *) "backdrop", 8, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BACKDROP},
132     {(lxb_char_t *) "before", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BEFORE},
133     {(lxb_char_t *) "first-letter", 12, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LETTER},
134     {(lxb_char_t *) "first-line", 10, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LINE},
135     {(lxb_char_t *) "grammar-error", 13, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_GRAMMAR_ERROR},
136     {(lxb_char_t *) "inactive-selection", 18, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_INACTIVE_SELECTION},
137     {(lxb_char_t *) "marker", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_MARKER},
138     {(lxb_char_t *) "placeholder", 11, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_PLACEHOLDER},
139     {(lxb_char_t *) "selection", 9, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SELECTION},
140     {(lxb_char_t *) "spelling-error", 14, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SPELLING_ERROR},
141     {(lxb_char_t *) "target-text", 11, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_TARGET_TEXT}
142 };
143 
144 static const lxb_css_selectors_pseudo_data_func_t lxb_css_selectors_pseudo_data_pseudo_element_function[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FUNCTION__LAST_ENTRY] =
145 {
146     {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FUNCTION__UNDEF,
147      false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
148      {.state = lxb_css_selectors_state_pseudo_element_function__undef, .block = NULL,
149       .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}
150 };
151 
152 static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_shs[79] =
153 {
154     {NULL, NULL, 78, 0},
155     {"focus-visible", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_VISIBLE], 13, 0},
156     {"first-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_OF_TYPE], 13, 1},
157     {"in-range", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_IN_RANGE], 8, 0},
158     {"out-of-range", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_OUT_OF_RANGE], 12, 0},
159     {"read-write", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_WRITE], 10, 0},
160     {"hover", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_HOVER], 5, 3},
161     {"enabled", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ENABLED], 7, 0},
162     {"fullscreen", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FULLSCREEN], 10, 0},
163     {"placeholder-shown", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_PLACEHOLDER_SHOWN], 17, 0},
164     {"target-within", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET_WITHIN], 13, 0},
165     {"indeterminate", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_INDETERMINATE], 13, 0},
166     {"local-link", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LOCAL_LINK], 10, 0},
167     {"user-invalid", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_USER_INVALID], 12, 0},
168     {NULL, NULL, 0, 0},
169     {NULL, NULL, 0, 0},
170     {NULL, NULL, 0, 0},
171     {NULL, NULL, 0, 0},
172     {NULL, NULL, 0, 0},
173     {"past", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_PAST], 4, 0},
174     {NULL, NULL, 0, 0},
175     {NULL, NULL, 0, 0},
176     {"only-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_OF_TYPE], 12, 4},
177     {"only-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_CHILD], 10, 5},
178     {"focus", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS], 5, 7},
179     {NULL, NULL, 0, 0},
180     {"any-link", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ANY_LINK], 8, 0},
181     {NULL, NULL, 0, 0},
182     {"valid", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_VALID], 5, 0},
183     {NULL, NULL, 0, 0},
184     {"visited", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_VISITED], 7, 0},
185     {NULL, NULL, 0, 0},
186     {NULL, NULL, 0, 0},
187     {NULL, NULL, 0, 0},
188     {NULL, NULL, 0, 0},
189     {"root", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ROOT], 4, 8},
190     {NULL, NULL, 0, 0},
191     {"focus-within", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_WITHIN], 12, 0},
192     {"checked", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_CHECKED], 7, 9},
193     {NULL, NULL, 0, 0},
194     {NULL, NULL, 0, 0},
195     {NULL, NULL, 0, 0},
196     {"active", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ACTIVE], 6, 0},
197     {"last-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_OF_TYPE], 12, 0},
198     {NULL, NULL, 0, 0},
199     {"target", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET], 6, 0},
200     {"read-only", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_ONLY], 9, 10},
201     {NULL, NULL, 0, 0},
202     {"first-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_CHILD], 11, 0},
203     {"disabled", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_DISABLED], 8, 0},
204     {NULL, NULL, 0, 0},
205     {"required", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_REQUIRED], 8, 0},
206     {NULL, NULL, 0, 0},
207     {"link", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LINK], 4, 0},
208     {NULL, NULL, 0, 0},
209     {"empty", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_EMPTY], 5, 0},
210     {"invalid", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_INVALID], 7, 0},
211     {NULL, NULL, 0, 0},
212     {NULL, NULL, 0, 0},
213     {"scope", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_SCOPE], 5, 12},
214     {NULL, NULL, 0, 0},
215     {NULL, NULL, 0, 0},
216     {"blank", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_BLANK], 5, 0},
217     {NULL, NULL, 0, 0},
218     {NULL, NULL, 0, 0},
219     {NULL, NULL, 0, 0},
220     {NULL, NULL, 0, 0},
221     {NULL, NULL, 0, 0},
222     {NULL, NULL, 0, 0},
223     {"warning", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_WARNING], 7, 0},
224     {"default", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_DEFAULT], 7, 0},
225     {NULL, NULL, 0, 0},
226     {NULL, NULL, 0, 0},
227     {"future", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUTURE], 6, 0},
228     {"current", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_CURRENT], 7, 0},
229     {"optional", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_OPTIONAL], 8, 0},
230     {NULL, NULL, 0, 0},
231     {"last-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_CHILD], 10, 0},
232     {NULL, NULL, 0, 0}
233 };
234 
235 static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_function_shs[39] =
236 {
237     {NULL, NULL, 38, 0},
238     {NULL, NULL, 0, 0},
239     {"current", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT], 7, 0},
240     {NULL, NULL, 0, 0},
241     {"dir", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR], 3, 0},
242     {NULL, NULL, 0, 0},
243     {NULL, NULL, 0, 0},
244     {NULL, NULL, 0, 0},
245     {"is", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS], 2, 0},
246     {NULL, NULL, 0, 0},
247     {NULL, NULL, 0, 0},
248     {NULL, NULL, 0, 0},
249     {NULL, NULL, 0, 0},
250     {NULL, NULL, 0, 0},
251     {"nth-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD], 9, 0},
252     {NULL, NULL, 0, 0},
253     {NULL, NULL, 0, 0},
254     {NULL, NULL, 0, 0},
255     {NULL, NULL, 0, 0},
256     {"nth-last-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD], 14, 0},
257     {NULL, NULL, 0, 0},
258     {NULL, NULL, 0, 0},
259     {NULL, NULL, 0, 0},
260     {"where", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE], 5, 0},
261     {NULL, NULL, 0, 0},
262     {NULL, NULL, 0, 0},
263     {"nth-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL], 7, 0},
264     {"lang", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG], 4, 0},
265     {"has", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS], 3, 0},
266     {NULL, NULL, 0, 0},
267     {NULL, NULL, 0, 0},
268     {"nth-last-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL], 12, 0},
269     {"nth-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE], 11, 0},
270     {NULL, NULL, 0, 0},
271     {NULL, NULL, 0, 0},
272     {NULL, NULL, 0, 0},
273     {"not", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT], 3, 0},
274     {"nth-last-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE], 16, 0},
275     {NULL, NULL, 0, 0}
276 };
277 
278 static const lexbor_shs_entry_t lxb_css_selectors_pseudo_element_shs[24] =
279 {
280     {NULL, NULL, 23, 0},
281     {NULL, NULL, 0, 0},
282     {"inactive-selection", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_INACTIVE_SELECTION], 18, 0},
283     {"placeholder", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_PLACEHOLDER], 11, 0},
284     {"after", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_AFTER], 5, 0},
285     {"first-letter", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LETTER], 12, 0},
286     {NULL, NULL, 0, 0},
287     {NULL, NULL, 0, 0},
288     {"grammar-error", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_GRAMMAR_ERROR], 13, 0},
289     {"before", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BEFORE], 6, 0},
290     {"selection", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SELECTION], 9, 0},
291     {NULL, NULL, 0, 0},
292     {NULL, NULL, 0, 0},
293     {"target-text", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_TARGET_TEXT], 11, 0},
294     {"first-line", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LINE], 10, 0},
295     {"spelling-error", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SPELLING_ERROR], 14, 0},
296     {"backdrop", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BACKDROP], 8, 0},
297     {"marker", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_MARKER], 6, 0},
298     {NULL, NULL, 0, 0},
299     {NULL, NULL, 0, 0},
300     {NULL, NULL, 0, 0},
301     {NULL, NULL, 0, 0},
302     {NULL, NULL, 0, 0},
303     {NULL, NULL, 0, 0}
304 };
305 
306 static const lexbor_shs_entry_t lxb_css_selectors_pseudo_element_function_shs[6] =
307 {
308     {NULL, NULL, 5, 0},
309     {NULL, NULL, 0, 0},
310     {NULL, NULL, 0, 0},
311     {NULL, NULL, 0, 0},
312     {NULL, NULL, 0, 0},
313     {NULL, NULL, 0, 0}
314 };
315 
316 
317 #endif /* LXB_CSS_SELECTOS_PSEUDO_RES_H */
318