diff options
-rwxr-xr-x | build/mkprops.pl | 73 | ||||
-rw-r--r-- | src/parse/css21.c | 202 | ||||
-rw-r--r-- | src/parse/css21props.c | 1610 | ||||
-rw-r--r-- | src/stylesheet.h | 9 |
4 files changed, 1888 insertions, 6 deletions
diff --git a/build/mkprops.pl b/build/mkprops.pl new file mode 100755 index 0000000..5464053 --- /dev/null +++ b/build/mkprops.pl @@ -0,0 +1,73 @@ +#!/usr/bin/perl + +use warnings; +use strict; + +# Auto-generate stub handlers for CSS properties. + +my @PROPS = split(/ /, "azimuth background_attachment background_color background_image background_position background_repeat border_bottom_color border_bottom_style border_bottom_width border_collapse border_left_color border_left_style border_left_width border_right_color border_right_style border_right_width border_spacing border_top_color border_top_style border_top_width bottom caption_side clear clip color content counter_increment counter_reset cue_after cue_before cursor direction display elevation empty_cells float font_family font_size font_style font_variant font_weight height left letter_spacing line_height list_style_image list_style_position list_style_type margin_bottom margin_left margin_right margin_top max_height max_width min_height min_width orphans outline_color outline_style outline_width overflow padding_bottom padding_left padding_right padding_top page_break_after page_break_before page_break_inside pause_after pause_before pitch_range pitch play_during position quotes richness right speak_header speak_numeral speak_punctuation speak speech_rate stress table_layout text_align text_decoration text_indent text_transform top unicode_bidi vertical_align visibility voice_family volume white_space widows width word_spacing z_index"); + +print <<EOF +/* + * This file is part of LibCSS. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2008 John-Mark Bell <jmb\@netsurf-browser.org> + */ + +#ifndef css_parse_css21props_c_ +#define css_parse_css21props_c_ + +EOF +; + +foreach my $prop (@PROPS) { +print <<EOF +static css_error parse_$prop(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +EOF +} + +print <<EOF + +/** + * Type of property handler function + */ +typedef css_error (*css_prop_handler)(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); + +/** + * Dispatch table of property handlers, indexed by property enum + */ +static const css_prop_handler property_handlers[LAST_KNOWN - FIRST_PROP] = +{ +EOF +; + +foreach my $prop (@PROPS) { + print "\tparse_$prop,\n"; +} + +print "};\n"; + +foreach my $prop (@PROPS) { +print <<EOF + +css_error parse_$prop(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} +EOF +} + +print "\n#endif\n"; + diff --git a/src/parse/css21.c b/src/parse/css21.c index a286bd2..7f49490 100644 --- a/src/parse/css21.c +++ b/src/parse/css21.c @@ -21,6 +21,30 @@ enum { CHARSET, IMPORT, MEDIA, PAGE, + FIRST_PROP, + + AZIMUTH = FIRST_PROP, BACKGROUND_ATTACHMENT, BACKGROUND_COLOR, + BACKGROUND_IMAGE, BACKGROUND_POSITION, BACKGROUND_REPEAT, + BORDER_BOTTOM_COLOR, BORDER_BOTTOM_STYLE, BORDER_BOTTOM_WIDTH, + BORDER_COLLAPSE, BORDER_LEFT_COLOR, BORDER_LEFT_STYLE, + BORDER_LEFT_WIDTH, BORDER_RIGHT_COLOR, BORDER_RIGHT_STYLE, + BORDER_RIGHT_WIDTH, BORDER_SPACING, BORDER_TOP_COLOR, BORDER_TOP_STYLE, + BORDER_TOP_WIDTH, BOTTOM, CAPTION_SIDE, CLEAR, CLIP, COLOR, CONTENT, + COUNTER_INCREMENT, COUNTER_RESET, CUE_AFTER, CUE_BEFORE, CURSOR, + DIRECTION, DISPLAY, ELEVATION, EMPTY_CELLS, FLOAT, FONT_FAMILY, + FONT_SIZE, FONT_STYLE, FONT_VARIANT, FONT_WEIGHT, HEIGHT, LEFT, + LETTER_SPACING, LINE_HEIGHT, LIST_STYLE_IMAGE, LIST_STYLE_POSITION, + LIST_STYLE_TYPE, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, + MAX_HEIGHT, MAX_WIDTH, MIN_HEIGHT, MIN_WIDTH, ORPHANS, OUTLINE_COLOR, + OUTLINE_STYLE, OUTLINE_WIDTH, OVERFLOW, PADDING_BOTTOM, PADDING_LEFT, + PADDING_RIGHT, PADDING_TOP, PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE, + PAGE_BREAK_INSIDE, PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH, + PLAY_DURING, POSITION, QUOTES, RICHNESS, RIGHT, SPEAK_HEADER, + SPEAK_NUMERAL, SPEAK_PUNCTUATION, SPEAK, SPEECH_RATE, STRESS, + TABLE_LAYOUT, TEXT_ALIGN, TEXT_DECORATION, TEXT_INDENT, TEXT_TRANSFORM, + TOP, UNICODE_BIDI, VERTICAL_ALIGN, VISIBILITY, VOICE_FAMILY, VOLUME, + WHITE_SPACE, WIDOWS, WIDTH, WORD_SPACING, Z_INDEX, + LAST_KNOWN }; @@ -32,11 +56,111 @@ static struct { { "import", SLEN("import") }, { "media", SLEN("media") }, { "page", SLEN("page") }, + + { "azimuth", SLEN("azimuth") }, + { "background-attachment", SLEN("background-attachment") }, + { "background-color", SLEN("background-color") }, + { "background-image", SLEN("background-image") }, + { "background-position", SLEN("background-position") }, + { "background-repeat", SLEN("background-repeat") }, + { "border-bottom-color", SLEN("border-bottom-color") }, + { "border-bottom-style", SLEN("border-bottom-style") }, + { "border-bottom-width", SLEN("border-bottom-width") }, + { "border-collapse", SLEN("border-collapse") }, + { "border-left-color", SLEN("border-left-color") }, + { "border-left-style", SLEN("border-left-style") }, + { "border-left-width", SLEN("border-left-width") }, + { "border-right-color", SLEN("border-right-color") }, + { "border-right-style", SLEN("border-right-style") }, + { "border-right-width", SLEN("border-right-width") }, + { "border-spacing", SLEN("border-spacing") }, + { "border-top-color", SLEN("border-top-color") }, + { "border-top-style", SLEN("border-top-style") }, + { "border-top-width", SLEN("border-top-width") }, + { "bottom", SLEN("bottom") }, + { "caption-side", SLEN("caption-side") }, + { "clear", SLEN("clear") }, + { "clip", SLEN("clip") }, + { "color", SLEN("color") }, + { "content", SLEN("content") }, + { "counter-increment", SLEN("counter-increment") }, + { "counter-reset", SLEN("counter-reset") }, + { "cue-after", SLEN("cue-after") }, + { "cue-before", SLEN("cue-before") }, + { "cursor", SLEN("cursor") }, + { "direction", SLEN("direction") }, + { "display", SLEN("display") }, + { "elevation", SLEN("elevation") }, + { "empty-cells", SLEN("empty-cells") }, + { "float", SLEN("float") }, + { "font-family", SLEN("font-family") }, + { "font-size", SLEN("font-size") }, + { "font-style", SLEN("font-style") }, + { "font-variant", SLEN("font-variant") }, + { "font-weight", SLEN("font-weight") }, + { "height", SLEN("height") }, + { "left", SLEN("left") }, + { "letter-spacing", SLEN("letter-spacing") }, + { "line-height", SLEN("line-height") }, + { "list-style-image", SLEN("list-style-image") }, + { "list-style-position", SLEN("list-style-position") }, + { "list-style-type", SLEN("list-style-type") }, + { "margin-bottom", SLEN("margin-bottom") }, + { "margin-left", SLEN("margin-left") }, + { "margin-right", SLEN("margin-right") }, + { "margin-top", SLEN("margin-top") }, + { "max-height", SLEN("max-height") }, + { "max-width", SLEN("max-width") }, + { "min-height", SLEN("min-height") }, + { "min-width", SLEN("min-width") }, + { "orphans", SLEN("orphans") }, + { "outline-color", SLEN("outline-color") }, + { "outline-style", SLEN("outline-style") }, + { "outline-width", SLEN("outline-width") }, + { "overflow", SLEN("overflow") }, + { "padding-bottom", SLEN("padding-bottom") }, + { "padding-left", SLEN("padding-left") }, + { "padding-right", SLEN("padding-right") }, + { "padding-top", SLEN("padding-top") }, + { "page-break-after", SLEN("page-break-after") }, + { "page-break-before", SLEN("page-break-before") }, + { "page-break-inside", SLEN("page-break-inside") }, + { "pause-after", SLEN("pause-after") }, + { "pause-before", SLEN("pause-before") }, + { "pitch-range", SLEN("pitch-range") }, + { "pitch", SLEN("pitch") }, + { "play-during", SLEN("play-during") }, + { "position", SLEN("position") }, + { "quotes", SLEN("quotes") }, + { "richness", SLEN("richness") }, + { "right", SLEN("right") }, + { "speak-header", SLEN("speak-header") }, + { "speak-numeral", SLEN("speak-numeral") }, + { "speak-punctuation", SLEN("speak-punctuation") }, + { "speak", SLEN("speak") }, + { "speech-rate", SLEN("speech-rate") }, + { "stress", SLEN("stress") }, + { "table-layout", SLEN("table-layout") }, + { "text-align", SLEN("text-align") }, + { "text-decoration", SLEN("text-decoration") }, + { "text-indent", SLEN("text-indent") }, + { "text-transform", SLEN("text-transform") }, + { "top", SLEN("top") }, + { "unicode-bidi", SLEN("unicode-bidi") }, + { "vertical-align", SLEN("vertical-align") }, + { "visibility", SLEN("visibility") }, + { "voice-family", SLEN("voice-family") }, + { "volume", SLEN("volume") }, + { "white-space", SLEN("white-space") }, + { "widows", SLEN("widows") }, + { "width", SLEN("width") }, + { "word-spacing", SLEN("word-spacing") }, + { "z-index", SLEN("z-index") } }; typedef struct context_entry { css_parser_event type; /**< Type of entry */ - const uint8_t *data; /**< Pointer to interned string */ + void *data; /**< Data for context */ } context_entry; /** @@ -113,6 +237,11 @@ static inline css_error parseSelector(css_css21 *c, static inline css_error parseSelectorList(css_css21 *c, const parserutils_vector *vector, css_rule *rule); +/* Declaration parsing */ +static inline css_error parseProperty(css_css21 *c, + const css_token *property, const parserutils_vector *vector, + int *ctx, css_rule *rule); + /* Helpers */ static inline void consumeWhitespace(const parserutils_vector *vector, int *ctx); @@ -294,6 +423,8 @@ css_error handleStartRuleset(css_css21 *c, const parserutils_vector *vector) return error; } + entry.data = rule; + perror = parserutils_stack_push(c->context, (void *) &entry); if (perror != PARSERUTILS_OK) { css_stylesheet_rule_destroy(c->sheet, rule); @@ -475,19 +606,46 @@ css_error handleBlockContent(css_css21 *c, const parserutils_vector *vector) css_error handleDeclaration(css_css21 *c, const parserutils_vector *vector) { - UNUSED(c); - UNUSED(vector); + css_error error; + const css_token *token, *ident; + int ctx = 0; + context_entry *entry; + css_rule *rule; /* Locations where declarations are permitted: * * + In @page * + In ruleset */ + entry = parserutils_stack_get_current(c->context); + if (entry == NULL || (entry->type != CSS_PARSER_START_RULESET && + entry->type != CSS_PARSER_START_ATRULE)) + return CSS_INVALID; + + rule = entry->data; + if (rule == NULL || (rule->type != CSS_RULE_SELECTOR && + rule->type != CSS_RULE_PAGE)) + return CSS_INVALID; /* IDENT ws ':' ws value * * In CSS 2.1, value is any1, so '{' or ATKEYWORD => parse error */ + ident = parserutils_vector_iterate(vector, &ctx); + if (ident == NULL || ident->type != CSS_TOKEN_IDENT) + return CSS_INVALID; + + consumeWhitespace(vector, &ctx); + + token = parserutils_vector_iterate(vector, &ctx); + if (token == NULL || tokenIsChar(token, ':') == false) + return CSS_INVALID; + + consumeWhitespace(vector, &ctx); + + error = parseProperty(c, ident, vector, &ctx, rule); + if (error != CSS_OK) + return error; return CSS_OK; } @@ -898,6 +1056,44 @@ css_error parseSelectorList(css_css21 *c, const parserutils_vector *vector, } /****************************************************************************** + * Property parsing functions * + ******************************************************************************/ + +#include "css21props.c" + +css_error parseProperty(css_css21 *c, const css_token *property, + const parserutils_vector *vector, int *ctx, css_rule *rule) +{ + css_error error; + css_prop_handler handler = NULL; + int i = 0; + css_style *style; + + /* Find property index */ + /** \todo improve on this linear search */ + for (i = FIRST_PROP; i < LAST_KNOWN; i++) { + if (property->lower.ptr == c->strings[i]) + break; + } + if (i == LAST_KNOWN) + return CSS_INVALID; + + /* Get handler */ + handler = property_handlers[i - FIRST_PROP]; + assert(handler != NULL); + + /* Call it */ + error = handler(c, vector, ctx, &style); + if (error != CSS_OK) + return error; + + /** \todo append style to rule */ + UNUSED(rule); + + return CSS_OK; +} + +/****************************************************************************** * Helper functions * ******************************************************************************/ diff --git a/src/parse/css21props.c b/src/parse/css21props.c new file mode 100644 index 0000000..b115ce8 --- /dev/null +++ b/src/parse/css21props.c @@ -0,0 +1,1610 @@ +/* + * This file is part of LibCSS. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org> + */ + +#ifndef css_parse_css21props_c_ +#define css_parse_css21props_c_ + +static css_error parse_azimuth(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_background_attachment(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_background_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_background_image(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_background_position(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_background_repeat(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_bottom_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_bottom_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_bottom_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_collapse(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_left_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_left_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_left_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_right_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_right_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_right_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_spacing(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_top_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_top_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_border_top_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_bottom(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_caption_side(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_clear(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_clip(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_content(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_counter_increment(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_counter_reset(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_cue_after(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_cue_before(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_cursor(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_direction(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_display(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_elevation(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_empty_cells(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_float(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_font_family(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_font_size(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_font_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_font_variant(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_font_weight(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_left(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_letter_spacing(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_line_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_list_style_image(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_list_style_position(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_list_style_type(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_margin_bottom(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_margin_left(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_margin_right(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_margin_top(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_max_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_max_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_min_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_min_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_orphans(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_outline_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_outline_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_outline_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_overflow(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_padding_bottom(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_padding_left(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_padding_right(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_padding_top(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_page_break_after(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_page_break_before(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_page_break_inside(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_pause_after(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_pause_before(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_pitch_range(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_pitch(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_play_during(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_position(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_quotes(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_richness(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_right(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_speak_header(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_speak_numeral(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_speak_punctuation(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_speak(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_speech_rate(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_stress(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_table_layout(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_text_align(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_text_decoration(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_text_indent(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_text_transform(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_top(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_unicode_bidi(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_vertical_align(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_visibility(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_voice_family(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_volume(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_white_space(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_widows(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_word_spacing(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); +static css_error parse_z_index(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); + +/** + * Type of property handler function + */ +typedef css_error (*css_prop_handler)(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result); + +/** + * Dispatch table of property handlers, indexed by property enum + */ +static const css_prop_handler property_handlers[LAST_KNOWN - FIRST_PROP] = +{ + parse_azimuth, + parse_background_attachment, + parse_background_color, + parse_background_image, + parse_background_position, + parse_background_repeat, + parse_border_bottom_color, + parse_border_bottom_style, + parse_border_bottom_width, + parse_border_collapse, + parse_border_left_color, + parse_border_left_style, + parse_border_left_width, + parse_border_right_color, + parse_border_right_style, + parse_border_right_width, + parse_border_spacing, + parse_border_top_color, + parse_border_top_style, + parse_border_top_width, + parse_bottom, + parse_caption_side, + parse_clear, + parse_clip, + parse_color, + parse_content, + parse_counter_increment, + parse_counter_reset, + parse_cue_after, + parse_cue_before, + parse_cursor, + parse_direction, + parse_display, + parse_elevation, + parse_empty_cells, + parse_float, + parse_font_family, + parse_font_size, + parse_font_style, + parse_font_variant, + parse_font_weight, + parse_height, + parse_left, + parse_letter_spacing, + parse_line_height, + parse_list_style_image, + parse_list_style_position, + parse_list_style_type, + parse_margin_bottom, + parse_margin_left, + parse_margin_right, + parse_margin_top, + parse_max_height, + parse_max_width, + parse_min_height, + parse_min_width, + parse_orphans, + parse_outline_color, + parse_outline_style, + parse_outline_width, + parse_overflow, + parse_padding_bottom, + parse_padding_left, + parse_padding_right, + parse_padding_top, + parse_page_break_after, + parse_page_break_before, + parse_page_break_inside, + parse_pause_after, + parse_pause_before, + parse_pitch_range, + parse_pitch, + parse_play_during, + parse_position, + parse_quotes, + parse_richness, + parse_right, + parse_speak_header, + parse_speak_numeral, + parse_speak_punctuation, + parse_speak, + parse_speech_rate, + parse_stress, + parse_table_layout, + parse_text_align, + parse_text_decoration, + parse_text_indent, + parse_text_transform, + parse_top, + parse_unicode_bidi, + parse_vertical_align, + parse_visibility, + parse_voice_family, + parse_volume, + parse_white_space, + parse_widows, + parse_width, + parse_word_spacing, + parse_z_index, +}; + +css_error parse_azimuth(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_background_attachment(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_background_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_background_image(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_background_position(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_background_repeat(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_bottom_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_bottom_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_bottom_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_collapse(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_left_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_left_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_left_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_right_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_right_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_right_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_spacing(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_top_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_top_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_border_top_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_bottom(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_caption_side(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_clear(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_clip(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_content(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_counter_increment(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_counter_reset(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_cue_after(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_cue_before(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_cursor(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_direction(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_display(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_elevation(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_empty_cells(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_float(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_font_family(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_font_size(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_font_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_font_variant(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_font_weight(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_left(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_letter_spacing(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_line_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_list_style_image(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_list_style_position(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_list_style_type(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_margin_bottom(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_margin_left(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_margin_right(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_margin_top(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_max_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_max_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_min_height(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_min_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_orphans(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_outline_color(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_outline_style(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_outline_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_overflow(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_padding_bottom(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_padding_left(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_padding_right(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_padding_top(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_page_break_after(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_page_break_before(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_page_break_inside(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_pause_after(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_pause_before(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_pitch_range(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_pitch(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_play_during(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_position(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_quotes(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_richness(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_right(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_speak_header(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_speak_numeral(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_speak_punctuation(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_speak(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_speech_rate(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_stress(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_table_layout(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_text_align(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_text_decoration(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_text_indent(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_text_transform(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_top(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_unicode_bidi(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_vertical_align(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_visibility(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_voice_family(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_volume(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_white_space(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_widows(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_width(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_word_spacing(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +css_error parse_z_index(css_css21 *c, + const parserutils_vector *vector, int *ctx, + css_style **result) +{ + UNUSED(c); + UNUSED(vector); + UNUSED(ctx); + UNUSED(result); + + return CSS_OK; +} + +#endif diff --git a/src/stylesheet.h b/src/stylesheet.h index 6c014e5..99af643 100644 --- a/src/stylesheet.h +++ b/src/stylesheet.h @@ -20,7 +20,11 @@ typedef struct css_rule css_rule; typedef struct css_selector css_selector; -typedef struct css_style css_style; + +typedef struct css_style { + uint32_t length; /**< Length, in bytes, of bytecode */ + void *bytecode; /**< Pointer to bytecode */ +} css_style; typedef enum css_selector_type { CSS_SELECTOR_ELEMENT, @@ -160,14 +164,13 @@ css_error css_stylesheet_selector_append_specific(css_stylesheet *sheet, css_error css_stylesheet_selector_combine(css_stylesheet *sheet, css_combinator type, css_selector *a, css_selector *b); -/** \todo something about adding style declarations to a selector */ - css_rule *css_stylesheet_rule_create(css_stylesheet *sheet, css_rule_type type); void css_stylesheet_rule_destroy(css_stylesheet *sheet, css_rule *rule); css_error css_stylesheet_rule_add_selector(css_stylesheet *sheet, css_rule *rule, css_selector *selector); +/** \todo something about adding style declarations to a rule */ /** \todo registering other rule-type data with css_rules */ css_error css_stylesheet_add_rule(css_stylesheet *sheet, css_rule *rule); |