1 /*
2 * Copyright (C) 2020 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7 #ifndef LEXBOR_CSS_SELECTORS_STATE_H
8 #define LEXBOR_CSS_SELECTORS_STATE_H
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 #include "lexbor/css/parser.h"
15 #include "lexbor/css/selectors/base.h"
16
17
18 LXB_API bool
19 lxb_css_selectors_state_complex_list(lxb_css_parser_t *parser,
20 const lxb_css_syntax_token_t *token,
21 void *ctx);
22
23 LXB_API bool
24 lxb_css_selectors_state_compound_list(lxb_css_parser_t *parser,
25 const lxb_css_syntax_token_t *token,
26 void *ctx);
27
28 LXB_API bool
29 lxb_css_selectors_state_simple_list(lxb_css_parser_t *parser,
30 const lxb_css_syntax_token_t *token,
31 void *ctx);
32
33 LXB_API bool
34 lxb_css_selectors_state_relative_list(lxb_css_parser_t *parser,
35 const lxb_css_syntax_token_t *token,
36 void *ctx);
37
38 LXB_API bool
39 lxb_css_selectors_state_relative(lxb_css_parser_t *parser,
40 const lxb_css_syntax_token_t *token,
41 void *ctx);
42
43 LXB_API bool
44 lxb_css_selectors_state_complex(lxb_css_parser_t *parser,
45 const lxb_css_syntax_token_t *token, void *ctx);
46
47 LXB_API bool
48 lxb_css_selectors_state_compound(lxb_css_parser_t *parser,
49 const lxb_css_syntax_token_t *token, void *ctx);
50
51 LXB_API bool
52 lxb_css_selectors_state_simple(lxb_css_parser_t *parser,
53 const lxb_css_syntax_token_t *token, void *ctx);
54
55
56 LXB_API lxb_status_t
57 lxb_css_selectors_state_function_end(lxb_css_parser_t *parser,
58 const lxb_css_syntax_token_t *token,
59 void *ctx, bool failed);
60
61 LXB_API lxb_status_t
62 lxb_css_selectors_state_function_forgiving(lxb_css_parser_t *parser,
63 const lxb_css_syntax_token_t *token,
64 void *ctx, bool failed);
65
66 LXB_API lxb_status_t
67 lxb_css_selectors_state_function_forgiving_relative(lxb_css_parser_t *parser,
68 const lxb_css_syntax_token_t *token,
69 void *ctx, bool failed);
70
71 lxb_inline bool
lxb_css_selectors_state_fail(lxb_css_parser_t * parser)72 lxb_css_selectors_state_fail(lxb_css_parser_t *parser)
73 {
74 parser->status = LXB_STATUS_ERROR_UNEXPECTED_DATA;
75
76 (void) lxb_css_parser_states_pop(parser);
77
78 return false;
79 }
80
81
82 #ifdef __cplusplus
83 } /* extern "C" */
84 #endif
85
86 #endif /* LEXBOR_CSS_SELECTORS_STATE_H */
87