1 /* 2 * Copyright (C) 2020-2022 Alexander Borisov 3 * 4 * Author: Alexander Borisov <borisov@lexbor.com> 5 */ 6 7 #ifndef LEXBOR_CSS_SELECTORS_PSEUDO_H 8 #define LEXBOR_CSS_SELECTORS_PSEUDO_H 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #include "lexbor/css/base.h" 15 #include "lexbor/css/syntax/parser.h" 16 #include "lexbor/css/selectors/base.h" 17 18 19 typedef struct { 20 lxb_char_t *name; 21 size_t length; 22 unsigned id; 23 bool empty; 24 lxb_css_selector_combinator_t combinator; 25 const lxb_css_syntax_cb_function_t cb; 26 bool forgiving; 27 bool comma; 28 } 29 lxb_css_selectors_pseudo_data_func_t; 30 31 typedef struct { 32 lxb_char_t *name; 33 size_t length; 34 unsigned id; 35 } 36 lxb_css_selectors_pseudo_data_t; 37 38 39 LXB_API const lxb_css_selectors_pseudo_data_t * 40 lxb_css_selector_pseudo_class_by_name(const lxb_char_t *name, size_t length); 41 42 LXB_API const lxb_css_selectors_pseudo_data_func_t * 43 lxb_css_selector_pseudo_class_function_by_name(const lxb_char_t *name, 44 size_t length); 45 46 LXB_API const lxb_css_selectors_pseudo_data_func_t * 47 lxb_css_selector_pseudo_class_function_by_id(unsigned id); 48 49 LXB_API const lxb_css_selectors_pseudo_data_t * 50 lxb_css_selector_pseudo_element_by_name(const lxb_char_t *name, size_t length); 51 52 LXB_API const lxb_css_selectors_pseudo_data_func_t * 53 lxb_css_selector_pseudo_element_function_by_name(const lxb_char_t *name, 54 size_t length); 55 56 LXB_API const lxb_css_selectors_pseudo_data_func_t * 57 lxb_css_selector_pseudo_element_function_by_id(unsigned id); 58 59 LXB_API const lxb_css_selectors_pseudo_data_func_t * 60 lxb_css_selector_pseudo_function_by_id(unsigned id, bool is_class); 61 62 LXB_API bool 63 lxb_css_selector_pseudo_function_can_empty(unsigned id, bool is_class); 64 65 66 #ifdef __cplusplus 67 } /* extern "C" */ 68 #endif 69 70 #endif /* LEXBOR_CSS_SELECTORS_PSEUDO_H */ 71