98 lines · 2.3 KB · Text
RawDownload
LibCSS internal stylesheet representation========================================= Selector: struct selector {	selector_type type;			/**< Type of selector */ 	struct {		const uint8_t *name;		size_t name_len; 		const uint8_t *value;		size_t value_len;	} data;					/**< Selector data */ 	struct selector *specifics;		/**< Selector specifics */ 	combinator combinator_type;		/**< Type of combinator */	struct selector *combinator;		/**< Combining selector */ 	struct rule *rule;			/**< Owning rule */ 	struct style *style;			/**< Applicable style */ 	struct selector *next;			/**< Next selector in list */	struct selector *prev;			/**< Previous selector */}; Rule: struct rule {	rule_type type;				/**< Type of rule */ 	union {		struct {			uint32_t selector_count;			struct selector **selectors;		} selector;		struct {			uint32_t media;			uint32_t rule_count;			struct rule **rules;		} media;		struct {			struct style *style;		} font_face;		struct {			uint32_t selector_count;			struct selector **selectors;			struct style *style;		} page;		struct {			struct stylesheet *sheet;		} import;		struct {			char *encoding;		} charset;	} data;					/**< Rule data */ 	uint32_t index;				/**< Index of rule in sheet */ 	struct stylesheet *owner;		/**< Owning sheet */ 	struct rule *parent;			/**< Parent rule */	struct rule *first_child;		/**< First in child list */	struct rule *last_child;		/**< Last in child list */	struct rule *next;			/**< Next rule */	struct rule *prev;			/**< Previous rule */}; Stylesheet: struct stylesheet {#define HASH_SIZE (37)	struct selector *selectors[HASH_SIZE];	/**< Hashtable of selectors */ 	uint32_t rule_count;			/**< Number of rules in sheet */	struct rule *rule_list;			/**< List of rules in sheet */ 	bool disabled;				/**< Whether this sheet is						 * disabled */ 	char *url;				/**< URL of this sheet */	char *title;				/**< Title of this sheet */ 	uint32_t media;				/**< Bitfield of media types */ 	void *ownerNode;			/**< Owning node in document */	struct rule *ownerRule;			/**< Owning rule in parent */ 	struct stylesheet *parent;		/**< Parent sheet */	struct stylesheet *first_child;		/**< First in child list */	struct stylesheet *last_child;		/**< Last in child list */	struct stylesheet *next;		/**< Next in sibling list */	struct stylesheet *prev;		/**< Previous in sibling list */};