8#ifndef LEXBOR_CSS_PARSER_H
9#define LEXBOR_CSS_PARSER_H
21#define lxb_css_parser_token_m(parser, token) \
23 token = lxb_css_syntax_parser_token(parser); \
24 if (token == NULL) { \
25 return lxb_css_parser_fail((parser), (parser)->tkz->status); \
30#define lxb_css_parser_token_next_m(parser, token) \
32 token = lxb_css_syntax_token_next((parser)->tkz); \
33 if (token == NULL) { \
34 return lxb_css_parser_fail((parser), (parser)->tkz->status); \
39#define lxb_css_parser_token_wo_ws_m(parser, token) \
41 token = lxb_css_syntax_parser_token(parser); \
42 if (token == NULL) { \
43 return lxb_css_parser_fail((parser), (parser)->tkz->status); \
46 if (token->type == LXB_CSS_SYNTAX_TOKEN_WHITESPACE) { \
47 lxb_css_syntax_parser_consume(parser); \
48 token = lxb_css_syntax_parser_token(parser); \
49 if (token == NULL) { \
50 return lxb_css_parser_fail((parser), (parser)->tkz->status); \
56#define lxb_css_parser_token_status_m(parser, token) \
58 if ((token = lxb_css_syntax_parser_token(parser)) == NULL) { \
59 return parser->tkz->status; \
64#define lxb_css_parser_token_status_next_m(parser, token) \
66 token = lxb_css_syntax_token_next((parser)->tkz); \
67 if (token == NULL) { \
68 return parser->tkz->status; \
74#define lxb_css_parser_token_status_wo_ws_m(parser, token) \
76 if ((token = lxb_css_syntax_parser_token(parser)) == NULL) { \
77 return parser->tkz->status; \
80 if (token->type == LXB_CSS_SYNTAX_TOKEN_WHITESPACE) { \
81 lxb_css_syntax_parser_consume(parser); \
82 if ((token = lxb_css_syntax_parser_token(parser)) == NULL) { \
83 return parser->tkz->status; \
89#define lxb_css_parser_string_dup_m(parser, token, _str, mraw) \
91 if (lxb_css_syntax_token_string_dup(lxb_css_syntax_token_string(token),\
92 (_str), (mraw)) != LXB_STATUS_OK) \
94 return lxb_css_parser_fail((parser), \
95 LXB_STATUS_ERROR_MEMORY_ALLOCATION); \
309 if (rules > parser->
rules_begin && rules < parser->rules_end) {
330 if (length !=
NULL) {
385 return parser->
rules;
405 while (!entry->
root) {
@ LXB_STATUS_ERROR_UNEXPECTED_DATA
struct lxb_css_parser_state lxb_css_parser_state_t
struct lxb_css_syntax_token lxb_css_syntax_token_t
bool(* lxb_css_parser_state_f)(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token, void *ctx)
struct lxb_css_memory lxb_css_memory_t
struct lxb_css_syntax_tokenizer lxb_css_syntax_tokenizer_t
struct lxb_css_parser lxb_css_parser_t
lxb_inline void lxb_css_parser_memory_set(lxb_css_parser_t *parser, lxb_css_memory_t *memory)
lxb_inline lxb_css_memory_t * lxb_css_parser_memory(lxb_css_parser_t *parser)
lxb_inline bool lxb_css_parser_status_is_unexpected_data(lxb_css_parser_t *parser)
lxb_status_t lxb_css_parser_memory_fail_status(lxb_css_parser_t *parser)
lxb_inline void lxb_css_parser_set_ok(lxb_css_parser_t *parser)
lxb_inline lxb_css_selectors_t * lxb_css_parser_selectors(lxb_css_parser_t *parser)
lxb_inline lxb_status_t lxb_css_parser_status(lxb_css_parser_t *parser)
LXB_API void lxb_css_parser_erase(lxb_css_parser_t *parser)
LXB_API lxb_css_parser_state_t * lxb_css_parser_states_push(lxb_css_parser_t *parser, lxb_css_parser_state_f state, void *context, bool stop)
LXB_API lxb_status_t lxb_css_parser_types_push(lxb_css_parser_t *parser, lxb_css_syntax_token_type_t type)
LXB_API bool lxb_css_parser_fail(lxb_css_parser_t *parser, lxb_status_t status)
lxb_inline void lxb_css_parser_failed_set(lxb_css_parser_t *parser, bool is)
lxb_inline void lxb_css_parser_states_down(lxb_css_parser_t *parser)
lxb_inline const lxb_css_syntax_at_rule_offset_t * lxb_css_parser_at_rule_offset(lxb_css_parser_t *parser)
@ LXB_CSS_SYNTAX_PARSER_ERROR_EOINFU
@ LXB_CSS_SYNTAX_PARSER_ERROR_EOINSIBL
@ LXB_CSS_SYNTAX_PARSER_ERROR_UNDEF
@ LXB_CSS_SYNTAX_PARSER_ERROR_UNTOINDE
@ LXB_CSS_SYNTAX_PARSER_ERROR_UNTOAFPACOVA
@ LXB_CSS_SYNTAX_PARSER_ERROR_UNTOAFPARU
@ LXB_CSS_SYNTAX_PARSER_ERROR_EOINQURU
@ LXB_CSS_SYNTAX_PARSER_ERROR_EOINATRU
@ LXB_CSS_SYNTAX_PARSER_ERROR_EOBEPACOVA
@ LXB_CSS_SYNTAX_PARSER_ERROR_EOBEPARU
lxb_inline void lxb_css_parser_buffer_set(lxb_css_parser_t *parser, const lxb_char_t *data, size_t length)
LXB_API bool lxb_css_parser_success(lxb_css_parser_t *parser)
lxb_inline void lxb_css_parser_state_value_set(lxb_css_parser_t *parser, lxb_css_parser_state_f state)
lxb_inline bool lxb_css_parser_is_running(lxb_css_parser_t *parser)
lxb_inline const lxb_char_t * lxb_css_parser_buffer(lxb_css_parser_t *parser, size_t *length)
LXB_API bool lxb_css_parser_stop(lxb_css_parser_t *parser)
LXB_API bool lxb_css_parser_failed(lxb_css_parser_t *parser)
LXB_API void lxb_css_parser_clean(lxb_css_parser_t *parser)
lxb_inline const lxb_css_syntax_qualified_offset_t * lxb_css_parser_qualified_rule_offset(lxb_css_parser_t *parser)
lxb_inline lxb_css_parser_state_t * lxb_css_parser_states_to_root(lxb_css_parser_t *parser)
lxb_inline lxb_css_parser_state_f lxb_css_parser_state(lxb_css_parser_t *parser)
lxb_inline void * lxb_css_parser_context(lxb_css_parser_t *parser)
LXB_API lxb_status_t lxb_css_parser_init(lxb_css_parser_t *parser, lxb_css_syntax_tokenizer_t *tkz)
lxb_inline void lxb_css_parser_state_block_set(lxb_css_parser_t *parser, lxb_css_parser_state_f state)
lxb_inline size_t lxb_css_parser_rule_deep(lxb_css_parser_t *parser)
LXB_API lxb_css_parser_t * lxb_css_parser_destroy(lxb_css_parser_t *parser, bool self_destroy)
lxb_inline void lxb_css_parser_context_set(lxb_css_parser_t *parser, void *context)
LXB_API lxb_status_t lxb_css_parser_unexpected_status(lxb_css_parser_t *parser)
lxb_inline lxb_css_syntax_rule_t * lxb_css_parser_current_rule(lxb_css_parser_t *parser)
lxb_inline bool lxb_css_parser_states_set_back(lxb_css_parser_t *parser)
lxb_inline lxb_css_parser_state_t * lxb_css_parser_states_current(lxb_css_parser_t *parser)
lxb_inline void lxb_css_parser_states_set(lxb_css_parser_state_t *states, lxb_css_parser_state_f state, void *context)
LXB_API lxb_css_parser_t * lxb_css_parser_create(void)
lxb_inline void lxb_css_parser_offset_set(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token)
lxb_inline void lxb_css_parser_state_set(lxb_css_parser_t *parser, lxb_css_parser_state_f state)
lxb_inline const lxb_css_syntax_declarations_offset_t * lxb_css_parser_declarations_offset(lxb_css_parser_t *parser)
lxb_inline const lxb_css_syntax_list_rules_offset_t * lxb_css_parser_list_rules_offset(lxb_css_parser_t *parser)
LXB_API bool lxb_css_parser_memory_fail(lxb_css_parser_t *parser)
lxb_inline void lxb_css_parser_states_clean(lxb_css_parser_t *parser)
lxb_inline void lxb_css_parser_failed_set_by_id(lxb_css_parser_t *parser, int idx, bool is)
LXB_API bool lxb_css_parser_unexpected(lxb_css_parser_t *parser)
lxb_inline lxb_css_parser_state_t * lxb_css_parser_states_pop(lxb_css_parser_t *parser)
LXB_API lxb_css_parser_state_t * lxb_css_parser_states_next(lxb_css_parser_t *parser, lxb_css_parser_state_f next, lxb_css_parser_state_f back, void *ctx, bool root)
lxb_inline bool lxb_css_parser_is_failed(lxb_css_parser_t *parser)
LXB_API lxb_status_t lxb_css_parser_unexpected_data_status(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token)
lxb_inline lxb_css_log_t * lxb_css_parser_log(lxb_css_parser_t *parser)
lxb_inline void lxb_css_parser_selectors_set(lxb_css_parser_t *parser, lxb_css_selectors_t *selectors)
LXB_API bool lxb_css_parser_unexpected_data(lxb_css_parser_t *parser, const lxb_css_syntax_token_t *token)
lxb_inline void lxb_css_parser_states_up(lxb_css_parser_t *parser)
lxb_inline void lxb_css_parser_states_change_back(lxb_css_parser_t *parser, lxb_css_parser_state_f state)
struct lxb_css_selectors lxb_css_selectors_t
#define lxb_css_syntax_token_base(token)
lxb_css_syntax_token_type_t
lxb_status_t(* lxb_css_syntax_tokenizer_chunk_f)(lxb_css_syntax_tokenizer_t *tkz, const lxb_char_t **data, const lxb_char_t **end, void *ctx)
lxb_inline void lxb_css_syntax_tokenizer_buffer_set(lxb_css_syntax_tokenizer_t *tkz, const lxb_char_t *data, size_t size)
lxb_css_parser_state_f state
lxb_css_parser_state_t * states
lxb_css_parser_state_f block
lxb_css_syntax_token_type_t * types_begin
lxb_css_syntax_token_type_t * types_end
lxb_css_memory_t * old_memory
lxb_css_syntax_token_type_t * types_pos
lxb_css_memory_t * memory
lxb_css_selectors_t * old_selectors
lxb_css_syntax_rule_t * rules_end
lxb_css_syntax_rule_t * rules
lxb_css_parser_stage_t stage
lxb_css_syntax_tokenizer_chunk_f chunk_cb
lxb_css_parser_state_t * states_begin
lxb_css_parser_state_t * states_end
lxb_css_syntax_tokenizer_t * tkz
lxb_css_selectors_t * selectors
lxb_css_syntax_rule_t * rules_begin
const lxb_css_syntax_cb_list_rules_t * list_rules
lxb_css_parser_state_f state_back
const lxb_css_syntax_cb_at_rule_t * at_rule
union lxb_css_syntax_rule::@203345256314064163344113041244217160314313024330 u
const lxb_css_syntax_cb_declarations_t * declarations
lxb_css_parser_state_f state
lxb_css_syntax_qualified_offset_t qualified
const lxb_char_t * in_begin
const lxb_char_t * in_end
struct lxb_css_syntax_rule lxb_css_syntax_rule_t
unsigned int lxb_status_t