php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
token.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018-2020 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7#ifndef LEXBOR_CSS_SYNTAX_TOKEN_H
8#define LEXBOR_CSS_SYNTAX_TOKEN_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/str.h"
15
16#include "lexbor/css/log.h"
18
19
20#define lxb_css_syntax_token_base(token) ((lxb_css_syntax_token_base_t *) (token))
21#define lxb_css_syntax_token_ident(token) ((lxb_css_syntax_token_ident_t *) (token))
22#define lxb_css_syntax_token_function(token) ((lxb_css_syntax_token_function_t *) (token))
23#define lxb_css_syntax_token_at_keyword(token) ((lxb_css_syntax_token_at_keyword_t *) (token))
24#define lxb_css_syntax_token_hash(token) ((lxb_css_syntax_token_hash_t *) (token))
25#define lxb_css_syntax_token_string(token) ((lxb_css_syntax_token_string_t *) (token))
26#define lxb_css_syntax_token_bad_string(token) ((lxb_css_syntax_token_bad_string_t *) (token))
27#define lxb_css_syntax_token_url(token) ((lxb_css_syntax_token_url_t *) (token))
28#define lxb_css_syntax_token_bad_url(token) ((lxb_css_syntax_token_bad_url_t *) (token))
29#define lxb_css_syntax_token_delim(token) ((lxb_css_syntax_token_delim_t *) (token))
30#define lxb_css_syntax_token_delim_char(token) (((lxb_css_syntax_token_delim_t *) (token))->character)
31#define lxb_css_syntax_token_number(token) ((lxb_css_syntax_token_number_t *) (token))
32#define lxb_css_syntax_token_percentage(token) ((lxb_css_syntax_token_percentage_t *) (token))
33#define lxb_css_syntax_token_dimension(token) ((lxb_css_syntax_token_dimension_t *) (token))
34#define lxb_css_syntax_token_dimension_string(token) (&((lxb_css_syntax_token_dimension_t *) (token))->str)
35#define lxb_css_syntax_token_whitespace(token) ((lxb_css_syntax_token_whitespace_t *) (token))
36#define lxb_css_syntax_token_cdo(token) ((lxb_css_syntax_token_cdo_t *) (token))
37#define lxb_css_syntax_token_cdc(token) ((lxb_css_syntax_token_cdc_t *) (token))
38#define lxb_css_syntax_token_colon(token) ((lxb_css_syntax_token_colon_t *) (token))
39#define lxb_css_syntax_token_semicolon(token) ((lxb_css_syntax_token_semicolon_t *) (token))
40#define lxb_css_syntax_token_comma(token) ((lxb_css_syntax_token_comma_t *) (token))
41#define lxb_css_syntax_token_ls_bracket(token) ((lxb_css_syntax_token_ls_bracket_t *) (token))
42#define lxb_css_syntax_token_rs_bracket(token) ((lxb_css_syntax_token_rs_bracket_t *) (token))
43#define lxb_css_syntax_token_l_parenthesis(token) ((lxb_css_syntax_token_l_parenthesis_t *) (token))
44#define lxb_css_syntax_token_r_parenthesis(token) ((lxb_css_syntax_token_r_parenthesis_t *) (token))
45#define lxb_css_syntax_token_lc_bracket(token) ((lxb_css_syntax_token_lc_bracket_t *) (token))
46#define lxb_css_syntax_token_rc_bracket(token) ((lxb_css_syntax_token_rc_bracket_t *) (token))
47#define lxb_css_syntax_token_comment(token) ((lxb_css_syntax_token_comment_t *) (token))
48
49
51
52typedef const lxb_char_t *
53(*lxb_css_syntax_token_data_cb_f)(const lxb_char_t *begin, const lxb_char_t *end,
54 lexbor_str_t *str, lexbor_mraw_t *mraw,
56
58(*lxb_css_syntax_token_cb_f)(const lxb_char_t *data, size_t len, void *ctx);
59
67
107
110 size_t length;
111
112 uintptr_t user_id;
113}
115
124
132
138
144
167
196
197
200
203
204LXB_API void
206
207LXB_API void
209
212 lexbor_str_t *str, lexbor_mraw_t *mraw);
213
217
220
221LXB_API void
224
225LXB_API const lxb_char_t *
227
229lxb_css_syntax_token_type_id_by_name(const lxb_char_t *type_name, size_t len);
230
233 lxb_css_syntax_token_cb_f cb, void *ctx);
234
237 lexbor_str_t *str, lexbor_mraw_t *mraw);
238
241 size_t *out_length);
242
245 const lxb_css_syntax_token_t *token,
246 const char *module_name);
247
248/*
249 * Inline functions
250 */
256
257lxb_inline void
262
269
275
278{
279 return token->type;
280}
281
284{
286
287 token = lxb_css_syntax_token(tkz);
288 if (token == NULL) {
289 return NULL;
290 }
291
294 token = lxb_css_syntax_token(tkz);
295 }
296
297 return token;
298}
299
300/*
301 * No inline functions for ABI.
302 */
305
306LXB_API void
308
311 lexbor_dobject_t *dobj);
312
313LXB_API const lxb_char_t *
315
318
319
320#ifdef __cplusplus
321} /* extern "C" */
322#endif
323
324#endif /* LEXBOR_CSS_SYNTAX_TOKEN_H */
size_t len
Definition apprentice.c:174
char * cb
Definition assert.c:26
count(Countable|array $value, int $mode=COUNT_NORMAL)
struct lxb_css_syntax_token lxb_css_syntax_token_t
Definition base.h:46
struct lxb_css_syntax_tokenizer lxb_css_syntax_tokenizer_t
Definition base.h:45
struct lxb_css_parser lxb_css_parser_t
Definition base.h:41
#define lxb_css_syntax_token_number(token)
Definition token.h:31
LXB_API lxb_status_t lxb_css_syntax_token_string_make(lxb_css_syntax_tokenizer_t *tkz, lxb_css_syntax_token_t *token)
Definition token.c:128
LXB_API lxb_css_syntax_token_type_t lxb_css_syntax_token_type_noi(lxb_css_syntax_token_t *token)
Definition token.c:645
lxb_css_syntax_token_base_t lxb_css_syntax_token_r_parenthesis_t
Definition token.h:162
lxb_css_syntax_token_string_t lxb_css_syntax_token_ident_t
Definition token.h:145
LXB_API lxb_css_syntax_token_type_t lxb_css_syntax_token_type_id_by_name(const lxb_char_t *type_name, size_t len)
Definition token.c:270
lxb_css_syntax_token_base_t lxb_css_syntax_token_cdc_t
Definition token.h:155
LXB_API lxb_char_t * lxb_css_syntax_token_serialize_char(const lxb_css_syntax_token_t *token, size_t *out_length)
Definition token.c:548
lxb_inline lxb_css_syntax_token_type_t lxb_css_syntax_token_type(const lxb_css_syntax_token_t *token)
Definition token.h:277
struct lxb_css_syntax_token_dimension lxb_css_syntax_token_dimension_t
LXB_API void lxb_css_syntax_token_clean_noi(lxb_css_syntax_token_t *token)
Definition token.c:626
struct lxb_css_syntax_token_number lxb_css_syntax_token_number_t
struct lxb_css_syntax_token_data lxb_css_syntax_token_data_t
Definition token.h:50
lxb_inline lxb_css_syntax_token_t * lxb_css_syntax_token_wo_ws(lxb_css_syntax_tokenizer_t *tkz)
Definition token.h:283
lxb_inline lxb_css_syntax_token_t * lxb_css_syntax_token_create(lexbor_dobject_t *dobj)
Definition token.h:252
LXB_API lxb_status_t lxb_css_syntax_token_string_dup(lxb_css_syntax_token_string_t *token, lexbor_str_t *str, lexbor_mraw_t *mraw)
Definition token.c:96
lxb_css_syntax_token_string_t lxb_css_syntax_token_at_keyword_t
Definition token.h:147
struct lxb_css_syntax_token_delim lxb_css_syntax_token_delim_t
lxb_css_syntax_token_base_t lxb_css_syntax_token_comma_t
Definition token.h:158
lxb_css_syntax_token_string_t lxb_css_syntax_token_whitespace_t
Definition token.h:153
struct lxb_css_syntax_token_base lxb_css_syntax_token_base_t
lxb_inline lxb_css_syntax_token_t * lxb_css_syntax_token_destroy(lxb_css_syntax_token_t *token, lexbor_dobject_t *dobj)
Definition token.h:264
LXB_API lxb_css_syntax_token_t * lxb_css_syntax_token_destroy_noi(lxb_css_syntax_token_t *token, lexbor_dobject_t *dobj)
Definition token.c:632
LXB_API lxb_css_log_message_t * lxb_css_syntax_token_error(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, const char *module_name)
Definition token.c:594
#define lxb_css_syntax_token_string(token)
Definition token.h:25
LXB_API lxb_status_t lxb_css_syntax_token_serialize_str(const lxb_css_syntax_token_t *token, lexbor_str_t *str, lexbor_mraw_t *mraw)
Definition token.c:513
lxb_status_t(* lxb_css_syntax_token_cb_f)(const lxb_char_t *data, size_t len, void *ctx)
Definition token.h:58
lxb_css_syntax_token_base_t lxb_css_syntax_token_cdo_t
Definition token.h:154
#define lxb_css_syntax_token_base(token)
Definition token.h:20
lxb_css_syntax_token_base_t lxb_css_syntax_token_terminated_t
Definition token.h:166
lxb_css_syntax_token_base_t lxb_css_syntax_token_colon_t
Definition token.h:156
LXB_API const lxb_char_t * lxb_css_syntax_token_type_name_noi(lxb_css_syntax_token_t *token)
Definition token.c:639
lxb_css_syntax_token_string_t lxb_css_syntax_token_bad_url_t
Definition token.h:151
lxb_css_syntax_token_string_t lxb_css_syntax_token_hash_t
Definition token.h:148
lxb_css_syntax_token_string_t lxb_css_syntax_token_bad_string_t
Definition token.h:149
lxb_css_syntax_token_base_t lxb_css_syntax_token_lc_bracket_t
Definition token.h:163
lxb_css_syntax_token_base_t lxb_css_syntax_token_ls_bracket_t
Definition token.h:159
LXB_API lxb_css_syntax_token_t * lxb_css_syntax_token(lxb_css_syntax_tokenizer_t *tkz)
Definition token.c:45
LXB_API lxb_css_syntax_token_t * lxb_css_syntax_token_cached_create(lxb_css_syntax_tokenizer_t *tkz)
Definition token.c:165
lxb_css_syntax_token_base_t lxb_css_syntax_token_rc_bracket_t
Definition token.h:164
LXB_API lxb_css_syntax_token_t * lxb_css_syntax_token_create_noi(lexbor_dobject_t *dobj)
Definition token.c:620
lxb_inline const lxb_char_t * lxb_css_syntax_token_type_name(const lxb_css_syntax_token_t *token)
Definition token.h:271
lxb_css_syntax_token_type_t
Definition token.h:68
@ LXB_CSS_SYNTAX_TOKEN_FUNCTION
Definition token.h:73
@ LXB_CSS_SYNTAX_TOKEN_LS_BRACKET
Definition token.h:95
@ LXB_CSS_SYNTAX_TOKEN_BAD_URL
Definition token.h:79
@ LXB_CSS_SYNTAX_TOKEN_RC_BRACKET
Definition token.h:100
@ LXB_CSS_SYNTAX_TOKEN__EOF
Definition token.h:101
@ LXB_CSS_SYNTAX_TOKEN_NUMBER
Definition token.h:88
@ LXB_CSS_SYNTAX_TOKEN_BAD_STRING
Definition token.h:77
@ LXB_CSS_SYNTAX_TOKEN__LAST_ENTRY
Definition token.h:104
@ LXB_CSS_SYNTAX_TOKEN_CDO
Definition token.h:90
@ LXB_CSS_SYNTAX_TOKEN_COMMA
Definition token.h:94
@ LXB_CSS_SYNTAX_TOKEN_CDC
Definition token.h:91
@ LXB_CSS_SYNTAX_TOKEN_DELIM
Definition token.h:87
@ LXB_CSS_SYNTAX_TOKEN_COLON
Definition token.h:92
@ LXB_CSS_SYNTAX_TOKEN_UNDEF
Definition token.h:69
@ LXB_CSS_SYNTAX_TOKEN_DIMENSION
Definition token.h:84
@ LXB_CSS_SYNTAX_TOKEN__TERMINATED
Definition token.h:102
@ LXB_CSS_SYNTAX_TOKEN_RS_BRACKET
Definition token.h:96
@ LXB_CSS_SYNTAX_TOKEN_AT_KEYWORD
Definition token.h:74
@ LXB_CSS_SYNTAX_TOKEN_STRING
Definition token.h:76
@ LXB_CSS_SYNTAX_TOKEN_URL
Definition token.h:78
@ LXB_CSS_SYNTAX_TOKEN_IDENT
Definition token.h:72
@ LXB_CSS_SYNTAX_TOKEN_WHITESPACE
Definition token.h:81
@ LXB_CSS_SYNTAX_TOKEN_LC_BRACKET
Definition token.h:99
@ LXB_CSS_SYNTAX_TOKEN_L_PARENTHESIS
Definition token.h:97
@ LXB_CSS_SYNTAX_TOKEN_HASH
Definition token.h:75
@ LXB_CSS_SYNTAX_TOKEN_PERCENTAGE
Definition token.h:89
@ LXB_CSS_SYNTAX_TOKEN_COMMENT
Definition token.h:80
@ LXB_CSS_SYNTAX_TOKEN_R_PARENTHESIS
Definition token.h:98
@ LXB_CSS_SYNTAX_TOKEN_SEMICOLON
Definition token.h:93
@ LXB_CSS_SYNTAX_TOKEN__END
Definition token.h:103
lxb_inline void lxb_css_syntax_token_clean(lxb_css_syntax_token_t *token)
Definition token.h:258
lxb_css_syntax_token_base_t lxb_css_syntax_token_semicolon_t
Definition token.h:157
#define lxb_css_syntax_token_dimension(token)
Definition token.h:33
lxb_css_syntax_token_string_t lxb_css_syntax_token_comment_t
Definition token.h:165
LXB_API void lxb_css_syntax_token_consume_n(lxb_css_syntax_tokenizer_t *tkz, unsigned count)
Definition token.c:87
#define lxb_css_syntax_token_delim(token)
Definition token.h:29
lxb_css_syntax_token_base_t lxb_css_syntax_token_rs_bracket_t
Definition token.h:160
lxb_css_syntax_token_string_t lxb_css_syntax_token_url_t
Definition token.h:150
struct lxb_css_syntax_token_string lxb_css_syntax_token_string_t
LXB_API void lxb_css_syntax_token_consume(lxb_css_syntax_tokenizer_t *tkz)
Definition token.c:63
LXB_API void lxb_css_syntax_token_string_free(lxb_css_syntax_tokenizer_t *tkz, lxb_css_syntax_token_t *token)
Definition token.c:189
const lxb_char_t *(* lxb_css_syntax_token_data_cb_f)(const lxb_char_t *begin, const lxb_char_t *end, lexbor_str_t *str, lexbor_mraw_t *mraw, lxb_css_syntax_token_data_t *td)
Definition token.h:53
lxb_css_syntax_token_string_t lxb_css_syntax_token_function_t
Definition token.h:146
LXB_API const lxb_char_t * lxb_css_syntax_token_type_name_by_id(lxb_css_syntax_token_type_t type)
Definition token.c:207
LXB_API lxb_status_t lxb_css_syntax_token_serialize(const lxb_css_syntax_token_t *token, lxb_css_syntax_token_cb_f cb, void *ctx)
Definition token.c:285
LXB_API lxb_css_syntax_token_t * lxb_css_syntax_token_next(lxb_css_syntax_tokenizer_t *tkz)
Definition token.c:57
lxb_css_syntax_token_number_t lxb_css_syntax_token_percentage_t
Definition token.h:152
lxb_css_syntax_token_base_t lxb_css_syntax_token_l_parenthesis_t
Definition token.h:161
#define LXB_API
Definition def.h:48
void * lexbor_dobject_calloc(lexbor_dobject_t *dobject)
Definition dobject.c:123
void * lexbor_dobject_free(lexbor_dobject_t *dobject, void *data)
Definition dobject.c:135
int begin
Definition eaw_table.h:20
zend_ffi_type * type
Definition ffi.c:3812
memset(ptr, 0, type->size)
#define NULL
Definition gdcache.h:45
unsigned const char * end
Definition php_ffi.h:51
zend_constant * data
const lxb_char_t * begin
Definition token.h:109
lxb_css_syntax_token_data_cb_f cb
Definition token.h:61
lxb_status_t status
Definition token.h:62
lxb_css_syntax_token_base_t base
Definition token.h:140
lxb_css_syntax_token_number_t num
Definition token.h:134
lxb_css_syntax_token_string_t str
Definition token.h:135
lxb_css_syntax_token_base_t base
Definition token.h:117
const lxb_char_t * data
Definition token.h:128
lxb_css_syntax_token_base_t base
Definition token.h:126
lxb_css_syntax_token_type_t type
Definition token.h:192
union lxb_css_syntax_token::lxb_css_syntax_token_u types
uintptr_t offset
Definition token.h:193
unsigned int lxb_status_t
Definition types.h:28
#define lxb_inline
Definition types.h:21
unsigned char lxb_char_t
Definition types.h:27
lxb_css_syntax_token_cdc_t cdc
Definition token.h:181
lxb_css_syntax_token_url_t url
Definition token.h:184
lxb_css_syntax_token_delim_t delim
Definition token.h:178
lxb_css_syntax_token_terminated_t terminated
Definition token.h:188
lxb_css_syntax_token_ident_t ident
Definition token.h:183
lxb_css_syntax_token_number_t number
Definition token.h:172
lxb_css_syntax_token_base_t base
Definition token.h:170
lxb_css_syntax_token_bad_string_t bad_string
Definition token.h:177
lxb_css_syntax_token_bad_url_t bad_url
Definition token.h:185
lxb_css_syntax_token_hash_t hash
Definition token.h:175
lxb_css_syntax_token_whitespace_t whitespace
Definition token.h:187
lxb_css_syntax_token_comment_t comment
Definition token.h:171
lxb_css_syntax_token_dimension_t dimension
Definition token.h:173
lxb_css_syntax_token_l_parenthesis_t lparenthesis
Definition token.h:179
lxb_css_syntax_token_r_parenthesis_t rparenthesis
Definition token.h:180
lxb_css_syntax_token_percentage_t percentage
Definition token.h:174
lxb_css_syntax_token_string_t string
Definition token.h:176
lxb_css_syntax_token_at_keyword_t at_keyword
Definition token.h:186
lxb_css_syntax_token_function_t function
Definition token.h:182