diff options
Diffstat (limited to 'src/select/select.h')
-rw-r--r-- | src/select/select.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/select/select.h b/src/select/select.h index fad86ac..1d9a813 100644 --- a/src/select/select.h +++ b/src/select/select.h @@ -31,6 +31,32 @@ typedef struct prop_state { inherit : 1; /* Property is set to inherit */ } prop_state; + +typedef enum css_node_flags { + CSS_NODE_FLAGS_NONE = 0, + CSS_NODE_FLAGS_HAS_HINTS = (1 << 0), + CSS_NODE_FLAGS_PSEUDO_CLASS_ACTIVE = (1 << 1), + CSS_NODE_FLAGS_PSEUDO_CLASS_FOCUS = (1 << 2), + CSS_NODE_FLAGS_PSEUDO_CLASS_HOVER = (1 << 3), + CSS_NODE_FLAGS_PSEUDO_CLASS_LINK = (1 << 4), + CSS_NODE_FLAGS_PSEUDO_CLASS_VISITED = (1 << 5), + CSS_NODE_FLAGS_TAINT_PSEUDO_CLASS = (1 << 6), + CSS_NODE_FLAGS_TAINT_ATTRIBUTE = (1 << 7), + CSS_NODE_FLAGS_TAINT_SIBLING = (1 << 8), + CSS_NODE_FLAGS__PSEUDO_CLASSES_MASK = + (CSS_NODE_FLAGS_PSEUDO_CLASS_ACTIVE | + CSS_NODE_FLAGS_PSEUDO_CLASS_FOCUS | + CSS_NODE_FLAGS_PSEUDO_CLASS_HOVER | + CSS_NODE_FLAGS_PSEUDO_CLASS_LINK | + CSS_NODE_FLAGS_PSEUDO_CLASS_VISITED), +} css_node_flags; + +struct css_node_data { + css_select_results partial; + css_bloom *bloom; + css_node_flags flags; +}; + /** * Selection state */ @@ -58,7 +84,7 @@ typedef struct css_select_state { reject_item reject_cache[128]; /* Reject cache (filled from end) */ reject_item *next_reject; /* Next free slot in reject cache */ - const css_bloom *bloom; /* Bloom filter */ + struct css_node_data *node_data; /* Data we'll store on node */ prop_state props[CSS_N_PROPERTIES][CSS_PSEUDO_ELEMENT_COUNT]; } css_select_state; |