xref: /php-src/ext/dom/lexbor/lexbor/css/selectors/state.h (revision f0934090)
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