21 void *ctx,
bool failed);
41 .state = lxb_css_syntax_anb_state,
44 .end = lxb_css_syntax_anb_end
70 &lxb_css_syntax_anb_pipe, &anb,
103 (
void) lxb_css_syntax_anb_fail(parser, token);
112 void *ctx,
bool failed)
123 static const char anb[] =
"An+B";
138 switch (token->
type) {
151 return lxb_css_syntax_anb_state_ident(parser, token, anb);
204 return lxb_css_syntax_anb_state_ident_data(parser, anb, token,
data,
end);
230 if (c ==
'n' || c ==
'N') {
240 if (c !=
'n' && c !=
'N') {
246 else if (length ==
sizeof(odd) - 1
255 else if (length ==
sizeof(even) - 1
268 return lxb_css_syntax_anb_state_ident_data(parser, anb, token,
data,
end);
288 switch (token->
type) {
394 return cb(odd,
sizeof(odd) - 1, ctx);
398 return cb(even,
sizeof(even) - 1, ctx);
409 else if (anb->
a == -1) {
474 if (out_length !=
NULL) {
482 if (out_length !=
NULL) {
lxb_status_t lxb_css_syntax_anb_handler(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, lxb_css_syntax_anb_t *anb)
lxb_css_syntax_anb_t lxb_css_syntax_anb_parse(lxb_css_parser_t *parser, const lxb_char_t *data, size_t length)
lxb_char_t * lxb_css_syntax_anb_serialize_char(lxb_css_syntax_anb_t *anb, size_t *out_length)
lxb_status_t lxb_css_syntax_anb_serialize(lxb_css_syntax_anb_t *anb, lexbor_serialize_cb_f cb, void *ctx)
long lexbor_conv_data_to_long(const lxb_char_t **data, size_t length)
size_t lexbor_conv_float_to_data(double num, lxb_char_t *buf, size_t len)
lxb_inline long lexbor_conv_double_to_long(double number)
lxb_status_t(* lexbor_serialize_cb_f)(const lxb_char_t *data, size_t len, void *ctx)
@ LXB_STATUS_ERROR_SMALL_BUFFER
@ LXB_STATUS_ERROR_WRONG_ARGS
@ LXB_STATUS_ERROR_UNEXPECTED_DATA
struct lxb_css_syntax_token lxb_css_syntax_token_t
struct lxb_css_parser lxb_css_parser_t
bool lxb_css_parser_success(lxb_css_parser_t *parser)
void lxb_css_parser_clean(lxb_css_parser_t *parser)
bool lxb_css_parser_memory_fail(lxb_css_parser_t *parser)
#define lxb_css_parser_token_status_m(parser, token)
lxb_inline void lxb_css_parser_buffer_set(lxb_css_parser_t *parser, const lxb_char_t *data, size_t length)
#define lxb_css_parser_token_status_wo_ws_m(parser, token)
bool lxb_css_state_failed(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx)
lxb_css_syntax_rule_t * lxb_css_syntax_parser_pipe_push(lxb_css_parser_t *parser, lxb_css_parser_state_f state_back, const lxb_css_syntax_cb_pipe_t *pipe, void *ctx, lxb_css_syntax_token_type_t stop)
lxb_status_t lxb_css_syntax_parser_run(lxb_css_parser_t *parser)
const lxb_css_syntax_token_t * lxb_css_syntax_parser_token(lxb_css_parser_t *parser)
void lxb_css_syntax_parser_consume(lxb_css_parser_t *parser)
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)
#define lxb_css_syntax_token_number(token)
lxb_css_syntax_token_string_t lxb_css_syntax_token_ident_t
#define lxb_css_syntax_token_ident(token)
@ LXB_CSS_SYNTAX_TOKEN__EOF
@ LXB_CSS_SYNTAX_TOKEN_NUMBER
@ LXB_CSS_SYNTAX_TOKEN_DELIM
@ LXB_CSS_SYNTAX_TOKEN_UNDEF
@ LXB_CSS_SYNTAX_TOKEN_DIMENSION
@ LXB_CSS_SYNTAX_TOKEN_IDENT
@ LXB_CSS_SYNTAX_TOKEN_WHITESPACE
@ LXB_CSS_SYNTAX_TOKEN__END
#define lxb_css_syntax_token_dimension(token)
#define lxb_css_syntax_token_delim(token)
#define lxb_css_syntax_token_dimension_string(token)
memset(ptr, 0, type->size)
zend_ffi_ctype_name_buf buf
LXB_API void * lexbor_free(void *dst)
LXB_API void * lexbor_malloc(size_t size)
unsigned const char * end
lxb_status_t lexbor_serialize_length_cb(const lxb_char_t *data, size_t length, void *ctx)
lxb_status_t lexbor_serialize_copy_cb(const lxb_char_t *data, size_t length, void *ctx)
bool lexbor_str_data_ncasecmp(const lxb_char_t *first, const lxb_char_t *sec, size_t size)
lxb_css_parser_stage_t stage
lxb_css_syntax_tokenizer_t * tkz
lxb_css_syntax_token_type_t type
lxb_css_syntax_cb_base_t lxb_css_syntax_cb_pipe_t
struct lxb_css_syntax_rule lxb_css_syntax_rule_t
unsigned int lxb_status_t
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)