Gitweb links:
...log
http://git.netsurf-browser.org/libcss.git/shortlog/e2b4077eed0ad778847cd7b17406e8bf8b61a4ae
...commit
http://git.netsurf-browser.org/libcss.git/commit/e2b4077eed0ad778847cd7b17406e8bf8b61a4ae
...tree
http://git.netsurf-browser.org/libcss.git/tree/e2b4077eed0ad778847cd7b17406e8bf8b61a4ae
The branch, master has been updated
via e2b4077eed0ad778847cd7b17406e8bf8b61a4ae (commit)
via d7c1541ac2d21577e58f2839879e71a2cebed229 (commit)
via 0b84fa9cc67593667002d7e7953d90400a66ac09 (commit)
from 1c1cf39d306428fe91260842082dfc9a66a6a236 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/libcss.git/commit/?id=e2b4077eed0ad778847cd7b17406e8bf8b61a4ae
commit e2b4077eed0ad778847cd7b17406e8bf8b61a4ae
Author: Michael Drake <Michael Drake [email protected]>
Commit: Michael Drake <Michael Drake [email protected]>
parse: properties: Add property-specific unit class masks.
There's a table we can index into for calc():
const uint32_t property_unit_mask[CSS_N_PROPERTIES]
And there are #defines for where the code is already
property-specific, avoiding the lookup.
diff --git a/src/parse/properties/css_property_parser_gen.c
b/src/parse/properties/css_property_parser_gen.c
index 0e6ce72..24cc536 100644
--- a/src/parse/properties/css_property_parser_gen.c
+++ b/src/parse/properties/css_property_parser_gen.c
@@ -326,6 +326,13 @@ void output_length_unit(FILE *outputf, struct keyval
*parseid, struct keyval_lis
"\t\t\treturn CSS_INVALID;\n"
"\t\t}\n\n",
ulkv->val);
+ } else if (strcmp(ulkv->key, "MASK") == 0) {
+ fprintf(outputf,
+ "\t\tif ((unit & %s ) == 0) {\n"
+ "\t\t\t*ctx = orig_ctx;\n"
+ "\t\t\treturn CSS_INVALID;\n"
+ "\t\t}\n\n",
+ ulkv->val);
} else if (strcmp(ulkv->key, "RANGE") == 0) {
fprintf(outputf,
"\t\tif (length %s) {\n"
diff --git a/src/parse/properties/properties.c
b/src/parse/properties/properties.c
index 3f374fa..06524da 100644
--- a/src/parse/properties/properties.c
+++ b/src/parse/properties/properties.c
@@ -158,3 +158,131 @@ const css_prop_handler property_handlers[LAST_PROP + 1 -
FIRST_PROP] =
css__parse_writing_mode,
css__parse_z_index
};
+
+/** Mapping from property bytecode index to bytecode unit class mask. */
+const uint32_t property_unit_mask[CSS_N_PROPERTIES] = {
+ [CSS_PROP_AZIMUTH] = UNIT_MASK_AZIMUTH,
+ [CSS_PROP_BACKGROUND_ATTACHMENT] = UNIT_MASK_BACKGROUND_ATTACHMENT,
+ [CSS_PROP_BACKGROUND_COLOR] = UNIT_MASK_BACKGROUND_COLOR,
+ [CSS_PROP_BACKGROUND_IMAGE] = UNIT_MASK_BACKGROUND_IMAGE,
+ [CSS_PROP_BACKGROUND_POSITION] = UNIT_MASK_BACKGROUND_POSITION,
+ [CSS_PROP_BACKGROUND_REPEAT] = UNIT_MASK_BACKGROUND_REPEAT,
+ [CSS_PROP_BORDER_COLLAPSE] = UNIT_MASK_BORDER_COLLAPSE,
+ [CSS_PROP_BORDER_SPACING] = UNIT_MASK_BORDER_SPACING,
+ [CSS_PROP_BORDER_TOP_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_RIGHT_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_BOTTOM_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_LEFT_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_TOP_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_RIGHT_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_BOTTOM_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_LEFT_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_TOP_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BORDER_RIGHT_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BORDER_BOTTOM_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BORDER_LEFT_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BOTTOM] = UNIT_MASK_BOTTOM,
+ [CSS_PROP_CAPTION_SIDE] = UNIT_MASK_CAPTION_SIDE,
+ [CSS_PROP_CLEAR] = UNIT_MASK_CLEAR,
+ [CSS_PROP_CLIP] = UNIT_MASK_CLIP,
+ [CSS_PROP_COLOR] = UNIT_MASK_COLOR,
+ [CSS_PROP_CONTENT] = UNIT_MASK_CONTENT,
+ [CSS_PROP_COUNTER_INCREMENT] = UNIT_MASK_COUNTER_INCREMENT,
+ [CSS_PROP_COUNTER_RESET] = UNIT_MASK_COUNTER_RESET,
+ [CSS_PROP_CUE_AFTER] = UNIT_MASK_CUE_AFTER,
+ [CSS_PROP_CUE_BEFORE] = UNIT_MASK_CUE_BEFORE,
+ [CSS_PROP_CURSOR] = UNIT_MASK_CURSOR,
+ [CSS_PROP_DIRECTION] = UNIT_MASK_DIRECTION,
+ [CSS_PROP_DISPLAY] = UNIT_MASK_DISPLAY,
+ [CSS_PROP_ELEVATION] = UNIT_MASK_ELEVATION,
+ [CSS_PROP_EMPTY_CELLS] = UNIT_MASK_EMPTY_CELLS,
+ [CSS_PROP_FLOAT] = UNIT_MASK_FLOAT,
+ [CSS_PROP_FONT_FAMILY] = UNIT_MASK_FONT_FAMILY,
+ [CSS_PROP_FONT_SIZE] = UNIT_MASK_FONT_SIZE,
+ [CSS_PROP_FONT_STYLE] = UNIT_MASK_FONT_STYLE,
+ [CSS_PROP_FONT_VARIANT] = UNIT_MASK_FONT_VARIANT,
+ [CSS_PROP_FONT_WEIGHT] = UNIT_MASK_FONT_WEIGHT,
+ [CSS_PROP_HEIGHT] = UNIT_MASK_HEIGHT,
+ [CSS_PROP_LEFT] = UNIT_MASK_LEFT,
+ [CSS_PROP_LETTER_SPACING] = UNIT_MASK_LETTER_SPACING,
+ [CSS_PROP_LINE_HEIGHT] = UNIT_MASK_LINE_HEIGHT,
+ [CSS_PROP_LIST_STYLE_IMAGE] = UNIT_MASK_LIST_STYLE_IMAGE,
+ [CSS_PROP_LIST_STYLE_POSITION] = UNIT_MASK_LIST_STYLE_POSITION,
+ [CSS_PROP_LIST_STYLE_TYPE] = UNIT_MASK_LIST_STYLE_TYPE,
+ [CSS_PROP_MARGIN_TOP] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MARGIN_RIGHT] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MARGIN_BOTTOM] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MARGIN_LEFT] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MAX_HEIGHT] = UNIT_MASK_MAX_HEIGHT,
+ [CSS_PROP_MAX_WIDTH] = UNIT_MASK_MAX_WIDTH,
+ [CSS_PROP_MIN_HEIGHT] = UNIT_MASK_MIN_HEIGHT,
+ [CSS_PROP_MIN_WIDTH] = UNIT_MASK_MIN_WIDTH,
+ [CSS_PROP_ORPHANS] = UNIT_MASK_ORPHANS,
+ [CSS_PROP_OUTLINE_COLOR] = UNIT_MASK_OUTLINE_COLOR,
+ [CSS_PROP_OUTLINE_STYLE] = UNIT_MASK_OUTLINE_STYLE,
+ [CSS_PROP_OUTLINE_WIDTH] = UNIT_MASK_OUTLINE_WIDTH,
+ [CSS_PROP_OVERFLOW_X] = UNIT_MASK_OVERFLOW_X,
+ [CSS_PROP_PADDING_TOP] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PADDING_RIGHT] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PADDING_BOTTOM] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PADDING_LEFT] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PAGE_BREAK_AFTER] = UNIT_MASK_PAGE_BREAK_AFTER,
+ [CSS_PROP_PAGE_BREAK_BEFORE] = UNIT_MASK_PAGE_BREAK_BEFORE,
+ [CSS_PROP_PAGE_BREAK_INSIDE] = UNIT_MASK_PAGE_BREAK_INSIDE,
+ [CSS_PROP_PAUSE_AFTER] = UNIT_MASK_PAUSE_AFTER,
+ [CSS_PROP_PAUSE_BEFORE] = UNIT_MASK_PAUSE_BEFORE,
+ [CSS_PROP_PITCH_RANGE] = UNIT_MASK_PITCH_RANGE,
+ [CSS_PROP_PITCH] = UNIT_MASK_PITCH,
+ [CSS_PROP_PLAY_DURING] = UNIT_MASK_PLAY_DURING,
+ [CSS_PROP_POSITION] = UNIT_MASK_POSITION,
+ [CSS_PROP_QUOTES] = UNIT_MASK_QUOTES,
+ [CSS_PROP_RICHNESS] = UNIT_MASK_RICHNESS,
+ [CSS_PROP_RIGHT] = UNIT_MASK_RIGHT,
+ [CSS_PROP_SPEAK_HEADER] = UNIT_MASK_SPEAK_HEADER,
+ [CSS_PROP_SPEAK_NUMERAL] = UNIT_MASK_SPEAK_NUMERAL,
+ [CSS_PROP_SPEAK_PUNCTUATION] = UNIT_MASK_SPEAK_PUNCTUATION,
+ [CSS_PROP_SPEAK] = UNIT_MASK_SPEAK,
+ [CSS_PROP_SPEECH_RATE] = UNIT_MASK_SPEECH_RATE,
+ [CSS_PROP_STRESS] = UNIT_MASK_STRESS,
+ [CSS_PROP_TABLE_LAYOUT] = UNIT_MASK_TABLE_LAYOUT,
+ [CSS_PROP_TEXT_ALIGN] = UNIT_MASK_TEXT_ALIGN,
+ [CSS_PROP_TEXT_DECORATION] = UNIT_MASK_TEXT_DECORATION,
+ [CSS_PROP_TEXT_INDENT] = UNIT_MASK_TEXT_INDENT,
+ [CSS_PROP_TEXT_TRANSFORM] = UNIT_MASK_TEXT_TRANSFORM,
+ [CSS_PROP_TOP] = UNIT_MASK_TOP,
+ [CSS_PROP_UNICODE_BIDI] = UNIT_MASK_UNICODE_BIDI,
+ [CSS_PROP_VERTICAL_ALIGN] = UNIT_MASK_VERTICAL_ALIGN,
+ [CSS_PROP_VISIBILITY] = UNIT_MASK_VISIBILITY,
+ [CSS_PROP_VOICE_FAMILY] = UNIT_MASK_VOICE_FAMILY,
+ [CSS_PROP_VOLUME] = UNIT_MASK_VOLUME,
+ [CSS_PROP_WHITE_SPACE] = UNIT_MASK_WHITE_SPACE,
+ [CSS_PROP_WIDOWS] = UNIT_MASK_WIDOWS,
+ [CSS_PROP_WIDTH] = UNIT_MASK_WIDTH,
+ [CSS_PROP_WORD_SPACING] = UNIT_MASK_WORD_SPACING,
+ [CSS_PROP_Z_INDEX] = UNIT_MASK_Z_INDEX,
+ [CSS_PROP_OPACITY] = UNIT_MASK_OPACITY,
+ [CSS_PROP_BREAK_AFTER] = UNIT_MASK_BREAK_AFTER,
+ [CSS_PROP_BREAK_BEFORE] = UNIT_MASK_BREAK_BEFORE,
+ [CSS_PROP_BREAK_INSIDE] = UNIT_MASK_BREAK_INSIDE,
+ [CSS_PROP_COLUMN_COUNT] = UNIT_MASK_COLUMN_COUNT,
+ [CSS_PROP_COLUMN_FILL] = UNIT_MASK_COLUMN_FILL,
+ [CSS_PROP_COLUMN_GAP] = UNIT_MASK_COLUMN_GAP,
+ [CSS_PROP_COLUMN_RULE_COLOR] = UNIT_MASK_COLUMN_RULE_COLOR,
+ [CSS_PROP_COLUMN_RULE_STYLE] = UNIT_MASK_COLUMN_RULE_STYLE,
+ [CSS_PROP_COLUMN_RULE_WIDTH] = UNIT_MASK_COLUMN_RULE_WIDTH,
+ [CSS_PROP_COLUMN_SPAN] = UNIT_MASK_COLUMN_SPAN,
+ [CSS_PROP_COLUMN_WIDTH] = UNIT_MASK_COLUMN_WIDTH,
+ [CSS_PROP_WRITING_MODE] = UNIT_MASK_WRITING_MODE,
+ [CSS_PROP_OVERFLOW_Y] = UNIT_MASK_OVERFLOW_Y,
+ [CSS_PROP_BOX_SIZING] = UNIT_MASK_BOX_SIZING,
+ [CSS_PROP_ALIGN_CONTENT] = UNIT_MASK_ALIGN_CONTENT,
+ [CSS_PROP_ALIGN_ITEMS] = UNIT_MASK_ALIGN_ITEMS,
+ [CSS_PROP_ALIGN_SELF] = UNIT_MASK_ALIGN_SELF,
+ [CSS_PROP_FLEX_BASIS] = UNIT_MASK_FLEX_BASIS,
+ [CSS_PROP_FLEX_DIRECTION] = UNIT_MASK_FLEX_DIRECTION,
+ [CSS_PROP_FLEX_GROW] = UNIT_MASK_FLEX_GROW,
+ [CSS_PROP_FLEX_SHRINK] = UNIT_MASK_FLEX_SHRINK,
+ [CSS_PROP_FLEX_WRAP] = UNIT_MASK_FLEX_WRAP,
+ [CSS_PROP_JUSTIFY_CONTENT] = UNIT_MASK_JUSTIFY_CONTENT,
+ [CSS_PROP_ORDER] = UNIT_MASK_ORDER,
+};
diff --git a/src/parse/properties/properties.gen
b/src/parse/properties/properties.gen
index db3a531..e729285 100644
--- a/src/parse/properties/properties.gen
+++ b/src/parse/properties/properties.gen
@@ -22,35 +22,35 @@ empty_cells:CSS_PROP_EMPTY_CELLS IDENT:( INHERIT:
SHOW:0,EMPTY_CELLS_SHOW HIDE:0
float:CSS_PROP_FLOAT IDENT:( INHERIT: LEFT:0,FLOAT_LEFT RIGHT:0,FLOAT_RIGHT
NONE:0,FLOAT_NONE IDENT:)
-font_size:CSS_PROP_FONT_SIZE IDENT:( INHERIT: XX_SMALL:0,FONT_SIZE_XX_SMALL
X_SMALL:0,FONT_SIZE_X_SMALL SMALL:0,FONT_SIZE_SMALL MEDIUM:0,FONT_SIZE_MEDIUM
LARGE:0,FONT_SIZE_LARGE X_LARGE:0,FONT_SIZE_X_LARGE
XX_LARGE:0,FONT_SIZE_XX_LARGE LARGER:0,FONT_SIZE_LARGER
SMALLER:0,FONT_SIZE_SMALLER IDENT:) LENGTH_UNIT:( UNIT_PX:FONT_SIZE_DIMENSION
ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
+font_size:CSS_PROP_FONT_SIZE IDENT:( INHERIT: XX_SMALL:0,FONT_SIZE_XX_SMALL
X_SMALL:0,FONT_SIZE_X_SMALL SMALL:0,FONT_SIZE_SMALL MEDIUM:0,FONT_SIZE_MEDIUM
LARGE:0,FONT_SIZE_LARGE X_LARGE:0,FONT_SIZE_X_LARGE
XX_LARGE:0,FONT_SIZE_XX_LARGE LARGER:0,FONT_SIZE_LARGER
SMALLER:0,FONT_SIZE_SMALLER IDENT:) LENGTH_UNIT:( UNIT_PX:FONT_SIZE_DIMENSION
MASK:UNIT_MASK_FONT_SIZE RANGE:<0 LENGTH_UNIT:)
font_style:CSS_PROP_FONT_STYLE IDENT:( INHERIT: NORMAL:0,FONT_STYLE_NORMAL
ITALIC:0,FONT_STYLE_ITALIC OBLIQUE:0,FONT_STYLE_OBLIQUE IDENT:)
font_variant:CSS_PROP_FONT_VARIANT IDENT:( INHERIT:
NORMAL:0,FONT_VARIANT_NORMAL SMALL_CAPS:0,FONT_VARIANT_SMALL_CAPS IDENT:)
-height:CSS_PROP_HEIGHT IDENT:( INHERIT: AUTO:0,HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:HEIGHT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
+height:CSS_PROP_HEIGHT IDENT:( INHERIT: AUTO:0,HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:HEIGHT_SET MASK:UNIT_MASK_HEIGHT RANGE:<0 LENGTH_UNIT:)
-letter_spacing:CSS_PROP_LETTER_SPACING IDENT:( INHERIT:
NORMAL:0,LETTER_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:LETTER_SPACING_SET
ALLOW:unit&UNIT_LENGTH LENGTH_UNIT:)
+letter_spacing:CSS_PROP_LETTER_SPACING IDENT:( INHERIT:
NORMAL:0,LETTER_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:LETTER_SPACING_SET
MASK:UNIT_MASK_LETTER_SPACING LENGTH_UNIT:)
-line_height:CSS_PROP_LINE_HEIGHT IDENT:( INHERIT: NORMAL:0,LINE_HEIGHT_NORMAL
IDENT:) NUMBER:( false:LINE_HEIGHT_NUMBER RANGE:num<0 NUMBER:) LENGTH_UNIT:(
UNIT_PX:LINE_HEIGHT_DIMENSION ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
+line_height:CSS_PROP_LINE_HEIGHT IDENT:( INHERIT: NORMAL:0,LINE_HEIGHT_NORMAL
IDENT:) NUMBER:( false:LINE_HEIGHT_NUMBER RANGE:num<0 NUMBER:) LENGTH_UNIT:(
UNIT_PX:LINE_HEIGHT_DIMENSION MASK:UNIT_MASK_LINE_HEIGHT RANGE:<0 LENGTH_UNIT:)
border_top:BORDER_SIDE_TOP WRAP:css__parse_border_side
border_bottom:BORDER_SIDE_BOTTOM WRAP:css__parse_border_side
border_left:BORDER_SIDE_LEFT WRAP:css__parse_border_side
border_right:BORDER_SIDE_RIGHT WRAP:css__parse_border_side
-max_height:CSS_PROP_MAX_HEIGHT IDENT:( INHERIT: NONE:0,MAX_HEIGHT_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_HEIGHT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
+max_height:CSS_PROP_MAX_HEIGHT IDENT:( INHERIT: NONE:0,MAX_HEIGHT_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_HEIGHT_SET MASK:UNIT_MASK_MAX_HEIGHT RANGE:<0
LENGTH_UNIT:)
-max_width:CSS_PROP_MAX_WIDTH IDENT:( INHERIT: NONE:0,MAX_WIDTH_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_WIDTH_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
+max_width:CSS_PROP_MAX_WIDTH IDENT:( INHERIT: NONE:0,MAX_WIDTH_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_WIDTH_SET MASK:UNIT_MASK_MAX_WIDTH RANGE:<0
LENGTH_UNIT:)
-min_height:CSS_PROP_MIN_HEIGHT IDENT:( INHERIT: AUTO:0,MIN_HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
+min_height:CSS_PROP_MIN_HEIGHT IDENT:( INHERIT: AUTO:0,MIN_HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET MASK:UNIT_MASK_MIN_HEIGHT RANGE:<0
LENGTH_UNIT:)
-min_width:CSS_PROP_MIN_WIDTH IDENT:( INHERIT: AUTO:0,MIN_WIDTH_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
+min_width:CSS_PROP_MIN_WIDTH IDENT:( INHERIT: AUTO:0,MIN_WIDTH_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET MASK:UNIT_MASK_MIN_WIDTH RANGE:<0
LENGTH_UNIT:)
color:CSS_PROP_COLOR IDENT:INHERIT COLOR:COLOR_SET
#generic for padding_{top, bottom, left, right}.c
-padding_side:op GENERIC: IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:PADDING_SET
ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
+padding_side:op GENERIC: IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:PADDING_SET
MASK:UNIT_MASK_PADDING_SIDE RANGE:<0 LENGTH_UNIT:)
padding_bottom:CSS_PROP_PADDING_BOTTOM WRAP:css__parse_padding_side
padding_left:CSS_PROP_PADDING_LEFT WRAP:css__parse_padding_side
@@ -59,7 +59,7 @@ padding_right:CSS_PROP_PADDING_RIGHT
WRAP:css__parse_padding_side
#generic for margin_{top, bottom, left, right}.c
-margin_side:op GENERIC IDENT:( INHERIT: AUTO:0,MARGIN_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MARGIN_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) LENGTH_UNIT:)
+margin_side:op GENERIC IDENT:( INHERIT: AUTO:0,MARGIN_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MARGIN_SET MASK:UNIT_MASK_MARGIN_SIDE LENGTH_UNIT:)
margin_top:CSS_PROP_MARGIN_TOP WRAP:css__parse_margin_side
margin_bottom:CSS_PROP_MARGIN_BOTTOM WRAP:css__parse_margin_side
@@ -76,7 +76,7 @@ right:CSS_PROP_RIGHT WRAP:css__parse_side
#generic for border_{top, bottom, left, right}_width.c
-border_side_width:op GENERIC: IDENT:( INHERIT: THIN:0,BORDER_WIDTH_THIN
MEDIUM:0,BORDER_WIDTH_MEDIUM THICK:0,BORDER_WIDTH_THICK IDENT:) LENGTH_UNIT:(
UNIT_PX:BORDER_WIDTH_SET ALLOW:unit&UNIT_LENGTH RANGE:<0 LENGTH_UNIT:)
+border_side_width:op GENERIC: IDENT:( INHERIT: THIN:0,BORDER_WIDTH_THIN
MEDIUM:0,BORDER_WIDTH_MEDIUM THICK:0,BORDER_WIDTH_THICK IDENT:) LENGTH_UNIT:(
UNIT_PX:BORDER_WIDTH_SET MASK:UNIT_MASK_BORDER_SIDE_WIDTH RANGE:<0 LENGTH_UNIT:)
border_top_width:CSS_PROP_BORDER_TOP_WIDTH WRAP:css__parse_border_side_width
border_bottom_width:CSS_PROP_BORDER_BOTTOM_WIDTH
WRAP:css__parse_border_side_width
@@ -140,11 +140,11 @@ page_break_before:CSS_PROP_PAGE_BREAK_BEFORE IDENT:(
INHERIT: AUTO:0,PAGE_BREAK_
page_break_inside:CSS_PROP_PAGE_BREAK_INSIDE IDENT:( INHERIT:
AUTO:0,PAGE_BREAK_INSIDE_AUTO AVOID:0,PAGE_BREAK_INSIDE_AVOID IDENT:)
-pause_after:CSS_PROP_PAUSE_AFTER IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_AFTER_SET ALLOW:unit&(UNIT_TIME|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
+pause_after:CSS_PROP_PAUSE_AFTER IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_AFTER_SET MASK:UNIT_MASK_PAUSE_AFTER RANGE:<0 LENGTH_UNIT:)
-pause_before:CSS_PROP_PAUSE_BEFORE IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_BEFORE_SET ALLOW:unit&(UNIT_TIME|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
+pause_before:CSS_PROP_PAUSE_BEFORE IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_BEFORE_SET MASK:UNIT_MASK_PAUSE_BEFORE RANGE:<0 LENGTH_UNIT:)
-pitch:CSS_PROP_PITCH IDENT:( INHERIT: X_LOW:0,PITCH_X_LOW LOW:0,PITCH_LOW
MEDIUM:0,PITCH_MEDIUM HIGH:0,PITCH_HIGH X_HIGH:0,PITCH_X_HIGH IDENT:)
LENGTH_UNIT:( UNIT_HZ:PITCH_FREQUENCY ALLOW:unit&UNIT_FREQ RANGE:<0
LENGTH_UNIT:)
+pitch:CSS_PROP_PITCH IDENT:( INHERIT: X_LOW:0,PITCH_X_LOW LOW:0,PITCH_LOW
MEDIUM:0,PITCH_MEDIUM HIGH:0,PITCH_HIGH X_HIGH:0,PITCH_X_HIGH IDENT:)
LENGTH_UNIT:( UNIT_HZ:PITCH_FREQUENCY MASK:UNIT_MASK_PITCH RANGE:<0
LENGTH_UNIT:)
pitch_range:CSS_PROP_PITCH_RANGE IDENT:INHERIT NUMBER:( false:PITCH_RANGE_SET
RANGE:num<0||num>F_100 NUMBER:)
@@ -168,26 +168,26 @@ table_layout:CSS_PROP_TABLE_LAYOUT IDENT:( INHERIT:
AUTO:0,TABLE_LAYOUT_AUTO FIX
text_align:CSS_PROP_TEXT_ALIGN IDENT:( INHERIT: LEFT:0,TEXT_ALIGN_LEFT
RIGHT:0,TEXT_ALIGN_RIGHT CENTER:0,TEXT_ALIGN_CENTER
JUSTIFY:0,TEXT_ALIGN_JUSTIFY LIBCSS_LEFT:0,TEXT_ALIGN_LIBCSS_LEFT
LIBCSS_CENTER:0,TEXT_ALIGN_LIBCSS_CENTER LIBCSS_RIGHT:0,TEXT_ALIGN_LIBCSS_RIGHT
IDENT:)
-text_indent:CSS_PROP_TEXT_INDENT IDENT:INHERIT LENGTH_UNIT:(
UNIT_PX:TEXT_INDENT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) LENGTH_UNIT:)
+text_indent:CSS_PROP_TEXT_INDENT IDENT:INHERIT LENGTH_UNIT:(
UNIT_PX:TEXT_INDENT_SET MASK:UNIT_MASK_TEXT_INDENT LENGTH_UNIT:)
text_transform:CSS_PROP_TEXT_TRANSFORM IDENT:( INHERIT:
CAPITALIZE:0,TEXT_TRANSFORM_CAPITALIZE UPPERCASE:0,TEXT_TRANSFORM_UPPERCASE
LOWERCASE:0,TEXT_TRANSFORM_LOWERCASE NONE:0,TEXT_TRANSFORM_NONE IDENT:)
unicode_bidi:CSS_PROP_UNICODE_BIDI IDENT:( INHERIT:
NORMAL:0,UNICODE_BIDI_NORMAL EMBED:0,UNICODE_BIDI_EMBED
BIDI_OVERRIDE:0,UNICODE_BIDI_BIDI_OVERRIDE IDENT:)
-vertical_align:CSS_PROP_VERTICAL_ALIGN IDENT:( INHERIT:
BASELINE:0,VERTICAL_ALIGN_BASELINE SUB:0,VERTICAL_ALIGN_SUB
SUPER:0,VERTICAL_ALIGN_SUPER TOP:0,VERTICAL_ALIGN_TOP
TEXT_TOP:0,VERTICAL_ALIGN_TEXT_TOP MIDDLE:0,VERTICAL_ALIGN_MIDDLE
BOTTOM:0,VERTICAL_ALIGN_BOTTOM TEXT_BOTTOM:0,VERTICAL_ALIGN_TEXT_BOTTOM IDENT:)
LENGTH_UNIT:( UNIT_PX:VERTICAL_ALIGN_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT)
LENGTH_UNIT:)
+vertical_align:CSS_PROP_VERTICAL_ALIGN IDENT:( INHERIT:
BASELINE:0,VERTICAL_ALIGN_BASELINE SUB:0,VERTICAL_ALIGN_SUB
SUPER:0,VERTICAL_ALIGN_SUPER TOP:0,VERTICAL_ALIGN_TOP
TEXT_TOP:0,VERTICAL_ALIGN_TEXT_TOP MIDDLE:0,VERTICAL_ALIGN_MIDDLE
BOTTOM:0,VERTICAL_ALIGN_BOTTOM TEXT_BOTTOM:0,VERTICAL_ALIGN_TEXT_BOTTOM IDENT:)
LENGTH_UNIT:( UNIT_PX:VERTICAL_ALIGN_SET MASK:UNIT_MASK_VERTICAL_ALIGN
LENGTH_UNIT:)
visibility:CSS_PROP_VISIBILITY IDENT:( INHERIT: VISIBLE:0,VISIBILITY_VISIBLE
HIDDEN:0,VISIBILITY_HIDDEN COLLAPSE:0,VISIBILITY_COLLAPSE IDENT:)
-volume:CSS_PROP_VOLUME IDENT:( INHERIT: SILENT:0,VOLUME_SILENT
X_SOFT:0,VOLUME_X_SOFT SOFT:0,VOLUME_SOFT MEDIUM:0,VOLUME_MEDIUM
LOUD:0,VOLUME_LOUD X_LOUD:0,VOLUME_X_LOUD IDENT:) NUMBER:( false:VOLUME_NUMBER
RANGE:num<0||num>F_100 NUMBER:) LENGTH_UNIT:( UNIT_PX:VOLUME_DIMENSION
ALLOW:unit&UNIT_PCT RANGE:<0 LENGTH_UNIT:)
+volume:CSS_PROP_VOLUME IDENT:( INHERIT: SILENT:0,VOLUME_SILENT
X_SOFT:0,VOLUME_X_SOFT SOFT:0,VOLUME_SOFT MEDIUM:0,VOLUME_MEDIUM
LOUD:0,VOLUME_LOUD X_LOUD:0,VOLUME_X_LOUD IDENT:) NUMBER:( false:VOLUME_NUMBER
RANGE:num<0||num>F_100 NUMBER:) LENGTH_UNIT:( UNIT_PX:VOLUME_DIMENSION
MASK:UNIT_MASK_VOLUME RANGE:<0 LENGTH_UNIT:)
white_space:CSS_PROP_WHITE_SPACE IDENT:( INHERIT: NORMAL:0,WHITE_SPACE_NORMAL
PRE:0,WHITE_SPACE_PRE NOWRAP:0,WHITE_SPACE_NOWRAP
PRE_WRAP:0,WHITE_SPACE_PRE_WRAP PRE_LINE:0,WHITE_SPACE_PRE_LINE IDENT:)
widows:CSS_PROP_WIDOWS IDENT:INHERIT NUMBER:( true:WIDOWS_SET RANGE:num<0
NUMBER:)
-width:CSS_PROP_WIDTH IDENT:( INHERIT: AUTO:0,WIDTH_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:WIDTH_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
+width:CSS_PROP_WIDTH IDENT:( INHERIT: AUTO:0,WIDTH_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:WIDTH_SET MASK:UNIT_MASK_WIDTH RANGE:<0 LENGTH_UNIT:)
-word_spacing:CSS_PROP_WORD_SPACING IDENT:( INHERIT:
NORMAL:0,WORD_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:WORD_SPACING_SET
ALLOW:unit&UNIT_LENGTH LENGTH_UNIT:)
+word_spacing:CSS_PROP_WORD_SPACING IDENT:( INHERIT:
NORMAL:0,WORD_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:WORD_SPACING_SET
MASK:UNIT_MASK_WORD_SPACING LENGTH_UNIT:)
z_index:CSS_PROP_Z_INDEX IDENT:( INHERIT: AUTO:0,Z_INDEX_AUTO IDENT:) NUMBER:(
true:Z_INDEX_SET NUMBER:)
@@ -202,7 +202,7 @@ column_count:CSS_PROP_COLUMN_COUNT IDENT:( INHERIT:
AUTO:0,COLUMN_COUNT_AUTO IDE
column_fill:CSS_PROP_COLUMN_FILL IDENT:( INHERIT:
BALANCE:0,COLUMN_FILL_BALANCE AUTO:0,COLUMN_FILL_AUTO IDENT:)
-column_gap:CSS_PROP_COLUMN_GAP IDENT:( INHERIT: NORMAL:0,COLUMN_GAP_NORMAL
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_GAP_SET RANGE:<0 ALLOW:unit&UNIT_LENGTH
LENGTH_UNIT:)
+column_gap:CSS_PROP_COLUMN_GAP IDENT:( INHERIT: NORMAL:0,COLUMN_GAP_NORMAL
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_GAP_SET RANGE:<0 MASK:UNIT_MASK_COLUMN_GAP
LENGTH_UNIT:)
column_rule_color:CSS_PROP_COLUMN_RULE_COLOR IDENT:( INHERIT: IDENT:)
COLOR:COLUMN_RULE_COLOR_SET
@@ -212,7 +212,7 @@ column_rule_width:CSS_PROP_COLUMN_RULE_WIDTH
WRAP:css__parse_border_side_width
column_span:CSS_PROP_COLUMN_SPAN IDENT:( INHERIT: NONE:0,COLUMN_SPAN_NONE
ALL:0,COLUMN_SPAN_ALL IDENT:)
-column_width:CSS_PROP_COLUMN_WIDTH IDENT:( INHERIT: AUTO:0,COLUMN_WIDTH_AUTO
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_WIDTH_SET ALLOW:unit&UNIT_LENGTH
LENGTH_UNIT:)
+column_width:CSS_PROP_COLUMN_WIDTH IDENT:( INHERIT: AUTO:0,COLUMN_WIDTH_AUTO
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_WIDTH_SET MASK:UNIT_MASK_COLUMN_WIDTH
LENGTH_UNIT:)
writing_mode:CSS_PROP_WRITING_MODE IDENT:( INHERIT:
HORIZONTAL_TB:0,WRITING_MODE_HORIZONTAL_TB
VERTICAL_RL:0,WRITING_MODE_VERTICAL_RL VERTICAL_LR:0,WRITING_MODE_VERTICAL_LR
IDENT:)
@@ -224,7 +224,7 @@ align_items:CSS_PROP_ALIGN_ITEMS IDENT:( INHERIT:
STRETCH:0,ALIGN_ITEMS_STRETCH
align_self:CSS_PROP_ALIGN_SELF IDENT:( INHERIT: STRETCH:0,ALIGN_SELF_STRETCH
FLEX_START:0,ALIGN_SELF_FLEX_START FLEX_END:0,ALIGN_SELF_FLEX_END
CENTER:0,ALIGN_SELF_CENTER BASELINE:0,ALIGN_SELF_BASELINE
AUTO:0,ALIGN_SELF_AUTO IDENT:)
-flex_basis:CSS_PROP_FLEX_BASIS IDENT:( INHERIT: AUTO:0,FLEX_BASIS_AUTO
CONTENT:0,FLEX_BASIS_CONTENT IDENT:) LENGTH_UNIT:( UNIT_PX:FLEX_BASIS_SET
ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
+flex_basis:CSS_PROP_FLEX_BASIS IDENT:( INHERIT: AUTO:0,FLEX_BASIS_AUTO
CONTENT:0,FLEX_BASIS_CONTENT IDENT:) LENGTH_UNIT:( UNIT_PX:FLEX_BASIS_SET
MASK:UNIT_MASK_FLEX_BASIS RANGE:<0 LENGTH_UNIT:)
flex_direction:CSS_PROP_FLEX_DIRECTION IDENT:( INHERIT:
ROW:0,FLEX_DIRECTION_ROW ROW_REVERSE:0,FLEX_DIRECTION_ROW_REVERSE
COLUMN:0,FLEX_DIRECTION_COLUMN COLUMN_REVERSE:0,FLEX_DIRECTION_COLUMN_REVERSE
IDENT:)
diff --git a/src/parse/properties/properties.h
b/src/parse/properties/properties.h
index 1e085c5..1e7f821 100644
--- a/src/parse/properties/properties.h
+++ b/src/parse/properties/properties.h
@@ -458,4 +458,117 @@ css_error css__parse_z_index(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
+/** Mapping from property bytecode index to bytecode unit class mask. */
+extern const uint32_t property_unit_mask[CSS_N_PROPERTIES];
+
+#define UNIT_MASK_AZIMUTH (UNIT_ANGLE)
+#define UNIT_MASK_BACKGROUND_ATTACHMENT (0)
+#define UNIT_MASK_BACKGROUND_COLOR (0)
+#define UNIT_MASK_BACKGROUND_IMAGE (0)
+#define UNIT_MASK_BACKGROUND_POSITION (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_BACKGROUND_REPEAT (0)
+#define UNIT_MASK_BORDER_COLLAPSE (0)
+#define UNIT_MASK_BORDER_SPACING (UNIT_LENGTH)
+#define UNIT_MASK_BORDER_SIDE_COLOR (0)
+#define UNIT_MASK_BORDER_SIDE_STYLE (0)
+#define UNIT_MASK_BORDER_SIDE_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_BOTTOM (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_CAPTION_SIDE (0)
+#define UNIT_MASK_CLEAR (0)
+#define UNIT_MASK_CLIP (UNIT_LENGTH)
+#define UNIT_MASK_COLOR (0)
+#define UNIT_MASK_CONTENT (0)
+#define UNIT_MASK_COUNTER_INCREMENT (0)
+#define UNIT_MASK_COUNTER_RESET (0)
+#define UNIT_MASK_CUE_AFTER (0)
+#define UNIT_MASK_CUE_BEFORE (0)
+#define UNIT_MASK_CURSOR (0)
+#define UNIT_MASK_DIRECTION (0)
+#define UNIT_MASK_DISPLAY (0)
+#define UNIT_MASK_ELEVATION (UNIT_ANGLE)
+#define UNIT_MASK_EMPTY_CELLS (0)
+#define UNIT_MASK_FLOAT (0)
+#define UNIT_MASK_FONT_FAMILY (0)
+#define UNIT_MASK_FONT_SIZE (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_FONT_STYLE (0)
+#define UNIT_MASK_FONT_VARIANT (0)
+#define UNIT_MASK_FONT_WEIGHT (0)
+#define UNIT_MASK_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_LEFT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_LETTER_SPACING (UNIT_LENGTH)
+#define UNIT_MASK_LINE_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_LIST_STYLE_IMAGE (0)
+#define UNIT_MASK_LIST_STYLE_POSITION (0)
+#define UNIT_MASK_LIST_STYLE_TYPE (0)
+#define UNIT_MASK_MARGIN_SIDE (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MAX_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MAX_WIDTH (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MIN_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MIN_WIDTH (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_ORPHANS (0)
+#define UNIT_MASK_OUTLINE_COLOR (0)
+#define UNIT_MASK_OUTLINE_STYLE (0)
+#define UNIT_MASK_OUTLINE_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_OVERFLOW_X (0)
+#define UNIT_MASK_PADDING_SIDE (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_PAGE_BREAK_AFTER (0)
+#define UNIT_MASK_PAGE_BREAK_BEFORE (0)
+#define UNIT_MASK_PAGE_BREAK_INSIDE (0)
+#define UNIT_MASK_PAUSE_AFTER (UNIT_TIME | UNIT_PCT)
+#define UNIT_MASK_PAUSE_BEFORE (UNIT_TIME | UNIT_PCT)
+#define UNIT_MASK_PITCH_RANGE (0)
+#define UNIT_MASK_PITCH (UNIT_FREQ)
+#define UNIT_MASK_PLAY_DURING (0)
+#define UNIT_MASK_POSITION (0)
+#define UNIT_MASK_QUOTES (0)
+#define UNIT_MASK_RICHNESS (0)
+#define UNIT_MASK_RIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_SPEAK_HEADER (0)
+#define UNIT_MASK_SPEAK_NUMERAL (0)
+#define UNIT_MASK_SPEAK_PUNCTUATION (0)
+#define UNIT_MASK_SPEAK (0)
+#define UNIT_MASK_SPEECH_RATE (0)
+#define UNIT_MASK_STRESS (0)
+#define UNIT_MASK_TABLE_LAYOUT (0)
+#define UNIT_MASK_TEXT_ALIGN (0)
+#define UNIT_MASK_TEXT_DECORATION (0)
+#define UNIT_MASK_TEXT_INDENT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_TEXT_TRANSFORM (0)
+#define UNIT_MASK_TOP (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_UNICODE_BIDI (0)
+#define UNIT_MASK_VERTICAL_ALIGN (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_VISIBILITY (0)
+#define UNIT_MASK_VOICE_FAMILY (0)
+#define UNIT_MASK_VOLUME (UNIT_PCT)
+#define UNIT_MASK_WHITE_SPACE (0)
+#define UNIT_MASK_WIDOWS (0)
+#define UNIT_MASK_WIDTH (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_WORD_SPACING (UNIT_LENGTH)
+#define UNIT_MASK_Z_INDEX (0)
+#define UNIT_MASK_OPACITY (0)
+#define UNIT_MASK_BREAK_AFTER (0)
+#define UNIT_MASK_BREAK_BEFORE (0)
+#define UNIT_MASK_BREAK_INSIDE (0)
+#define UNIT_MASK_COLUMN_COUNT (0)
+#define UNIT_MASK_COLUMN_FILL (0)
+#define UNIT_MASK_COLUMN_GAP (UNIT_LENGTH)
+#define UNIT_MASK_COLUMN_RULE_COLOR (0)
+#define UNIT_MASK_COLUMN_RULE_STYLE (0)
+#define UNIT_MASK_COLUMN_RULE_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_COLUMN_SPAN (0)
+#define UNIT_MASK_COLUMN_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_WRITING_MODE (0)
+#define UNIT_MASK_OVERFLOW_Y (0)
+#define UNIT_MASK_BOX_SIZING (0)
+#define UNIT_MASK_ALIGN_CONTENT (0)
+#define UNIT_MASK_ALIGN_ITEMS (0)
+#define UNIT_MASK_ALIGN_SELF (0)
+#define UNIT_MASK_FLEX_BASIS (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_FLEX_DIRECTION (0)
+#define UNIT_MASK_FLEX_GROW (0)
+#define UNIT_MASK_FLEX_SHRINK (0)
+#define UNIT_MASK_FLEX_WRAP (0)
+#define UNIT_MASK_JUSTIFY_CONTENT (0)
+#define UNIT_MASK_ORDER (0)
+
#endif
commitdiff
http://git.netsurf-browser.org/libcss.git/commit/?id=d7c1541ac2d21577e58f2839879e71a2cebed229
commit d7c1541ac2d21577e58f2839879e71a2cebed229
Author: Michael Drake <Michael Drake [email protected]>
Commit: Michael Drake <Michael Drake [email protected]>
parse: properties.gen: Convert to using unit allow masks.
diff --git a/src/parse/properties/properties.gen
b/src/parse/properties/properties.gen
index 61dcd5e..db3a531 100644
--- a/src/parse/properties/properties.gen
+++ b/src/parse/properties/properties.gen
@@ -22,35 +22,35 @@ empty_cells:CSS_PROP_EMPTY_CELLS IDENT:( INHERIT:
SHOW:0,EMPTY_CELLS_SHOW HIDE:0
float:CSS_PROP_FLOAT IDENT:( INHERIT: LEFT:0,FLOAT_LEFT RIGHT:0,FLOAT_RIGHT
NONE:0,FLOAT_NONE IDENT:)
-font_size:CSS_PROP_FONT_SIZE IDENT:( INHERIT: XX_SMALL:0,FONT_SIZE_XX_SMALL
X_SMALL:0,FONT_SIZE_X_SMALL SMALL:0,FONT_SIZE_SMALL MEDIUM:0,FONT_SIZE_MEDIUM
LARGE:0,FONT_SIZE_LARGE X_LARGE:0,FONT_SIZE_X_LARGE
XX_LARGE:0,FONT_SIZE_XX_LARGE LARGER:0,FONT_SIZE_LARGER
SMALLER:0,FONT_SIZE_SMALLER IDENT:) LENGTH_UNIT:( UNIT_PX:FONT_SIZE_DIMENSION
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+font_size:CSS_PROP_FONT_SIZE IDENT:( INHERIT: XX_SMALL:0,FONT_SIZE_XX_SMALL
X_SMALL:0,FONT_SIZE_X_SMALL SMALL:0,FONT_SIZE_SMALL MEDIUM:0,FONT_SIZE_MEDIUM
LARGE:0,FONT_SIZE_LARGE X_LARGE:0,FONT_SIZE_X_LARGE
XX_LARGE:0,FONT_SIZE_XX_LARGE LARGER:0,FONT_SIZE_LARGER
SMALLER:0,FONT_SIZE_SMALLER IDENT:) LENGTH_UNIT:( UNIT_PX:FONT_SIZE_DIMENSION
ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
font_style:CSS_PROP_FONT_STYLE IDENT:( INHERIT: NORMAL:0,FONT_STYLE_NORMAL
ITALIC:0,FONT_STYLE_ITALIC OBLIQUE:0,FONT_STYLE_OBLIQUE IDENT:)
font_variant:CSS_PROP_FONT_VARIANT IDENT:( INHERIT:
NORMAL:0,FONT_VARIANT_NORMAL SMALL_CAPS:0,FONT_VARIANT_SMALL_CAPS IDENT:)
-height:CSS_PROP_HEIGHT IDENT:( INHERIT: AUTO:0,HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:HEIGHT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+height:CSS_PROP_HEIGHT IDENT:( INHERIT: AUTO:0,HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:HEIGHT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
-letter_spacing:CSS_PROP_LETTER_SPACING IDENT:( INHERIT:
NORMAL:0,LETTER_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:LETTER_SPACING_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+letter_spacing:CSS_PROP_LETTER_SPACING IDENT:( INHERIT:
NORMAL:0,LETTER_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:LETTER_SPACING_SET
ALLOW:unit&UNIT_LENGTH LENGTH_UNIT:)
-line_height:CSS_PROP_LINE_HEIGHT IDENT:( INHERIT: NORMAL:0,LINE_HEIGHT_NORMAL
IDENT:) NUMBER:( false:LINE_HEIGHT_NUMBER RANGE:num<0 NUMBER:) LENGTH_UNIT:(
UNIT_PX:LINE_HEIGHT_DIMENSION
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+line_height:CSS_PROP_LINE_HEIGHT IDENT:( INHERIT: NORMAL:0,LINE_HEIGHT_NORMAL
IDENT:) NUMBER:( false:LINE_HEIGHT_NUMBER RANGE:num<0 NUMBER:) LENGTH_UNIT:(
UNIT_PX:LINE_HEIGHT_DIMENSION ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
border_top:BORDER_SIDE_TOP WRAP:css__parse_border_side
border_bottom:BORDER_SIDE_BOTTOM WRAP:css__parse_border_side
border_left:BORDER_SIDE_LEFT WRAP:css__parse_border_side
border_right:BORDER_SIDE_RIGHT WRAP:css__parse_border_side
-max_height:CSS_PROP_MAX_HEIGHT IDENT:( INHERIT: NONE:0,MAX_HEIGHT_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_HEIGHT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+max_height:CSS_PROP_MAX_HEIGHT IDENT:( INHERIT: NONE:0,MAX_HEIGHT_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_HEIGHT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
-max_width:CSS_PROP_MAX_WIDTH IDENT:( INHERIT: NONE:0,MAX_WIDTH_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_WIDTH_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+max_width:CSS_PROP_MAX_WIDTH IDENT:( INHERIT: NONE:0,MAX_WIDTH_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_WIDTH_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
-min_height:CSS_PROP_MIN_HEIGHT IDENT:( INHERIT: AUTO:0,MIN_HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+min_height:CSS_PROP_MIN_HEIGHT IDENT:( INHERIT: AUTO:0,MIN_HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
-min_width:CSS_PROP_MIN_WIDTH IDENT:( INHERIT: AUTO:0,MIN_WIDTH_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+min_width:CSS_PROP_MIN_WIDTH IDENT:( INHERIT: AUTO:0,MIN_WIDTH_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0
LENGTH_UNIT:)
color:CSS_PROP_COLOR IDENT:INHERIT COLOR:COLOR_SET
#generic for padding_{top, bottom, left, right}.c
-padding_side:op GENERIC: IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:PADDING_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+padding_side:op GENERIC: IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:PADDING_SET
ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
padding_bottom:CSS_PROP_PADDING_BOTTOM WRAP:css__parse_padding_side
padding_left:CSS_PROP_PADDING_LEFT WRAP:css__parse_padding_side
@@ -59,7 +59,7 @@ padding_right:CSS_PROP_PADDING_RIGHT
WRAP:css__parse_padding_side
#generic for margin_{top, bottom, left, right}.c
-margin_side:op GENERIC IDENT:( INHERIT: AUTO:0,MARGIN_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MARGIN_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ LENGTH_UNIT:)
+margin_side:op GENERIC IDENT:( INHERIT: AUTO:0,MARGIN_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MARGIN_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) LENGTH_UNIT:)
margin_top:CSS_PROP_MARGIN_TOP WRAP:css__parse_margin_side
margin_bottom:CSS_PROP_MARGIN_BOTTOM WRAP:css__parse_margin_side
@@ -67,7 +67,7 @@ margin_left:CSS_PROP_MARGIN_LEFT WRAP:css__parse_margin_side
margin_right:CSS_PROP_MARGIN_RIGHT WRAP:css__parse_margin_side
#generic for {top, bottom, left, right}.c
-side:op GENERIC: IDENT:( INHERIT: AUTO:0,BOTTOM_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:BOTTOM_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ
LENGTH_UNIT:)
+side:op GENERIC: IDENT:( INHERIT: AUTO:0,BOTTOM_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:BOTTOM_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) LENGTH_UNIT:)
top:CSS_PROP_TOP WRAP:css__parse_side
bottom:CSS_PROP_BOTTOM WRAP:css__parse_side
@@ -76,7 +76,7 @@ right:CSS_PROP_RIGHT WRAP:css__parse_side
#generic for border_{top, bottom, left, right}_width.c
-border_side_width:op GENERIC: IDENT:( INHERIT: THIN:0,BORDER_WIDTH_THIN
MEDIUM:0,BORDER_WIDTH_MEDIUM THICK:0,BORDER_WIDTH_THICK IDENT:) LENGTH_UNIT:(
UNIT_PX:BORDER_WIDTH_SET
DISALLOW:unit==UNIT_PCT||unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ
RANGE:<0 LENGTH_UNIT:)
+border_side_width:op GENERIC: IDENT:( INHERIT: THIN:0,BORDER_WIDTH_THIN
MEDIUM:0,BORDER_WIDTH_MEDIUM THICK:0,BORDER_WIDTH_THICK IDENT:) LENGTH_UNIT:(
UNIT_PX:BORDER_WIDTH_SET ALLOW:unit&UNIT_LENGTH RANGE:<0 LENGTH_UNIT:)
border_top_width:CSS_PROP_BORDER_TOP_WIDTH WRAP:css__parse_border_side_width
border_bottom_width:CSS_PROP_BORDER_BOTTOM_WIDTH
WRAP:css__parse_border_side_width
@@ -140,9 +140,9 @@ page_break_before:CSS_PROP_PAGE_BREAK_BEFORE IDENT:(
INHERIT: AUTO:0,PAGE_BREAK_
page_break_inside:CSS_PROP_PAGE_BREAK_INSIDE IDENT:( INHERIT:
AUTO:0,PAGE_BREAK_INSIDE_AUTO AVOID:0,PAGE_BREAK_INSIDE_AVOID IDENT:)
-pause_after:CSS_PROP_PAUSE_AFTER IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_AFTER_SET DISALLOW:(unit&UNIT_TIME)==false&&(unit&UNIT_PCT)==false
RANGE:<0 LENGTH_UNIT:)
+pause_after:CSS_PROP_PAUSE_AFTER IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_AFTER_SET ALLOW:unit&(UNIT_TIME|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
-pause_before:CSS_PROP_PAUSE_BEFORE IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_BEFORE_SET
DISALLOW:(unit&UNIT_TIME)==false&&(unit&UNIT_PCT)==false RANGE:<0 LENGTH_UNIT:)
+pause_before:CSS_PROP_PAUSE_BEFORE IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_BEFORE_SET ALLOW:unit&(UNIT_TIME|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
pitch:CSS_PROP_PITCH IDENT:( INHERIT: X_LOW:0,PITCH_X_LOW LOW:0,PITCH_LOW
MEDIUM:0,PITCH_MEDIUM HIGH:0,PITCH_HIGH X_HIGH:0,PITCH_X_HIGH IDENT:)
LENGTH_UNIT:( UNIT_HZ:PITCH_FREQUENCY ALLOW:unit&UNIT_FREQ RANGE:<0
LENGTH_UNIT:)
@@ -168,13 +168,13 @@ table_layout:CSS_PROP_TABLE_LAYOUT IDENT:( INHERIT:
AUTO:0,TABLE_LAYOUT_AUTO FIX
text_align:CSS_PROP_TEXT_ALIGN IDENT:( INHERIT: LEFT:0,TEXT_ALIGN_LEFT
RIGHT:0,TEXT_ALIGN_RIGHT CENTER:0,TEXT_ALIGN_CENTER
JUSTIFY:0,TEXT_ALIGN_JUSTIFY LIBCSS_LEFT:0,TEXT_ALIGN_LIBCSS_LEFT
LIBCSS_CENTER:0,TEXT_ALIGN_LIBCSS_CENTER LIBCSS_RIGHT:0,TEXT_ALIGN_LIBCSS_RIGHT
IDENT:)
-text_indent:CSS_PROP_TEXT_INDENT IDENT:INHERIT LENGTH_UNIT:(
UNIT_PX:TEXT_INDENT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ LENGTH_UNIT:)
+text_indent:CSS_PROP_TEXT_INDENT IDENT:INHERIT LENGTH_UNIT:(
UNIT_PX:TEXT_INDENT_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) LENGTH_UNIT:)
text_transform:CSS_PROP_TEXT_TRANSFORM IDENT:( INHERIT:
CAPITALIZE:0,TEXT_TRANSFORM_CAPITALIZE UPPERCASE:0,TEXT_TRANSFORM_UPPERCASE
LOWERCASE:0,TEXT_TRANSFORM_LOWERCASE NONE:0,TEXT_TRANSFORM_NONE IDENT:)
unicode_bidi:CSS_PROP_UNICODE_BIDI IDENT:( INHERIT:
NORMAL:0,UNICODE_BIDI_NORMAL EMBED:0,UNICODE_BIDI_EMBED
BIDI_OVERRIDE:0,UNICODE_BIDI_BIDI_OVERRIDE IDENT:)
-vertical_align:CSS_PROP_VERTICAL_ALIGN IDENT:( INHERIT:
BASELINE:0,VERTICAL_ALIGN_BASELINE SUB:0,VERTICAL_ALIGN_SUB
SUPER:0,VERTICAL_ALIGN_SUPER TOP:0,VERTICAL_ALIGN_TOP
TEXT_TOP:0,VERTICAL_ALIGN_TEXT_TOP MIDDLE:0,VERTICAL_ALIGN_MIDDLE
BOTTOM:0,VERTICAL_ALIGN_BOTTOM TEXT_BOTTOM:0,VERTICAL_ALIGN_TEXT_BOTTOM IDENT:)
LENGTH_UNIT:( UNIT_PX:VERTICAL_ALIGN_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ LENGTH_UNIT:)
+vertical_align:CSS_PROP_VERTICAL_ALIGN IDENT:( INHERIT:
BASELINE:0,VERTICAL_ALIGN_BASELINE SUB:0,VERTICAL_ALIGN_SUB
SUPER:0,VERTICAL_ALIGN_SUPER TOP:0,VERTICAL_ALIGN_TOP
TEXT_TOP:0,VERTICAL_ALIGN_TEXT_TOP MIDDLE:0,VERTICAL_ALIGN_MIDDLE
BOTTOM:0,VERTICAL_ALIGN_BOTTOM TEXT_BOTTOM:0,VERTICAL_ALIGN_TEXT_BOTTOM IDENT:)
LENGTH_UNIT:( UNIT_PX:VERTICAL_ALIGN_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT)
LENGTH_UNIT:)
visibility:CSS_PROP_VISIBILITY IDENT:( INHERIT: VISIBLE:0,VISIBILITY_VISIBLE
HIDDEN:0,VISIBILITY_HIDDEN COLLAPSE:0,VISIBILITY_COLLAPSE IDENT:)
@@ -185,9 +185,9 @@ white_space:CSS_PROP_WHITE_SPACE IDENT:( INHERIT:
NORMAL:0,WHITE_SPACE_NORMAL PR
widows:CSS_PROP_WIDOWS IDENT:INHERIT NUMBER:( true:WIDOWS_SET RANGE:num<0
NUMBER:)
-width:CSS_PROP_WIDTH IDENT:( INHERIT: AUTO:0,WIDTH_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:WIDTH_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ
RANGE:<0 LENGTH_UNIT:)
+width:CSS_PROP_WIDTH IDENT:( INHERIT: AUTO:0,WIDTH_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:WIDTH_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
-word_spacing:CSS_PROP_WORD_SPACING IDENT:( INHERIT:
NORMAL:0,WORD_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:WORD_SPACING_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+word_spacing:CSS_PROP_WORD_SPACING IDENT:( INHERIT:
NORMAL:0,WORD_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:WORD_SPACING_SET
ALLOW:unit&UNIT_LENGTH LENGTH_UNIT:)
z_index:CSS_PROP_Z_INDEX IDENT:( INHERIT: AUTO:0,Z_INDEX_AUTO IDENT:) NUMBER:(
true:Z_INDEX_SET NUMBER:)
@@ -202,7 +202,7 @@ column_count:CSS_PROP_COLUMN_COUNT IDENT:( INHERIT:
AUTO:0,COLUMN_COUNT_AUTO IDE
column_fill:CSS_PROP_COLUMN_FILL IDENT:( INHERIT:
BALANCE:0,COLUMN_FILL_BALANCE AUTO:0,COLUMN_FILL_AUTO IDENT:)
-column_gap:CSS_PROP_COLUMN_GAP IDENT:( INHERIT: NORMAL:0,COLUMN_GAP_NORMAL
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_GAP_SET RANGE:<0
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+column_gap:CSS_PROP_COLUMN_GAP IDENT:( INHERIT: NORMAL:0,COLUMN_GAP_NORMAL
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_GAP_SET RANGE:<0 ALLOW:unit&UNIT_LENGTH
LENGTH_UNIT:)
column_rule_color:CSS_PROP_COLUMN_RULE_COLOR IDENT:( INHERIT: IDENT:)
COLOR:COLUMN_RULE_COLOR_SET
@@ -212,7 +212,7 @@ column_rule_width:CSS_PROP_COLUMN_RULE_WIDTH
WRAP:css__parse_border_side_width
column_span:CSS_PROP_COLUMN_SPAN IDENT:( INHERIT: NONE:0,COLUMN_SPAN_NONE
ALL:0,COLUMN_SPAN_ALL IDENT:)
-column_width:CSS_PROP_COLUMN_WIDTH IDENT:( INHERIT: AUTO:0,COLUMN_WIDTH_AUTO
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_WIDTH_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+column_width:CSS_PROP_COLUMN_WIDTH IDENT:( INHERIT: AUTO:0,COLUMN_WIDTH_AUTO
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_WIDTH_SET ALLOW:unit&UNIT_LENGTH
LENGTH_UNIT:)
writing_mode:CSS_PROP_WRITING_MODE IDENT:( INHERIT:
HORIZONTAL_TB:0,WRITING_MODE_HORIZONTAL_TB
VERTICAL_RL:0,WRITING_MODE_VERTICAL_RL VERTICAL_LR:0,WRITING_MODE_VERTICAL_LR
IDENT:)
@@ -224,7 +224,7 @@ align_items:CSS_PROP_ALIGN_ITEMS IDENT:( INHERIT:
STRETCH:0,ALIGN_ITEMS_STRETCH
align_self:CSS_PROP_ALIGN_SELF IDENT:( INHERIT: STRETCH:0,ALIGN_SELF_STRETCH
FLEX_START:0,ALIGN_SELF_FLEX_START FLEX_END:0,ALIGN_SELF_FLEX_END
CENTER:0,ALIGN_SELF_CENTER BASELINE:0,ALIGN_SELF_BASELINE
AUTO:0,ALIGN_SELF_AUTO IDENT:)
-flex_basis:CSS_PROP_FLEX_BASIS IDENT:( INHERIT: AUTO:0,FLEX_BASIS_AUTO
CONTENT:0,FLEX_BASIS_CONTENT IDENT:) LENGTH_UNIT:( UNIT_PX:FLEX_BASIS_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+flex_basis:CSS_PROP_FLEX_BASIS IDENT:( INHERIT: AUTO:0,FLEX_BASIS_AUTO
CONTENT:0,FLEX_BASIS_CONTENT IDENT:) LENGTH_UNIT:( UNIT_PX:FLEX_BASIS_SET
ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) RANGE:<0 LENGTH_UNIT:)
flex_direction:CSS_PROP_FLEX_DIRECTION IDENT:( INHERIT:
ROW:0,FLEX_DIRECTION_ROW ROW_REVERSE:0,FLEX_DIRECTION_ROW_REVERSE
COLUMN:0,FLEX_DIRECTION_COLUMN COLUMN_REVERSE:0,FLEX_DIRECTION_COLUMN_REVERSE
IDENT:)
commitdiff
http://git.netsurf-browser.org/libcss.git/commit/?id=0b84fa9cc67593667002d7e7953d90400a66ac09
commit 0b84fa9cc67593667002d7e7953d90400a66ac09
Author: Michael Drake <Michael Drake [email protected]>
Commit: Michael Drake <Michael Drake [email protected]>
bytecode: Change unit representation, so that length has a bit set.
This means that we can use a mask to check the unit class.
diff --git a/docs/Bytecode b/docs/Bytecode
index dd0f424..880ccbd 100644
--- a/docs/Bytecode
+++ b/docs/Bytecode
@@ -33,7 +33,7 @@ The table is found in the stylesheet object.
CSS dimensions are stored as two 32bit values: <length, units>.
Length is a 32bit numeric value (as described above) and unit is as follows:
- bit 8 clear => length unit
+ bit 8 set => length unit
bits 9-31: MBZ
bits 0-7 :
00000000 => px
@@ -58,11 +58,11 @@ Length is a 32bit numeric value (as described above) and
unit is as follows:
00010011 => vmax
00010100 => q
- bit 8 set => percentage unit
+ bit 9 set => percentage unit
bits 9-31: MBZ
bits 0-7 : MBZ
- bit 9 set => angle unit
+ bit 10 set => angle unit
bits 10-31: MBZ
bit 8 : MBZ
bits 0-7 :
@@ -71,21 +71,21 @@ Length is a 32bit numeric value (as described above) and
unit is as follows:
00000010 => rad
00000011 => turn
- bit 10 set => time unit
+ bit 11 set => time unit
bits 11-31: MBZ
bits 8-9 : MBZ
bits 0-7 :
00000000 => ms
00000001 => s
- bit 11 set => frequency unit
+ bit 12 set => frequency unit
bits 12-31: MBZ
bits 8-10 : MBZ
bits 0-7 :
00000000 => Hz
00000001 => kHz
- bit 12 set => resolution unit
+ bit 13 set => resolution unit
bits 13-31: MBZ
bits 8-11 : MBZ
bits 0-7 :
diff --git a/src/bytecode/bytecode.h b/src/bytecode/bytecode.h
index 22703f7..7518281 100644
--- a/src/bytecode/bytecode.h
+++ b/src/bytecode/bytecode.h
@@ -23,49 +23,51 @@ enum flag {
FLAG_INHERIT = (1<<1)
};
+
typedef enum unit {
- UNIT_PX = 0,
- UNIT_EX = 1,
- UNIT_EM = 2,
- UNIT_IN = 3,
- UNIT_CM = 4,
- UNIT_MM = 5,
- UNIT_PT = 6,
- UNIT_PC = 7,
- UNIT_CAP = 8,
- UNIT_CH = 9,
- UNIT_IC = 10,
- UNIT_REM = 11,
- UNIT_LH = 12,
- UNIT_RLH = 13,
- UNIT_VH = 14,
- UNIT_VW = 15,
- UNIT_VI = 16,
- UNIT_VB = 17,
- UNIT_VMIN = 18,
- UNIT_VMAX = 19,
- UNIT_Q = 20,
-
- UNIT_PCT = (1 << 8),
-
- UNIT_ANGLE = (1 << 9),
- UNIT_DEG = (1 << 9) + 0,
- UNIT_GRAD = (1 << 9) + 1,
- UNIT_RAD = (1 << 9) + 2,
- UNIT_TURN = (1 << 9) + 3,
-
- UNIT_TIME = (1 << 10),
- UNIT_MS = (1 << 10) + 0,
- UNIT_S = (1 << 10) + 1,
-
- UNIT_FREQ = (1 << 11),
- UNIT_HZ = (1 << 11) + 0,
- UNIT_KHZ = (1 << 11) + 1,
-
- UNIT_RESOLUTION = (1 << 12),
- UNIT_DPI = (1 << 12) + 0,
- UNIT_DPCM = (1 << 12) + 1,
- UNIT_DPPX = (1 << 12) + 2,
+ UNIT_LENGTH = (1u << 8),
+ UNIT_PX = (1u << 8) + 0,
+ UNIT_EX = (1u << 8) + 1,
+ UNIT_EM = (1u << 8) + 2,
+ UNIT_IN = (1u << 8) + 3,
+ UNIT_CM = (1u << 8) + 4,
+ UNIT_MM = (1u << 8) + 5,
+ UNIT_PT = (1u << 8) + 6,
+ UNIT_PC = (1u << 8) + 7,
+ UNIT_CAP = (1u << 8) + 8,
+ UNIT_CH = (1u << 8) + 9,
+ UNIT_IC = (1u << 8) + 10,
+ UNIT_REM = (1u << 8) + 11,
+ UNIT_LH = (1u << 8) + 12,
+ UNIT_RLH = (1u << 8) + 13,
+ UNIT_VH = (1u << 8) + 14,
+ UNIT_VW = (1u << 8) + 15,
+ UNIT_VI = (1u << 8) + 16,
+ UNIT_VB = (1u << 8) + 17,
+ UNIT_VMIN = (1u << 8) + 18,
+ UNIT_VMAX = (1u << 8) + 19,
+ UNIT_Q = (1u << 8) + 20,
+
+ UNIT_PCT = (1 << 9),
+
+ UNIT_ANGLE = (1 << 10),
+ UNIT_DEG = (1 << 10) + 0,
+ UNIT_GRAD = (1 << 10) + 1,
+ UNIT_RAD = (1 << 10) + 2,
+ UNIT_TURN = (1 << 10) + 3,
+
+ UNIT_TIME = (1 << 11),
+ UNIT_MS = (1 << 11) + 0,
+ UNIT_S = (1 << 11) + 1,
+
+ UNIT_FREQ = (1 << 12),
+ UNIT_HZ = (1 << 12) + 0,
+ UNIT_KHZ = (1 << 12) + 1,
+
+ UNIT_RESOLUTION = (1 << 13),
+ UNIT_DPI = (1 << 13) + 0,
+ UNIT_DPCM = (1 << 13) + 1,
+ UNIT_DPPX = (1 << 13) + 2,
} unit;
typedef uint32_t colour;
diff --git a/test/data/parse/properties.dat b/test/data/parse/properties.dat
index 3dcb5a4..302b2dc 100644
--- a/test/data/parse/properties.dat
+++ b/test/data/parse/properties.dat
@@ -182,7 +182,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0x0000b400 0x00000200
+| 0x02000000 0x0000b400 0x00000400
#reset
#data
@@ -190,7 +190,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0xffff4c00 0x00000200
+| 0x02000000 0xffff4c00 0x00000400
#reset
#data
@@ -198,7 +198,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0x0000c800 0x00000201
+| 0x02000000 0x0000c800 0x00000401
#reset
#data
@@ -206,7 +206,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0x00000324 0x00000202
+| 0x02000000 0x00000324 0x00000402
#reset
#data
@@ -214,7 +214,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0xfffffcdc 0x00000202
+| 0x02000000 0xfffffcdc 0x00000402
#reset
##
@@ -350,7 +350,7 @@
#errors
#expected
| 1 *
-| 0x02000004 0x00002800 0x00000100
+| 0x02000004 0x00002800 0x00000200
#reset
#data
@@ -358,7 +358,7 @@
#errors
#expected
| 1 *
-| 0x02000004 0x00000800 0x00000000
+| 0x02000004 0x00000800 0x00000100
#reset
#data
@@ -366,7 +366,7 @@
#errors
#expected
| 1 *
-| 0x02200004 0x00002800 0x00000100 0x00005000 0x00000100
+| 0x02200004 0x00002800 0x00000200 0x00005000 0x00000200
#reset
#data
@@ -374,7 +374,7 @@
#errors
#expected
| 1 *
-| 0x02200004 0x00002800 0x00000100 0x00000800 0x00000000
+| 0x02200004 0x00002800 0x00000200 0x00000800 0x00000100
#reset
#data
@@ -382,7 +382,7 @@
#errors
#expected
| 1 *
-| 0x02040004 0x00000800 0x00000000
+| 0x02040004 0x00000800 0x00000100
#reset
# possible quirk
@@ -391,7 +391,7 @@
##errors
##expected
#| 1 *
-#| 0x02040004 0x00000800 0x00000000
+#| 0x02040004 0x00000800 0x00000100
##reset
#data
@@ -399,7 +399,7 @@
#errors
#expected
| 1 *
-| 0x00a00004 0x00002800 0x00000100
+| 0x00a00004 0x00002800 0x00000200
#reset
#data
@@ -407,7 +407,7 @@
#errors
#expected
| 1 *
-| 0x02200404 0x00002800 0x00000100 0x00005000 0x00000100
+| 0x02200404 0x00002800 0x00000200 0x00005000 0x00000200
#reset
##
@@ -475,7 +475,7 @@
#errors
#expected
| 1 *
-| 0x02000007 0x00000c00 0x00000002 0x00000c00 0x00000002
+| 0x02000007 0x00000c00 0x00000102 0x00000c00 0x00000102
#reset
#data
@@ -483,7 +483,7 @@
#errors
#expected
| 1 *
-| 0x02000007 0x00000a00 0x00000002 0x00000a00 0x00000002
+| 0x02000007 0x00000a00 0x00000102 0x00000a00 0x00000102
#reset
#data
@@ -491,7 +491,7 @@
#errors
#expected
| 1 *
-| 0x02000007 0x00000c00 0x00000000 0x00000a00 0x00000002
+| 0x02000007 0x00000c00 0x00000100 0x00000a00 0x00000102
#reset
#data
@@ -499,7 +499,7 @@
#errors
#expected
| 1 *
-| 0x02000407 0x00000c00 0x00000002 0x00000c00 0x00000002
+| 0x02000407 0x00000c00 0x00000102 0x00000c00 0x00000102
#reset
#data
@@ -507,7 +507,7 @@
#errors
#expected
| 1 *
-| 0x02000407 0x00000a00 0x00000002 0x00000a00 0x00000002
+| 0x02000407 0x00000a00 0x00000102 0x00000a00 0x00000102
#reset
#data
@@ -515,7 +515,7 @@
#errors
#expected
| 1 *
-| 0x02000407 0x00000c00 0x00000000 0x00000a00 0x00000002
+| 0x02000407 0x00000c00 0x00000100 0x00000a00 0x00000102
#reset
##
@@ -688,7 +688,7 @@
#errors
#expected
| 1 *
-| 0x02000013 0x00000000 0x00000000
+| 0x02000013 0x00000000 0x00000100
#reset
#data
@@ -696,7 +696,7 @@
#errors
#expected
| 1 *
-| 0x02000010 0x00000800 0x00000000
+| 0x02000010 0x00000800 0x00000100
#reset
##
@@ -716,7 +716,7 @@
#errors
#expected
| 1 *
-| 0x02000014 0x00000300 0x00000002
+| 0x02000014 0x00000300 0x00000102
#reset
#data
@@ -724,7 +724,7 @@
#errors
#expected
| 1 *
-| 0x02000014 0x00010aab 0x00000100
+| 0x02000014 0x00010aab 0x00000200
#reset
##
@@ -800,7 +800,7 @@
#errors
#expected
| 1 *
-| 0x02c00017 0x00002800 0x00000000 0x00002800 0x00000000
+| 0x02c00017 0x00002800 0x00000100 0x00002800 0x00000100
#reset
#data
@@ -816,7 +816,7 @@
#errors
#expected
| 1 *
-| 0x02000017 0x00000400 0x00000000 0x00000800 0x00000000 0x00000c00
0x00000000 0x00001000 0x00000000
+| 0x02000017 0x00000400 0x00000100 0x00000800 0x00000100 0x00000c00
0x00000100 0x00001000 0x00000100
#reset
#data
@@ -824,7 +824,7 @@
#errors
#expected
| 1 *
-| 0x03200017 0x00000400 0x00000002 0x00000400 0x00000002
+| 0x03200017 0x00000400 0x00000102 0x00000400 0x00000102
#reset
#data
@@ -832,7 +832,7 @@
#errors
#expected
| 1 *
-| 0x02000017 0x00000000 0x00000000 0x00037000 0x00000000 0x000006cd
0x00000002 0x00000000 0x00000000
+| 0x02000017 0x00000000 0x00000100 0x00037000 0x00000100 0x000006cd
0x00000102 0x00000000 0x00000100
#reset
#data
@@ -848,7 +848,7 @@
#errors
#expected
| 1 *
-| 0x02c00417 0x00002800 0x00000000 0x00002800 0x00000000
+| 0x02c00417 0x00002800 0x00000100 0x00002800 0x00000100
#reset
#data
@@ -864,7 +864,7 @@
#errors
#expected
| 1 *
-| 0x02000417 0x00000400 0x00000000 0x00000800 0x00000000 0x00000c00
0x00000000 0x00001000 0x00000000
+| 0x02000417 0x00000400 0x00000100 0x00000800 0x00000100 0x00000c00
0x00000100 0x00001000 0x00000100
#reset
#data
@@ -872,7 +872,7 @@
#errors
#expected
| 1 *
-| 0x03200417 0x00000400 0x00000002 0x00000400 0x00000002
+| 0x03200417 0x00000400 0x00000102 0x00000400 0x00000102
#reset
#data
@@ -880,7 +880,7 @@
#errors
#expected
| 1 *
-| 0x02000417 0x00000000 0x00000000 0x00037000 0x00000000 0x000006cd
0x00000002 0x00000000 0x00000000
+| 0x02000417 0x00000000 0x00000100 0x00037000 0x00000100 0x000006cd
0x00000102 0x00000000 0x00000100
#reset
##
@@ -1708,7 +1708,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x0000b400 0x00000200
+| 0x02000021 0x0000b400 0x00000400
#reset
#data
@@ -1716,7 +1716,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0xffff4c00 0x00000200
+| 0x02000021 0xffff4c00 0x00000400
#reset
#data
@@ -1724,7 +1724,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x0000c800 0x00000201
+| 0x02000021 0x0000c800 0x00000401
#reset
#data
@@ -1732,7 +1732,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x00000324 0x00000202
+| 0x02000021 0x00000324 0x00000402
#reset
#data
@@ -1748,7 +1748,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000421 0x0000b400 0x00000200
+| 0x02000421 0x0000b400 0x00000400
#reset
##
@@ -1956,7 +1956,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000025 0x00003000 0x00000006
+| 0x02000025 0x00003000 0x00000106
#reset
#data
@@ -1964,7 +1964,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000025 0x00019000 0x00000000
+| 0x02000025 0x00019000 0x00000100
#reset
#data
@@ -1972,7 +1972,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000025 0x0001e000 0x00000100
+| 0x02000025 0x0001e000 0x00000200
#reset
##
@@ -2148,7 +2148,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000029 0x061a7fff 0x00000001
+| 0x02000029 0x061a7fff 0x00000101
#reset
#data
@@ -2156,7 +2156,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000029 0x00010aab 0x00000100
+| 0x02000029 0x00010aab 0x00000200
#reset
##
@@ -2176,7 +2176,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002a 0x00000200 0x00000003
+| 0x0200002a 0x00000200 0x00000103
#reset
#data
@@ -2184,7 +2184,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002a 0x00001000 0x00000100
+| 0x0200002a 0x00001000 0x00000200
#reset
##
@@ -2204,7 +2204,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002b 0x00000152 0x00000004
+| 0x0200002b 0x00000152 0x00000104
#reset
#data
@@ -2212,7 +2212,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200042b 0x00000152 0x00000004
+| 0x0200042b 0x00000152 0x00000104
#reset
##
@@ -2240,7 +2240,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204002c 0x00003000 0x00000005
+| 0x0204002c 0x00003000 0x00000105
#reset
#data
@@ -2256,7 +2256,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204042c 0x00003000 0x00000005
+| 0x0204042c 0x00003000 0x00000105
#reset
#data
@@ -2264,7 +2264,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204002c 0x00008552 0x00000100
+| 0x0204002c 0x00008552 0x00000200
#reset
##
@@ -2475,7 +2475,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000030 0x00002800 0x00000007
+| 0x02000030 0x00002800 0x00000107
#reset
#data
@@ -2483,7 +2483,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000031 0x00000400 0x00000000
+| 0x02000031 0x00000400 0x00000100
#reset
#data
@@ -2491,7 +2491,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000032 0x00000800 0x00000002
+| 0x02000032 0x00000800 0x00000102
#reset
#data
@@ -2499,7 +2499,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000033 0x00001400 0x00000100
+| 0x02000033 0x00001400 0x00000200
#reset
##
@@ -2519,7 +2519,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000034 0x00019000 0x00000000
+| 0x02000034 0x00019000 0x00000100
#reset
#data
@@ -2527,7 +2527,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000434 0x00019000 0x00000000
+| 0x02000434 0x00019000 0x00000100
#reset
#data
@@ -2535,7 +2535,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000034 0x0000c800 0x00000100
+| 0x02000034 0x0000c800 0x00000200
#reset
##
@@ -2555,7 +2555,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x00019000 0x00000000
+| 0x02000035 0x00019000 0x00000100
#reset
#data
@@ -2563,7 +2563,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x0000c800 0x00000100
+| 0x02000035 0x0000c800 0x00000200
#reset
##
@@ -2575,7 +2575,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x00019000 0x00000000
+| 0x02000036 0x00019000 0x00000100
#reset
#data
@@ -2583,7 +2583,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x0000c800 0x00000100
+| 0x02000036 0x0000c800 0x00000200
#reset
##
@@ -2595,7 +2595,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000037 0x00019000 0x00000000
+| 0x02000037 0x00019000 0x00000100
#reset
#data
@@ -2603,7 +2603,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000037 0x0000c800 0x00000100
+| 0x02000037 0x0000c800 0x00000200
#reset
##
@@ -2763,7 +2763,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003b 0x00000c00 0x00000000
+| 0x0200003b 0x00000c00 0x00000100
#reset
#data
@@ -2771,7 +2771,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003b 0x00000000 0x00000000
+| 0x0200003b 0x00000000 0x00000100
#reset
##
@@ -2858,7 +2858,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003d 0x00002800 0x00000007
+| 0x0200003d 0x00002800 0x00000107
#reset
#data
@@ -2866,7 +2866,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003e 0x00000400 0x00000000
+| 0x0200003e 0x00000400 0x00000100
#reset
#data
@@ -2874,7 +2874,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003f 0x00000800 0x00000002
+| 0x0200003f 0x00000800 0x00000102
#reset
#data
@@ -2882,7 +2882,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000040 0x00001400 0x00000100
+| 0x02000040 0x00001400 0x00000200
#reset
##
@@ -3002,7 +3002,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x00000000 0x00000401
+| 0x02000044 0x00000000 0x00000801
#reset
#data
@@ -3010,7 +3010,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x00019000 0x00000400
+| 0x02000044 0x00019000 0x00000800
#reset
#data
@@ -3018,7 +3018,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x000002cd 0x00000401
+| 0x02000044 0x000002cd 0x00000801
#reset
#data
@@ -3026,7 +3026,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x0001e000 0x00000100
+| 0x02000044 0x0001e000 0x00000200
#reset
##
@@ -3038,7 +3038,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x00000000 0x00000401
+| 0x02000045 0x00000000 0x00000801
#reset
#data
@@ -3046,7 +3046,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x00019000 0x00000400
+| 0x02000045 0x00019000 0x00000800
#reset
#data
@@ -3054,7 +3054,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x000002cd 0x00000401
+| 0x02000045 0x000002cd 0x00000801
#reset
#data
@@ -3062,7 +3062,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x0001e000 0x00000100
+| 0x02000045 0x0001e000 0x00000200
#reset
##
@@ -3150,7 +3150,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00000000 0x00000800
+| 0x02000047 0x00000000 0x00001000
#reset
#data
@@ -3158,7 +3158,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000447 0x00000000 0x00000800
+| 0x02000447 0x00000000 0x00001000
#reset
#data
@@ -3166,7 +3166,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00064000 0x00000800
+| 0x02000047 0x00064000 0x00001000
#reset
#data
@@ -3174,7 +3174,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00000466 0x00000801
+| 0x02000047 0x00000466 0x00001001
#reset
##
@@ -3370,7 +3370,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004c 0x00000200 0x00000003
+| 0x0200004c 0x00000200 0x00000103
#reset
#data
@@ -3378,7 +3378,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004c 0x00001000 0x00000100
+| 0x0200004c 0x00001000 0x00000200
#reset
##
@@ -3738,7 +3738,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000056 0x00000000 0x00000000
+| 0x02000056 0x00000000 0x00000100
#reset
#data
@@ -3746,7 +3746,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000056 0x00003000 0x00000005
+| 0x02000056 0x00003000 0x00000105
#reset
#data
@@ -3754,7 +3754,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000056 0x00008552 0x00000100
+| 0x02000056 0x00008552 0x00000200
#reset
##
@@ -3810,7 +3810,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000058 0x00000200 0x00000003
+| 0x02000058 0x00000200 0x00000103
#reset
#data
@@ -3818,7 +3818,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000058 0x00001000 0x00000100
+| 0x02000058 0x00001000 0x00000200
#reset
##
@@ -3922,7 +3922,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200045a 0xffffd800 0x00000100
+| 0x0200045a 0xffffd800 0x00000200
#reset
#data
@@ -3930,7 +3930,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0xffffd800 0x00000100
+| 0x0200005a 0xffffd800 0x00000200
#reset
#data
@@ -3938,7 +3938,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0x00005000 0x00000100
+| 0x0200005a 0x00005000 0x00000200
#reset
#data
@@ -3946,7 +3946,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0x00001000 0x00000000
+| 0x0200005a 0x00001000 0x00000100
#reset
#data
@@ -3954,7 +3954,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0xfffff000 0x00000000
+| 0x0200005a 0xfffff000 0x00000100
#reset
##
@@ -4135,7 +4135,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204005d 0x00008552 0x00000100
+| 0x0204005d 0x00008552 0x00000200
#reset
# dunno if % can be tested here, cos it's a percentage of the inherited value
@@ -4144,7 +4144,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204045d 0x00008552 0x00000100
+| 0x0204045d 0x00008552 0x00000200
#reset
##
@@ -4220,7 +4220,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000060 0x061a7fff 0x00000001
+| 0x02000060 0x061a7fff 0x00000101
#reset
#data
@@ -4228,7 +4228,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000060 0x00010aab 0x00000100
+| 0x02000060 0x00010aab 0x00000200
#reset
##
@@ -4248,7 +4248,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000061 0x00000066 0x00000002
+| 0x02000061 0x00000066 0x00000102
#reset
##
@@ -4540,7 +4540,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000069 0x00000066 0x00000002
+| 0x02000069 0x00000066 0x00000102
#reset
##
@@ -4688,7 +4688,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200006c 0x00000c00 0x00000000
+| 0x0200006c 0x00000c00 0x00000100
#reset
#data
@@ -4696,7 +4696,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200006c 0x00000000 0x00000000
+| 0x0200006c 0x00000000 0x00000100
#reset
##
@@ -4736,7 +4736,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200006e 0x00000066 0x00000002
+| 0x0200006e 0x00000066 0x00000102
#reset
##
-----------------------------------------------------------------------
Summary of changes:
docs/Bytecode | 12 +-
src/bytecode/bytecode.h | 86 +++++-----
src/parse/properties/css_property_parser_gen.c | 7 +
src/parse/properties/properties.c | 128 +++++++++++++++
src/parse/properties/properties.gen | 46 +++---
src/parse/properties/properties.h | 113 +++++++++++++
test/data/parse/properties.dat | 200 ++++++++++++------------
7 files changed, 421 insertions(+), 171 deletions(-)
diff --git a/docs/Bytecode b/docs/Bytecode
index dd0f424..880ccbd 100644
--- a/docs/Bytecode
+++ b/docs/Bytecode
@@ -33,7 +33,7 @@ The table is found in the stylesheet object.
CSS dimensions are stored as two 32bit values: <length, units>.
Length is a 32bit numeric value (as described above) and unit is as follows:
- bit 8 clear => length unit
+ bit 8 set => length unit
bits 9-31: MBZ
bits 0-7 :
00000000 => px
@@ -58,11 +58,11 @@ Length is a 32bit numeric value (as described above) and
unit is as follows:
00010011 => vmax
00010100 => q
- bit 8 set => percentage unit
+ bit 9 set => percentage unit
bits 9-31: MBZ
bits 0-7 : MBZ
- bit 9 set => angle unit
+ bit 10 set => angle unit
bits 10-31: MBZ
bit 8 : MBZ
bits 0-7 :
@@ -71,21 +71,21 @@ Length is a 32bit numeric value (as described above) and
unit is as follows:
00000010 => rad
00000011 => turn
- bit 10 set => time unit
+ bit 11 set => time unit
bits 11-31: MBZ
bits 8-9 : MBZ
bits 0-7 :
00000000 => ms
00000001 => s
- bit 11 set => frequency unit
+ bit 12 set => frequency unit
bits 12-31: MBZ
bits 8-10 : MBZ
bits 0-7 :
00000000 => Hz
00000001 => kHz
- bit 12 set => resolution unit
+ bit 13 set => resolution unit
bits 13-31: MBZ
bits 8-11 : MBZ
bits 0-7 :
diff --git a/src/bytecode/bytecode.h b/src/bytecode/bytecode.h
index 22703f7..7518281 100644
--- a/src/bytecode/bytecode.h
+++ b/src/bytecode/bytecode.h
@@ -23,49 +23,51 @@ enum flag {
FLAG_INHERIT = (1<<1)
};
+
typedef enum unit {
- UNIT_PX = 0,
- UNIT_EX = 1,
- UNIT_EM = 2,
- UNIT_IN = 3,
- UNIT_CM = 4,
- UNIT_MM = 5,
- UNIT_PT = 6,
- UNIT_PC = 7,
- UNIT_CAP = 8,
- UNIT_CH = 9,
- UNIT_IC = 10,
- UNIT_REM = 11,
- UNIT_LH = 12,
- UNIT_RLH = 13,
- UNIT_VH = 14,
- UNIT_VW = 15,
- UNIT_VI = 16,
- UNIT_VB = 17,
- UNIT_VMIN = 18,
- UNIT_VMAX = 19,
- UNIT_Q = 20,
-
- UNIT_PCT = (1 << 8),
-
- UNIT_ANGLE = (1 << 9),
- UNIT_DEG = (1 << 9) + 0,
- UNIT_GRAD = (1 << 9) + 1,
- UNIT_RAD = (1 << 9) + 2,
- UNIT_TURN = (1 << 9) + 3,
-
- UNIT_TIME = (1 << 10),
- UNIT_MS = (1 << 10) + 0,
- UNIT_S = (1 << 10) + 1,
-
- UNIT_FREQ = (1 << 11),
- UNIT_HZ = (1 << 11) + 0,
- UNIT_KHZ = (1 << 11) + 1,
-
- UNIT_RESOLUTION = (1 << 12),
- UNIT_DPI = (1 << 12) + 0,
- UNIT_DPCM = (1 << 12) + 1,
- UNIT_DPPX = (1 << 12) + 2,
+ UNIT_LENGTH = (1u << 8),
+ UNIT_PX = (1u << 8) + 0,
+ UNIT_EX = (1u << 8) + 1,
+ UNIT_EM = (1u << 8) + 2,
+ UNIT_IN = (1u << 8) + 3,
+ UNIT_CM = (1u << 8) + 4,
+ UNIT_MM = (1u << 8) + 5,
+ UNIT_PT = (1u << 8) + 6,
+ UNIT_PC = (1u << 8) + 7,
+ UNIT_CAP = (1u << 8) + 8,
+ UNIT_CH = (1u << 8) + 9,
+ UNIT_IC = (1u << 8) + 10,
+ UNIT_REM = (1u << 8) + 11,
+ UNIT_LH = (1u << 8) + 12,
+ UNIT_RLH = (1u << 8) + 13,
+ UNIT_VH = (1u << 8) + 14,
+ UNIT_VW = (1u << 8) + 15,
+ UNIT_VI = (1u << 8) + 16,
+ UNIT_VB = (1u << 8) + 17,
+ UNIT_VMIN = (1u << 8) + 18,
+ UNIT_VMAX = (1u << 8) + 19,
+ UNIT_Q = (1u << 8) + 20,
+
+ UNIT_PCT = (1 << 9),
+
+ UNIT_ANGLE = (1 << 10),
+ UNIT_DEG = (1 << 10) + 0,
+ UNIT_GRAD = (1 << 10) + 1,
+ UNIT_RAD = (1 << 10) + 2,
+ UNIT_TURN = (1 << 10) + 3,
+
+ UNIT_TIME = (1 << 11),
+ UNIT_MS = (1 << 11) + 0,
+ UNIT_S = (1 << 11) + 1,
+
+ UNIT_FREQ = (1 << 12),
+ UNIT_HZ = (1 << 12) + 0,
+ UNIT_KHZ = (1 << 12) + 1,
+
+ UNIT_RESOLUTION = (1 << 13),
+ UNIT_DPI = (1 << 13) + 0,
+ UNIT_DPCM = (1 << 13) + 1,
+ UNIT_DPPX = (1 << 13) + 2,
} unit;
typedef uint32_t colour;
diff --git a/src/parse/properties/css_property_parser_gen.c
b/src/parse/properties/css_property_parser_gen.c
index 0e6ce72..24cc536 100644
--- a/src/parse/properties/css_property_parser_gen.c
+++ b/src/parse/properties/css_property_parser_gen.c
@@ -326,6 +326,13 @@ void output_length_unit(FILE *outputf, struct keyval
*parseid, struct keyval_lis
"\t\t\treturn CSS_INVALID;\n"
"\t\t}\n\n",
ulkv->val);
+ } else if (strcmp(ulkv->key, "MASK") == 0) {
+ fprintf(outputf,
+ "\t\tif ((unit & %s ) == 0) {\n"
+ "\t\t\t*ctx = orig_ctx;\n"
+ "\t\t\treturn CSS_INVALID;\n"
+ "\t\t}\n\n",
+ ulkv->val);
} else if (strcmp(ulkv->key, "RANGE") == 0) {
fprintf(outputf,
"\t\tif (length %s) {\n"
diff --git a/src/parse/properties/properties.c
b/src/parse/properties/properties.c
index 3f374fa..06524da 100644
--- a/src/parse/properties/properties.c
+++ b/src/parse/properties/properties.c
@@ -158,3 +158,131 @@ const css_prop_handler property_handlers[LAST_PROP + 1 -
FIRST_PROP] =
css__parse_writing_mode,
css__parse_z_index
};
+
+/** Mapping from property bytecode index to bytecode unit class mask. */
+const uint32_t property_unit_mask[CSS_N_PROPERTIES] = {
+ [CSS_PROP_AZIMUTH] = UNIT_MASK_AZIMUTH,
+ [CSS_PROP_BACKGROUND_ATTACHMENT] = UNIT_MASK_BACKGROUND_ATTACHMENT,
+ [CSS_PROP_BACKGROUND_COLOR] = UNIT_MASK_BACKGROUND_COLOR,
+ [CSS_PROP_BACKGROUND_IMAGE] = UNIT_MASK_BACKGROUND_IMAGE,
+ [CSS_PROP_BACKGROUND_POSITION] = UNIT_MASK_BACKGROUND_POSITION,
+ [CSS_PROP_BACKGROUND_REPEAT] = UNIT_MASK_BACKGROUND_REPEAT,
+ [CSS_PROP_BORDER_COLLAPSE] = UNIT_MASK_BORDER_COLLAPSE,
+ [CSS_PROP_BORDER_SPACING] = UNIT_MASK_BORDER_SPACING,
+ [CSS_PROP_BORDER_TOP_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_RIGHT_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_BOTTOM_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_LEFT_COLOR] = UNIT_MASK_BORDER_SIDE_COLOR,
+ [CSS_PROP_BORDER_TOP_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_RIGHT_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_BOTTOM_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_LEFT_STYLE] = UNIT_MASK_BORDER_SIDE_STYLE,
+ [CSS_PROP_BORDER_TOP_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BORDER_RIGHT_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BORDER_BOTTOM_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BORDER_LEFT_WIDTH] = UNIT_MASK_BORDER_SIDE_WIDTH,
+ [CSS_PROP_BOTTOM] = UNIT_MASK_BOTTOM,
+ [CSS_PROP_CAPTION_SIDE] = UNIT_MASK_CAPTION_SIDE,
+ [CSS_PROP_CLEAR] = UNIT_MASK_CLEAR,
+ [CSS_PROP_CLIP] = UNIT_MASK_CLIP,
+ [CSS_PROP_COLOR] = UNIT_MASK_COLOR,
+ [CSS_PROP_CONTENT] = UNIT_MASK_CONTENT,
+ [CSS_PROP_COUNTER_INCREMENT] = UNIT_MASK_COUNTER_INCREMENT,
+ [CSS_PROP_COUNTER_RESET] = UNIT_MASK_COUNTER_RESET,
+ [CSS_PROP_CUE_AFTER] = UNIT_MASK_CUE_AFTER,
+ [CSS_PROP_CUE_BEFORE] = UNIT_MASK_CUE_BEFORE,
+ [CSS_PROP_CURSOR] = UNIT_MASK_CURSOR,
+ [CSS_PROP_DIRECTION] = UNIT_MASK_DIRECTION,
+ [CSS_PROP_DISPLAY] = UNIT_MASK_DISPLAY,
+ [CSS_PROP_ELEVATION] = UNIT_MASK_ELEVATION,
+ [CSS_PROP_EMPTY_CELLS] = UNIT_MASK_EMPTY_CELLS,
+ [CSS_PROP_FLOAT] = UNIT_MASK_FLOAT,
+ [CSS_PROP_FONT_FAMILY] = UNIT_MASK_FONT_FAMILY,
+ [CSS_PROP_FONT_SIZE] = UNIT_MASK_FONT_SIZE,
+ [CSS_PROP_FONT_STYLE] = UNIT_MASK_FONT_STYLE,
+ [CSS_PROP_FONT_VARIANT] = UNIT_MASK_FONT_VARIANT,
+ [CSS_PROP_FONT_WEIGHT] = UNIT_MASK_FONT_WEIGHT,
+ [CSS_PROP_HEIGHT] = UNIT_MASK_HEIGHT,
+ [CSS_PROP_LEFT] = UNIT_MASK_LEFT,
+ [CSS_PROP_LETTER_SPACING] = UNIT_MASK_LETTER_SPACING,
+ [CSS_PROP_LINE_HEIGHT] = UNIT_MASK_LINE_HEIGHT,
+ [CSS_PROP_LIST_STYLE_IMAGE] = UNIT_MASK_LIST_STYLE_IMAGE,
+ [CSS_PROP_LIST_STYLE_POSITION] = UNIT_MASK_LIST_STYLE_POSITION,
+ [CSS_PROP_LIST_STYLE_TYPE] = UNIT_MASK_LIST_STYLE_TYPE,
+ [CSS_PROP_MARGIN_TOP] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MARGIN_RIGHT] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MARGIN_BOTTOM] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MARGIN_LEFT] = UNIT_MASK_MARGIN_SIDE,
+ [CSS_PROP_MAX_HEIGHT] = UNIT_MASK_MAX_HEIGHT,
+ [CSS_PROP_MAX_WIDTH] = UNIT_MASK_MAX_WIDTH,
+ [CSS_PROP_MIN_HEIGHT] = UNIT_MASK_MIN_HEIGHT,
+ [CSS_PROP_MIN_WIDTH] = UNIT_MASK_MIN_WIDTH,
+ [CSS_PROP_ORPHANS] = UNIT_MASK_ORPHANS,
+ [CSS_PROP_OUTLINE_COLOR] = UNIT_MASK_OUTLINE_COLOR,
+ [CSS_PROP_OUTLINE_STYLE] = UNIT_MASK_OUTLINE_STYLE,
+ [CSS_PROP_OUTLINE_WIDTH] = UNIT_MASK_OUTLINE_WIDTH,
+ [CSS_PROP_OVERFLOW_X] = UNIT_MASK_OVERFLOW_X,
+ [CSS_PROP_PADDING_TOP] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PADDING_RIGHT] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PADDING_BOTTOM] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PADDING_LEFT] = UNIT_MASK_PADDING_SIDE,
+ [CSS_PROP_PAGE_BREAK_AFTER] = UNIT_MASK_PAGE_BREAK_AFTER,
+ [CSS_PROP_PAGE_BREAK_BEFORE] = UNIT_MASK_PAGE_BREAK_BEFORE,
+ [CSS_PROP_PAGE_BREAK_INSIDE] = UNIT_MASK_PAGE_BREAK_INSIDE,
+ [CSS_PROP_PAUSE_AFTER] = UNIT_MASK_PAUSE_AFTER,
+ [CSS_PROP_PAUSE_BEFORE] = UNIT_MASK_PAUSE_BEFORE,
+ [CSS_PROP_PITCH_RANGE] = UNIT_MASK_PITCH_RANGE,
+ [CSS_PROP_PITCH] = UNIT_MASK_PITCH,
+ [CSS_PROP_PLAY_DURING] = UNIT_MASK_PLAY_DURING,
+ [CSS_PROP_POSITION] = UNIT_MASK_POSITION,
+ [CSS_PROP_QUOTES] = UNIT_MASK_QUOTES,
+ [CSS_PROP_RICHNESS] = UNIT_MASK_RICHNESS,
+ [CSS_PROP_RIGHT] = UNIT_MASK_RIGHT,
+ [CSS_PROP_SPEAK_HEADER] = UNIT_MASK_SPEAK_HEADER,
+ [CSS_PROP_SPEAK_NUMERAL] = UNIT_MASK_SPEAK_NUMERAL,
+ [CSS_PROP_SPEAK_PUNCTUATION] = UNIT_MASK_SPEAK_PUNCTUATION,
+ [CSS_PROP_SPEAK] = UNIT_MASK_SPEAK,
+ [CSS_PROP_SPEECH_RATE] = UNIT_MASK_SPEECH_RATE,
+ [CSS_PROP_STRESS] = UNIT_MASK_STRESS,
+ [CSS_PROP_TABLE_LAYOUT] = UNIT_MASK_TABLE_LAYOUT,
+ [CSS_PROP_TEXT_ALIGN] = UNIT_MASK_TEXT_ALIGN,
+ [CSS_PROP_TEXT_DECORATION] = UNIT_MASK_TEXT_DECORATION,
+ [CSS_PROP_TEXT_INDENT] = UNIT_MASK_TEXT_INDENT,
+ [CSS_PROP_TEXT_TRANSFORM] = UNIT_MASK_TEXT_TRANSFORM,
+ [CSS_PROP_TOP] = UNIT_MASK_TOP,
+ [CSS_PROP_UNICODE_BIDI] = UNIT_MASK_UNICODE_BIDI,
+ [CSS_PROP_VERTICAL_ALIGN] = UNIT_MASK_VERTICAL_ALIGN,
+ [CSS_PROP_VISIBILITY] = UNIT_MASK_VISIBILITY,
+ [CSS_PROP_VOICE_FAMILY] = UNIT_MASK_VOICE_FAMILY,
+ [CSS_PROP_VOLUME] = UNIT_MASK_VOLUME,
+ [CSS_PROP_WHITE_SPACE] = UNIT_MASK_WHITE_SPACE,
+ [CSS_PROP_WIDOWS] = UNIT_MASK_WIDOWS,
+ [CSS_PROP_WIDTH] = UNIT_MASK_WIDTH,
+ [CSS_PROP_WORD_SPACING] = UNIT_MASK_WORD_SPACING,
+ [CSS_PROP_Z_INDEX] = UNIT_MASK_Z_INDEX,
+ [CSS_PROP_OPACITY] = UNIT_MASK_OPACITY,
+ [CSS_PROP_BREAK_AFTER] = UNIT_MASK_BREAK_AFTER,
+ [CSS_PROP_BREAK_BEFORE] = UNIT_MASK_BREAK_BEFORE,
+ [CSS_PROP_BREAK_INSIDE] = UNIT_MASK_BREAK_INSIDE,
+ [CSS_PROP_COLUMN_COUNT] = UNIT_MASK_COLUMN_COUNT,
+ [CSS_PROP_COLUMN_FILL] = UNIT_MASK_COLUMN_FILL,
+ [CSS_PROP_COLUMN_GAP] = UNIT_MASK_COLUMN_GAP,
+ [CSS_PROP_COLUMN_RULE_COLOR] = UNIT_MASK_COLUMN_RULE_COLOR,
+ [CSS_PROP_COLUMN_RULE_STYLE] = UNIT_MASK_COLUMN_RULE_STYLE,
+ [CSS_PROP_COLUMN_RULE_WIDTH] = UNIT_MASK_COLUMN_RULE_WIDTH,
+ [CSS_PROP_COLUMN_SPAN] = UNIT_MASK_COLUMN_SPAN,
+ [CSS_PROP_COLUMN_WIDTH] = UNIT_MASK_COLUMN_WIDTH,
+ [CSS_PROP_WRITING_MODE] = UNIT_MASK_WRITING_MODE,
+ [CSS_PROP_OVERFLOW_Y] = UNIT_MASK_OVERFLOW_Y,
+ [CSS_PROP_BOX_SIZING] = UNIT_MASK_BOX_SIZING,
+ [CSS_PROP_ALIGN_CONTENT] = UNIT_MASK_ALIGN_CONTENT,
+ [CSS_PROP_ALIGN_ITEMS] = UNIT_MASK_ALIGN_ITEMS,
+ [CSS_PROP_ALIGN_SELF] = UNIT_MASK_ALIGN_SELF,
+ [CSS_PROP_FLEX_BASIS] = UNIT_MASK_FLEX_BASIS,
+ [CSS_PROP_FLEX_DIRECTION] = UNIT_MASK_FLEX_DIRECTION,
+ [CSS_PROP_FLEX_GROW] = UNIT_MASK_FLEX_GROW,
+ [CSS_PROP_FLEX_SHRINK] = UNIT_MASK_FLEX_SHRINK,
+ [CSS_PROP_FLEX_WRAP] = UNIT_MASK_FLEX_WRAP,
+ [CSS_PROP_JUSTIFY_CONTENT] = UNIT_MASK_JUSTIFY_CONTENT,
+ [CSS_PROP_ORDER] = UNIT_MASK_ORDER,
+};
diff --git a/src/parse/properties/properties.gen
b/src/parse/properties/properties.gen
index 61dcd5e..e729285 100644
--- a/src/parse/properties/properties.gen
+++ b/src/parse/properties/properties.gen
@@ -22,35 +22,35 @@ empty_cells:CSS_PROP_EMPTY_CELLS IDENT:( INHERIT:
SHOW:0,EMPTY_CELLS_SHOW HIDE:0
float:CSS_PROP_FLOAT IDENT:( INHERIT: LEFT:0,FLOAT_LEFT RIGHT:0,FLOAT_RIGHT
NONE:0,FLOAT_NONE IDENT:)
-font_size:CSS_PROP_FONT_SIZE IDENT:( INHERIT: XX_SMALL:0,FONT_SIZE_XX_SMALL
X_SMALL:0,FONT_SIZE_X_SMALL SMALL:0,FONT_SIZE_SMALL MEDIUM:0,FONT_SIZE_MEDIUM
LARGE:0,FONT_SIZE_LARGE X_LARGE:0,FONT_SIZE_X_LARGE
XX_LARGE:0,FONT_SIZE_XX_LARGE LARGER:0,FONT_SIZE_LARGER
SMALLER:0,FONT_SIZE_SMALLER IDENT:) LENGTH_UNIT:( UNIT_PX:FONT_SIZE_DIMENSION
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+font_size:CSS_PROP_FONT_SIZE IDENT:( INHERIT: XX_SMALL:0,FONT_SIZE_XX_SMALL
X_SMALL:0,FONT_SIZE_X_SMALL SMALL:0,FONT_SIZE_SMALL MEDIUM:0,FONT_SIZE_MEDIUM
LARGE:0,FONT_SIZE_LARGE X_LARGE:0,FONT_SIZE_X_LARGE
XX_LARGE:0,FONT_SIZE_XX_LARGE LARGER:0,FONT_SIZE_LARGER
SMALLER:0,FONT_SIZE_SMALLER IDENT:) LENGTH_UNIT:( UNIT_PX:FONT_SIZE_DIMENSION
MASK:UNIT_MASK_FONT_SIZE RANGE:<0 LENGTH_UNIT:)
font_style:CSS_PROP_FONT_STYLE IDENT:( INHERIT: NORMAL:0,FONT_STYLE_NORMAL
ITALIC:0,FONT_STYLE_ITALIC OBLIQUE:0,FONT_STYLE_OBLIQUE IDENT:)
font_variant:CSS_PROP_FONT_VARIANT IDENT:( INHERIT:
NORMAL:0,FONT_VARIANT_NORMAL SMALL_CAPS:0,FONT_VARIANT_SMALL_CAPS IDENT:)
-height:CSS_PROP_HEIGHT IDENT:( INHERIT: AUTO:0,HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:HEIGHT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+height:CSS_PROP_HEIGHT IDENT:( INHERIT: AUTO:0,HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:HEIGHT_SET MASK:UNIT_MASK_HEIGHT RANGE:<0 LENGTH_UNIT:)
-letter_spacing:CSS_PROP_LETTER_SPACING IDENT:( INHERIT:
NORMAL:0,LETTER_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:LETTER_SPACING_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+letter_spacing:CSS_PROP_LETTER_SPACING IDENT:( INHERIT:
NORMAL:0,LETTER_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:LETTER_SPACING_SET
MASK:UNIT_MASK_LETTER_SPACING LENGTH_UNIT:)
-line_height:CSS_PROP_LINE_HEIGHT IDENT:( INHERIT: NORMAL:0,LINE_HEIGHT_NORMAL
IDENT:) NUMBER:( false:LINE_HEIGHT_NUMBER RANGE:num<0 NUMBER:) LENGTH_UNIT:(
UNIT_PX:LINE_HEIGHT_DIMENSION
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+line_height:CSS_PROP_LINE_HEIGHT IDENT:( INHERIT: NORMAL:0,LINE_HEIGHT_NORMAL
IDENT:) NUMBER:( false:LINE_HEIGHT_NUMBER RANGE:num<0 NUMBER:) LENGTH_UNIT:(
UNIT_PX:LINE_HEIGHT_DIMENSION MASK:UNIT_MASK_LINE_HEIGHT RANGE:<0 LENGTH_UNIT:)
border_top:BORDER_SIDE_TOP WRAP:css__parse_border_side
border_bottom:BORDER_SIDE_BOTTOM WRAP:css__parse_border_side
border_left:BORDER_SIDE_LEFT WRAP:css__parse_border_side
border_right:BORDER_SIDE_RIGHT WRAP:css__parse_border_side
-max_height:CSS_PROP_MAX_HEIGHT IDENT:( INHERIT: NONE:0,MAX_HEIGHT_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_HEIGHT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+max_height:CSS_PROP_MAX_HEIGHT IDENT:( INHERIT: NONE:0,MAX_HEIGHT_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_HEIGHT_SET MASK:UNIT_MASK_MAX_HEIGHT RANGE:<0
LENGTH_UNIT:)
-max_width:CSS_PROP_MAX_WIDTH IDENT:( INHERIT: NONE:0,MAX_WIDTH_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_WIDTH_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+max_width:CSS_PROP_MAX_WIDTH IDENT:( INHERIT: NONE:0,MAX_WIDTH_NONE IDENT:)
LENGTH_UNIT:( UNIT_PX:MAX_WIDTH_SET MASK:UNIT_MASK_MAX_WIDTH RANGE:<0
LENGTH_UNIT:)
-min_height:CSS_PROP_MIN_HEIGHT IDENT:( INHERIT: AUTO:0,MIN_HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+min_height:CSS_PROP_MIN_HEIGHT IDENT:( INHERIT: AUTO:0,MIN_HEIGHT_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_HEIGHT_SET MASK:UNIT_MASK_MIN_HEIGHT RANGE:<0
LENGTH_UNIT:)
-min_width:CSS_PROP_MIN_WIDTH IDENT:( INHERIT: AUTO:0,MIN_WIDTH_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+min_width:CSS_PROP_MIN_WIDTH IDENT:( INHERIT: AUTO:0,MIN_WIDTH_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MIN_WIDTH_SET MASK:UNIT_MASK_MIN_WIDTH RANGE:<0
LENGTH_UNIT:)
color:CSS_PROP_COLOR IDENT:INHERIT COLOR:COLOR_SET
#generic for padding_{top, bottom, left, right}.c
-padding_side:op GENERIC: IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:PADDING_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+padding_side:op GENERIC: IDENT:INHERIT LENGTH_UNIT:( UNIT_PX:PADDING_SET
MASK:UNIT_MASK_PADDING_SIDE RANGE:<0 LENGTH_UNIT:)
padding_bottom:CSS_PROP_PADDING_BOTTOM WRAP:css__parse_padding_side
padding_left:CSS_PROP_PADDING_LEFT WRAP:css__parse_padding_side
@@ -59,7 +59,7 @@ padding_right:CSS_PROP_PADDING_RIGHT
WRAP:css__parse_padding_side
#generic for margin_{top, bottom, left, right}.c
-margin_side:op GENERIC IDENT:( INHERIT: AUTO:0,MARGIN_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MARGIN_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ LENGTH_UNIT:)
+margin_side:op GENERIC IDENT:( INHERIT: AUTO:0,MARGIN_AUTO IDENT:)
LENGTH_UNIT:( UNIT_PX:MARGIN_SET MASK:UNIT_MASK_MARGIN_SIDE LENGTH_UNIT:)
margin_top:CSS_PROP_MARGIN_TOP WRAP:css__parse_margin_side
margin_bottom:CSS_PROP_MARGIN_BOTTOM WRAP:css__parse_margin_side
@@ -67,7 +67,7 @@ margin_left:CSS_PROP_MARGIN_LEFT WRAP:css__parse_margin_side
margin_right:CSS_PROP_MARGIN_RIGHT WRAP:css__parse_margin_side
#generic for {top, bottom, left, right}.c
-side:op GENERIC: IDENT:( INHERIT: AUTO:0,BOTTOM_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:BOTTOM_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ
LENGTH_UNIT:)
+side:op GENERIC: IDENT:( INHERIT: AUTO:0,BOTTOM_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:BOTTOM_SET ALLOW:unit&(UNIT_LENGTH|UNIT_PCT) LENGTH_UNIT:)
top:CSS_PROP_TOP WRAP:css__parse_side
bottom:CSS_PROP_BOTTOM WRAP:css__parse_side
@@ -76,7 +76,7 @@ right:CSS_PROP_RIGHT WRAP:css__parse_side
#generic for border_{top, bottom, left, right}_width.c
-border_side_width:op GENERIC: IDENT:( INHERIT: THIN:0,BORDER_WIDTH_THIN
MEDIUM:0,BORDER_WIDTH_MEDIUM THICK:0,BORDER_WIDTH_THICK IDENT:) LENGTH_UNIT:(
UNIT_PX:BORDER_WIDTH_SET
DISALLOW:unit==UNIT_PCT||unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ
RANGE:<0 LENGTH_UNIT:)
+border_side_width:op GENERIC: IDENT:( INHERIT: THIN:0,BORDER_WIDTH_THIN
MEDIUM:0,BORDER_WIDTH_MEDIUM THICK:0,BORDER_WIDTH_THICK IDENT:) LENGTH_UNIT:(
UNIT_PX:BORDER_WIDTH_SET MASK:UNIT_MASK_BORDER_SIDE_WIDTH RANGE:<0 LENGTH_UNIT:)
border_top_width:CSS_PROP_BORDER_TOP_WIDTH WRAP:css__parse_border_side_width
border_bottom_width:CSS_PROP_BORDER_BOTTOM_WIDTH
WRAP:css__parse_border_side_width
@@ -140,11 +140,11 @@ page_break_before:CSS_PROP_PAGE_BREAK_BEFORE IDENT:(
INHERIT: AUTO:0,PAGE_BREAK_
page_break_inside:CSS_PROP_PAGE_BREAK_INSIDE IDENT:( INHERIT:
AUTO:0,PAGE_BREAK_INSIDE_AUTO AVOID:0,PAGE_BREAK_INSIDE_AVOID IDENT:)
-pause_after:CSS_PROP_PAUSE_AFTER IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_AFTER_SET DISALLOW:(unit&UNIT_TIME)==false&&(unit&UNIT_PCT)==false
RANGE:<0 LENGTH_UNIT:)
+pause_after:CSS_PROP_PAUSE_AFTER IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_AFTER_SET MASK:UNIT_MASK_PAUSE_AFTER RANGE:<0 LENGTH_UNIT:)
-pause_before:CSS_PROP_PAUSE_BEFORE IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_BEFORE_SET
DISALLOW:(unit&UNIT_TIME)==false&&(unit&UNIT_PCT)==false RANGE:<0 LENGTH_UNIT:)
+pause_before:CSS_PROP_PAUSE_BEFORE IDENT:INHERIT LENGTH_UNIT:(
UNIT_S:PAUSE_BEFORE_SET MASK:UNIT_MASK_PAUSE_BEFORE RANGE:<0 LENGTH_UNIT:)
-pitch:CSS_PROP_PITCH IDENT:( INHERIT: X_LOW:0,PITCH_X_LOW LOW:0,PITCH_LOW
MEDIUM:0,PITCH_MEDIUM HIGH:0,PITCH_HIGH X_HIGH:0,PITCH_X_HIGH IDENT:)
LENGTH_UNIT:( UNIT_HZ:PITCH_FREQUENCY ALLOW:unit&UNIT_FREQ RANGE:<0
LENGTH_UNIT:)
+pitch:CSS_PROP_PITCH IDENT:( INHERIT: X_LOW:0,PITCH_X_LOW LOW:0,PITCH_LOW
MEDIUM:0,PITCH_MEDIUM HIGH:0,PITCH_HIGH X_HIGH:0,PITCH_X_HIGH IDENT:)
LENGTH_UNIT:( UNIT_HZ:PITCH_FREQUENCY MASK:UNIT_MASK_PITCH RANGE:<0
LENGTH_UNIT:)
pitch_range:CSS_PROP_PITCH_RANGE IDENT:INHERIT NUMBER:( false:PITCH_RANGE_SET
RANGE:num<0||num>F_100 NUMBER:)
@@ -168,26 +168,26 @@ table_layout:CSS_PROP_TABLE_LAYOUT IDENT:( INHERIT:
AUTO:0,TABLE_LAYOUT_AUTO FIX
text_align:CSS_PROP_TEXT_ALIGN IDENT:( INHERIT: LEFT:0,TEXT_ALIGN_LEFT
RIGHT:0,TEXT_ALIGN_RIGHT CENTER:0,TEXT_ALIGN_CENTER
JUSTIFY:0,TEXT_ALIGN_JUSTIFY LIBCSS_LEFT:0,TEXT_ALIGN_LIBCSS_LEFT
LIBCSS_CENTER:0,TEXT_ALIGN_LIBCSS_CENTER LIBCSS_RIGHT:0,TEXT_ALIGN_LIBCSS_RIGHT
IDENT:)
-text_indent:CSS_PROP_TEXT_INDENT IDENT:INHERIT LENGTH_UNIT:(
UNIT_PX:TEXT_INDENT_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ LENGTH_UNIT:)
+text_indent:CSS_PROP_TEXT_INDENT IDENT:INHERIT LENGTH_UNIT:(
UNIT_PX:TEXT_INDENT_SET MASK:UNIT_MASK_TEXT_INDENT LENGTH_UNIT:)
text_transform:CSS_PROP_TEXT_TRANSFORM IDENT:( INHERIT:
CAPITALIZE:0,TEXT_TRANSFORM_CAPITALIZE UPPERCASE:0,TEXT_TRANSFORM_UPPERCASE
LOWERCASE:0,TEXT_TRANSFORM_LOWERCASE NONE:0,TEXT_TRANSFORM_NONE IDENT:)
unicode_bidi:CSS_PROP_UNICODE_BIDI IDENT:( INHERIT:
NORMAL:0,UNICODE_BIDI_NORMAL EMBED:0,UNICODE_BIDI_EMBED
BIDI_OVERRIDE:0,UNICODE_BIDI_BIDI_OVERRIDE IDENT:)
-vertical_align:CSS_PROP_VERTICAL_ALIGN IDENT:( INHERIT:
BASELINE:0,VERTICAL_ALIGN_BASELINE SUB:0,VERTICAL_ALIGN_SUB
SUPER:0,VERTICAL_ALIGN_SUPER TOP:0,VERTICAL_ALIGN_TOP
TEXT_TOP:0,VERTICAL_ALIGN_TEXT_TOP MIDDLE:0,VERTICAL_ALIGN_MIDDLE
BOTTOM:0,VERTICAL_ALIGN_BOTTOM TEXT_BOTTOM:0,VERTICAL_ALIGN_TEXT_BOTTOM IDENT:)
LENGTH_UNIT:( UNIT_PX:VERTICAL_ALIGN_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ LENGTH_UNIT:)
+vertical_align:CSS_PROP_VERTICAL_ALIGN IDENT:( INHERIT:
BASELINE:0,VERTICAL_ALIGN_BASELINE SUB:0,VERTICAL_ALIGN_SUB
SUPER:0,VERTICAL_ALIGN_SUPER TOP:0,VERTICAL_ALIGN_TOP
TEXT_TOP:0,VERTICAL_ALIGN_TEXT_TOP MIDDLE:0,VERTICAL_ALIGN_MIDDLE
BOTTOM:0,VERTICAL_ALIGN_BOTTOM TEXT_BOTTOM:0,VERTICAL_ALIGN_TEXT_BOTTOM IDENT:)
LENGTH_UNIT:( UNIT_PX:VERTICAL_ALIGN_SET MASK:UNIT_MASK_VERTICAL_ALIGN
LENGTH_UNIT:)
visibility:CSS_PROP_VISIBILITY IDENT:( INHERIT: VISIBLE:0,VISIBILITY_VISIBLE
HIDDEN:0,VISIBILITY_HIDDEN COLLAPSE:0,VISIBILITY_COLLAPSE IDENT:)
-volume:CSS_PROP_VOLUME IDENT:( INHERIT: SILENT:0,VOLUME_SILENT
X_SOFT:0,VOLUME_X_SOFT SOFT:0,VOLUME_SOFT MEDIUM:0,VOLUME_MEDIUM
LOUD:0,VOLUME_LOUD X_LOUD:0,VOLUME_X_LOUD IDENT:) NUMBER:( false:VOLUME_NUMBER
RANGE:num<0||num>F_100 NUMBER:) LENGTH_UNIT:( UNIT_PX:VOLUME_DIMENSION
ALLOW:unit&UNIT_PCT RANGE:<0 LENGTH_UNIT:)
+volume:CSS_PROP_VOLUME IDENT:( INHERIT: SILENT:0,VOLUME_SILENT
X_SOFT:0,VOLUME_X_SOFT SOFT:0,VOLUME_SOFT MEDIUM:0,VOLUME_MEDIUM
LOUD:0,VOLUME_LOUD X_LOUD:0,VOLUME_X_LOUD IDENT:) NUMBER:( false:VOLUME_NUMBER
RANGE:num<0||num>F_100 NUMBER:) LENGTH_UNIT:( UNIT_PX:VOLUME_DIMENSION
MASK:UNIT_MASK_VOLUME RANGE:<0 LENGTH_UNIT:)
white_space:CSS_PROP_WHITE_SPACE IDENT:( INHERIT: NORMAL:0,WHITE_SPACE_NORMAL
PRE:0,WHITE_SPACE_PRE NOWRAP:0,WHITE_SPACE_NOWRAP
PRE_WRAP:0,WHITE_SPACE_PRE_WRAP PRE_LINE:0,WHITE_SPACE_PRE_LINE IDENT:)
widows:CSS_PROP_WIDOWS IDENT:INHERIT NUMBER:( true:WIDOWS_SET RANGE:num<0
NUMBER:)
-width:CSS_PROP_WIDTH IDENT:( INHERIT: AUTO:0,WIDTH_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:WIDTH_SET DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ
RANGE:<0 LENGTH_UNIT:)
+width:CSS_PROP_WIDTH IDENT:( INHERIT: AUTO:0,WIDTH_AUTO IDENT:) LENGTH_UNIT:(
UNIT_PX:WIDTH_SET MASK:UNIT_MASK_WIDTH RANGE:<0 LENGTH_UNIT:)
-word_spacing:CSS_PROP_WORD_SPACING IDENT:( INHERIT:
NORMAL:0,WORD_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:WORD_SPACING_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+word_spacing:CSS_PROP_WORD_SPACING IDENT:( INHERIT:
NORMAL:0,WORD_SPACING_NORMAL IDENT:) LENGTH_UNIT:( UNIT_PX:WORD_SPACING_SET
MASK:UNIT_MASK_WORD_SPACING LENGTH_UNIT:)
z_index:CSS_PROP_Z_INDEX IDENT:( INHERIT: AUTO:0,Z_INDEX_AUTO IDENT:) NUMBER:(
true:Z_INDEX_SET NUMBER:)
@@ -202,7 +202,7 @@ column_count:CSS_PROP_COLUMN_COUNT IDENT:( INHERIT:
AUTO:0,COLUMN_COUNT_AUTO IDE
column_fill:CSS_PROP_COLUMN_FILL IDENT:( INHERIT:
BALANCE:0,COLUMN_FILL_BALANCE AUTO:0,COLUMN_FILL_AUTO IDENT:)
-column_gap:CSS_PROP_COLUMN_GAP IDENT:( INHERIT: NORMAL:0,COLUMN_GAP_NORMAL
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_GAP_SET RANGE:<0
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+column_gap:CSS_PROP_COLUMN_GAP IDENT:( INHERIT: NORMAL:0,COLUMN_GAP_NORMAL
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_GAP_SET RANGE:<0 MASK:UNIT_MASK_COLUMN_GAP
LENGTH_UNIT:)
column_rule_color:CSS_PROP_COLUMN_RULE_COLOR IDENT:( INHERIT: IDENT:)
COLOR:COLUMN_RULE_COLOR_SET
@@ -212,7 +212,7 @@ column_rule_width:CSS_PROP_COLUMN_RULE_WIDTH
WRAP:css__parse_border_side_width
column_span:CSS_PROP_COLUMN_SPAN IDENT:( INHERIT: NONE:0,COLUMN_SPAN_NONE
ALL:0,COLUMN_SPAN_ALL IDENT:)
-column_width:CSS_PROP_COLUMN_WIDTH IDENT:( INHERIT: AUTO:0,COLUMN_WIDTH_AUTO
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_WIDTH_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ||unit&UNIT_PCT
LENGTH_UNIT:)
+column_width:CSS_PROP_COLUMN_WIDTH IDENT:( INHERIT: AUTO:0,COLUMN_WIDTH_AUTO
IDENT:) LENGTH_UNIT:( UNIT_PX:COLUMN_WIDTH_SET MASK:UNIT_MASK_COLUMN_WIDTH
LENGTH_UNIT:)
writing_mode:CSS_PROP_WRITING_MODE IDENT:( INHERIT:
HORIZONTAL_TB:0,WRITING_MODE_HORIZONTAL_TB
VERTICAL_RL:0,WRITING_MODE_VERTICAL_RL VERTICAL_LR:0,WRITING_MODE_VERTICAL_LR
IDENT:)
@@ -224,7 +224,7 @@ align_items:CSS_PROP_ALIGN_ITEMS IDENT:( INHERIT:
STRETCH:0,ALIGN_ITEMS_STRETCH
align_self:CSS_PROP_ALIGN_SELF IDENT:( INHERIT: STRETCH:0,ALIGN_SELF_STRETCH
FLEX_START:0,ALIGN_SELF_FLEX_START FLEX_END:0,ALIGN_SELF_FLEX_END
CENTER:0,ALIGN_SELF_CENTER BASELINE:0,ALIGN_SELF_BASELINE
AUTO:0,ALIGN_SELF_AUTO IDENT:)
-flex_basis:CSS_PROP_FLEX_BASIS IDENT:( INHERIT: AUTO:0,FLEX_BASIS_AUTO
CONTENT:0,FLEX_BASIS_CONTENT IDENT:) LENGTH_UNIT:( UNIT_PX:FLEX_BASIS_SET
DISALLOW:unit&UNIT_ANGLE||unit&UNIT_TIME||unit&UNIT_FREQ RANGE:<0 LENGTH_UNIT:)
+flex_basis:CSS_PROP_FLEX_BASIS IDENT:( INHERIT: AUTO:0,FLEX_BASIS_AUTO
CONTENT:0,FLEX_BASIS_CONTENT IDENT:) LENGTH_UNIT:( UNIT_PX:FLEX_BASIS_SET
MASK:UNIT_MASK_FLEX_BASIS RANGE:<0 LENGTH_UNIT:)
flex_direction:CSS_PROP_FLEX_DIRECTION IDENT:( INHERIT:
ROW:0,FLEX_DIRECTION_ROW ROW_REVERSE:0,FLEX_DIRECTION_ROW_REVERSE
COLUMN:0,FLEX_DIRECTION_COLUMN COLUMN_REVERSE:0,FLEX_DIRECTION_COLUMN_REVERSE
IDENT:)
diff --git a/src/parse/properties/properties.h
b/src/parse/properties/properties.h
index 1e085c5..1e7f821 100644
--- a/src/parse/properties/properties.h
+++ b/src/parse/properties/properties.h
@@ -458,4 +458,117 @@ css_error css__parse_z_index(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style *result);
+/** Mapping from property bytecode index to bytecode unit class mask. */
+extern const uint32_t property_unit_mask[CSS_N_PROPERTIES];
+
+#define UNIT_MASK_AZIMUTH (UNIT_ANGLE)
+#define UNIT_MASK_BACKGROUND_ATTACHMENT (0)
+#define UNIT_MASK_BACKGROUND_COLOR (0)
+#define UNIT_MASK_BACKGROUND_IMAGE (0)
+#define UNIT_MASK_BACKGROUND_POSITION (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_BACKGROUND_REPEAT (0)
+#define UNIT_MASK_BORDER_COLLAPSE (0)
+#define UNIT_MASK_BORDER_SPACING (UNIT_LENGTH)
+#define UNIT_MASK_BORDER_SIDE_COLOR (0)
+#define UNIT_MASK_BORDER_SIDE_STYLE (0)
+#define UNIT_MASK_BORDER_SIDE_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_BOTTOM (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_CAPTION_SIDE (0)
+#define UNIT_MASK_CLEAR (0)
+#define UNIT_MASK_CLIP (UNIT_LENGTH)
+#define UNIT_MASK_COLOR (0)
+#define UNIT_MASK_CONTENT (0)
+#define UNIT_MASK_COUNTER_INCREMENT (0)
+#define UNIT_MASK_COUNTER_RESET (0)
+#define UNIT_MASK_CUE_AFTER (0)
+#define UNIT_MASK_CUE_BEFORE (0)
+#define UNIT_MASK_CURSOR (0)
+#define UNIT_MASK_DIRECTION (0)
+#define UNIT_MASK_DISPLAY (0)
+#define UNIT_MASK_ELEVATION (UNIT_ANGLE)
+#define UNIT_MASK_EMPTY_CELLS (0)
+#define UNIT_MASK_FLOAT (0)
+#define UNIT_MASK_FONT_FAMILY (0)
+#define UNIT_MASK_FONT_SIZE (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_FONT_STYLE (0)
+#define UNIT_MASK_FONT_VARIANT (0)
+#define UNIT_MASK_FONT_WEIGHT (0)
+#define UNIT_MASK_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_LEFT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_LETTER_SPACING (UNIT_LENGTH)
+#define UNIT_MASK_LINE_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_LIST_STYLE_IMAGE (0)
+#define UNIT_MASK_LIST_STYLE_POSITION (0)
+#define UNIT_MASK_LIST_STYLE_TYPE (0)
+#define UNIT_MASK_MARGIN_SIDE (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MAX_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MAX_WIDTH (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MIN_HEIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_MIN_WIDTH (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_ORPHANS (0)
+#define UNIT_MASK_OUTLINE_COLOR (0)
+#define UNIT_MASK_OUTLINE_STYLE (0)
+#define UNIT_MASK_OUTLINE_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_OVERFLOW_X (0)
+#define UNIT_MASK_PADDING_SIDE (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_PAGE_BREAK_AFTER (0)
+#define UNIT_MASK_PAGE_BREAK_BEFORE (0)
+#define UNIT_MASK_PAGE_BREAK_INSIDE (0)
+#define UNIT_MASK_PAUSE_AFTER (UNIT_TIME | UNIT_PCT)
+#define UNIT_MASK_PAUSE_BEFORE (UNIT_TIME | UNIT_PCT)
+#define UNIT_MASK_PITCH_RANGE (0)
+#define UNIT_MASK_PITCH (UNIT_FREQ)
+#define UNIT_MASK_PLAY_DURING (0)
+#define UNIT_MASK_POSITION (0)
+#define UNIT_MASK_QUOTES (0)
+#define UNIT_MASK_RICHNESS (0)
+#define UNIT_MASK_RIGHT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_SPEAK_HEADER (0)
+#define UNIT_MASK_SPEAK_NUMERAL (0)
+#define UNIT_MASK_SPEAK_PUNCTUATION (0)
+#define UNIT_MASK_SPEAK (0)
+#define UNIT_MASK_SPEECH_RATE (0)
+#define UNIT_MASK_STRESS (0)
+#define UNIT_MASK_TABLE_LAYOUT (0)
+#define UNIT_MASK_TEXT_ALIGN (0)
+#define UNIT_MASK_TEXT_DECORATION (0)
+#define UNIT_MASK_TEXT_INDENT (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_TEXT_TRANSFORM (0)
+#define UNIT_MASK_TOP (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_UNICODE_BIDI (0)
+#define UNIT_MASK_VERTICAL_ALIGN (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_VISIBILITY (0)
+#define UNIT_MASK_VOICE_FAMILY (0)
+#define UNIT_MASK_VOLUME (UNIT_PCT)
+#define UNIT_MASK_WHITE_SPACE (0)
+#define UNIT_MASK_WIDOWS (0)
+#define UNIT_MASK_WIDTH (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_WORD_SPACING (UNIT_LENGTH)
+#define UNIT_MASK_Z_INDEX (0)
+#define UNIT_MASK_OPACITY (0)
+#define UNIT_MASK_BREAK_AFTER (0)
+#define UNIT_MASK_BREAK_BEFORE (0)
+#define UNIT_MASK_BREAK_INSIDE (0)
+#define UNIT_MASK_COLUMN_COUNT (0)
+#define UNIT_MASK_COLUMN_FILL (0)
+#define UNIT_MASK_COLUMN_GAP (UNIT_LENGTH)
+#define UNIT_MASK_COLUMN_RULE_COLOR (0)
+#define UNIT_MASK_COLUMN_RULE_STYLE (0)
+#define UNIT_MASK_COLUMN_RULE_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_COLUMN_SPAN (0)
+#define UNIT_MASK_COLUMN_WIDTH (UNIT_LENGTH)
+#define UNIT_MASK_WRITING_MODE (0)
+#define UNIT_MASK_OVERFLOW_Y (0)
+#define UNIT_MASK_BOX_SIZING (0)
+#define UNIT_MASK_ALIGN_CONTENT (0)
+#define UNIT_MASK_ALIGN_ITEMS (0)
+#define UNIT_MASK_ALIGN_SELF (0)
+#define UNIT_MASK_FLEX_BASIS (UNIT_LENGTH | UNIT_PCT)
+#define UNIT_MASK_FLEX_DIRECTION (0)
+#define UNIT_MASK_FLEX_GROW (0)
+#define UNIT_MASK_FLEX_SHRINK (0)
+#define UNIT_MASK_FLEX_WRAP (0)
+#define UNIT_MASK_JUSTIFY_CONTENT (0)
+#define UNIT_MASK_ORDER (0)
+
#endif
diff --git a/test/data/parse/properties.dat b/test/data/parse/properties.dat
index 3dcb5a4..302b2dc 100644
--- a/test/data/parse/properties.dat
+++ b/test/data/parse/properties.dat
@@ -182,7 +182,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0x0000b400 0x00000200
+| 0x02000000 0x0000b400 0x00000400
#reset
#data
@@ -190,7 +190,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0xffff4c00 0x00000200
+| 0x02000000 0xffff4c00 0x00000400
#reset
#data
@@ -198,7 +198,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0x0000c800 0x00000201
+| 0x02000000 0x0000c800 0x00000401
#reset
#data
@@ -206,7 +206,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0x00000324 0x00000202
+| 0x02000000 0x00000324 0x00000402
#reset
#data
@@ -214,7 +214,7 @@
#errors
#expected
| 1 *
-| 0x02000000 0xfffffcdc 0x00000202
+| 0x02000000 0xfffffcdc 0x00000402
#reset
##
@@ -350,7 +350,7 @@
#errors
#expected
| 1 *
-| 0x02000004 0x00002800 0x00000100
+| 0x02000004 0x00002800 0x00000200
#reset
#data
@@ -358,7 +358,7 @@
#errors
#expected
| 1 *
-| 0x02000004 0x00000800 0x00000000
+| 0x02000004 0x00000800 0x00000100
#reset
#data
@@ -366,7 +366,7 @@
#errors
#expected
| 1 *
-| 0x02200004 0x00002800 0x00000100 0x00005000 0x00000100
+| 0x02200004 0x00002800 0x00000200 0x00005000 0x00000200
#reset
#data
@@ -374,7 +374,7 @@
#errors
#expected
| 1 *
-| 0x02200004 0x00002800 0x00000100 0x00000800 0x00000000
+| 0x02200004 0x00002800 0x00000200 0x00000800 0x00000100
#reset
#data
@@ -382,7 +382,7 @@
#errors
#expected
| 1 *
-| 0x02040004 0x00000800 0x00000000
+| 0x02040004 0x00000800 0x00000100
#reset
# possible quirk
@@ -391,7 +391,7 @@
##errors
##expected
#| 1 *
-#| 0x02040004 0x00000800 0x00000000
+#| 0x02040004 0x00000800 0x00000100
##reset
#data
@@ -399,7 +399,7 @@
#errors
#expected
| 1 *
-| 0x00a00004 0x00002800 0x00000100
+| 0x00a00004 0x00002800 0x00000200
#reset
#data
@@ -407,7 +407,7 @@
#errors
#expected
| 1 *
-| 0x02200404 0x00002800 0x00000100 0x00005000 0x00000100
+| 0x02200404 0x00002800 0x00000200 0x00005000 0x00000200
#reset
##
@@ -475,7 +475,7 @@
#errors
#expected
| 1 *
-| 0x02000007 0x00000c00 0x00000002 0x00000c00 0x00000002
+| 0x02000007 0x00000c00 0x00000102 0x00000c00 0x00000102
#reset
#data
@@ -483,7 +483,7 @@
#errors
#expected
| 1 *
-| 0x02000007 0x00000a00 0x00000002 0x00000a00 0x00000002
+| 0x02000007 0x00000a00 0x00000102 0x00000a00 0x00000102
#reset
#data
@@ -491,7 +491,7 @@
#errors
#expected
| 1 *
-| 0x02000007 0x00000c00 0x00000000 0x00000a00 0x00000002
+| 0x02000007 0x00000c00 0x00000100 0x00000a00 0x00000102
#reset
#data
@@ -499,7 +499,7 @@
#errors
#expected
| 1 *
-| 0x02000407 0x00000c00 0x00000002 0x00000c00 0x00000002
+| 0x02000407 0x00000c00 0x00000102 0x00000c00 0x00000102
#reset
#data
@@ -507,7 +507,7 @@
#errors
#expected
| 1 *
-| 0x02000407 0x00000a00 0x00000002 0x00000a00 0x00000002
+| 0x02000407 0x00000a00 0x00000102 0x00000a00 0x00000102
#reset
#data
@@ -515,7 +515,7 @@
#errors
#expected
| 1 *
-| 0x02000407 0x00000c00 0x00000000 0x00000a00 0x00000002
+| 0x02000407 0x00000c00 0x00000100 0x00000a00 0x00000102
#reset
##
@@ -688,7 +688,7 @@
#errors
#expected
| 1 *
-| 0x02000013 0x00000000 0x00000000
+| 0x02000013 0x00000000 0x00000100
#reset
#data
@@ -696,7 +696,7 @@
#errors
#expected
| 1 *
-| 0x02000010 0x00000800 0x00000000
+| 0x02000010 0x00000800 0x00000100
#reset
##
@@ -716,7 +716,7 @@
#errors
#expected
| 1 *
-| 0x02000014 0x00000300 0x00000002
+| 0x02000014 0x00000300 0x00000102
#reset
#data
@@ -724,7 +724,7 @@
#errors
#expected
| 1 *
-| 0x02000014 0x00010aab 0x00000100
+| 0x02000014 0x00010aab 0x00000200
#reset
##
@@ -800,7 +800,7 @@
#errors
#expected
| 1 *
-| 0x02c00017 0x00002800 0x00000000 0x00002800 0x00000000
+| 0x02c00017 0x00002800 0x00000100 0x00002800 0x00000100
#reset
#data
@@ -816,7 +816,7 @@
#errors
#expected
| 1 *
-| 0x02000017 0x00000400 0x00000000 0x00000800 0x00000000 0x00000c00
0x00000000 0x00001000 0x00000000
+| 0x02000017 0x00000400 0x00000100 0x00000800 0x00000100 0x00000c00
0x00000100 0x00001000 0x00000100
#reset
#data
@@ -824,7 +824,7 @@
#errors
#expected
| 1 *
-| 0x03200017 0x00000400 0x00000002 0x00000400 0x00000002
+| 0x03200017 0x00000400 0x00000102 0x00000400 0x00000102
#reset
#data
@@ -832,7 +832,7 @@
#errors
#expected
| 1 *
-| 0x02000017 0x00000000 0x00000000 0x00037000 0x00000000 0x000006cd
0x00000002 0x00000000 0x00000000
+| 0x02000017 0x00000000 0x00000100 0x00037000 0x00000100 0x000006cd
0x00000102 0x00000000 0x00000100
#reset
#data
@@ -848,7 +848,7 @@
#errors
#expected
| 1 *
-| 0x02c00417 0x00002800 0x00000000 0x00002800 0x00000000
+| 0x02c00417 0x00002800 0x00000100 0x00002800 0x00000100
#reset
#data
@@ -864,7 +864,7 @@
#errors
#expected
| 1 *
-| 0x02000417 0x00000400 0x00000000 0x00000800 0x00000000 0x00000c00
0x00000000 0x00001000 0x00000000
+| 0x02000417 0x00000400 0x00000100 0x00000800 0x00000100 0x00000c00
0x00000100 0x00001000 0x00000100
#reset
#data
@@ -872,7 +872,7 @@
#errors
#expected
| 1 *
-| 0x03200417 0x00000400 0x00000002 0x00000400 0x00000002
+| 0x03200417 0x00000400 0x00000102 0x00000400 0x00000102
#reset
#data
@@ -880,7 +880,7 @@
#errors
#expected
| 1 *
-| 0x02000417 0x00000000 0x00000000 0x00037000 0x00000000 0x000006cd
0x00000002 0x00000000 0x00000000
+| 0x02000417 0x00000000 0x00000100 0x00037000 0x00000100 0x000006cd
0x00000102 0x00000000 0x00000100
#reset
##
@@ -1708,7 +1708,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x0000b400 0x00000200
+| 0x02000021 0x0000b400 0x00000400
#reset
#data
@@ -1716,7 +1716,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0xffff4c00 0x00000200
+| 0x02000021 0xffff4c00 0x00000400
#reset
#data
@@ -1724,7 +1724,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x0000c800 0x00000201
+| 0x02000021 0x0000c800 0x00000401
#reset
#data
@@ -1732,7 +1732,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x00000324 0x00000202
+| 0x02000021 0x00000324 0x00000402
#reset
#data
@@ -1748,7 +1748,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000421 0x0000b400 0x00000200
+| 0x02000421 0x0000b400 0x00000400
#reset
##
@@ -1956,7 +1956,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000025 0x00003000 0x00000006
+| 0x02000025 0x00003000 0x00000106
#reset
#data
@@ -1964,7 +1964,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000025 0x00019000 0x00000000
+| 0x02000025 0x00019000 0x00000100
#reset
#data
@@ -1972,7 +1972,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000025 0x0001e000 0x00000100
+| 0x02000025 0x0001e000 0x00000200
#reset
##
@@ -2148,7 +2148,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000029 0x061a7fff 0x00000001
+| 0x02000029 0x061a7fff 0x00000101
#reset
#data
@@ -2156,7 +2156,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000029 0x00010aab 0x00000100
+| 0x02000029 0x00010aab 0x00000200
#reset
##
@@ -2176,7 +2176,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002a 0x00000200 0x00000003
+| 0x0200002a 0x00000200 0x00000103
#reset
#data
@@ -2184,7 +2184,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002a 0x00001000 0x00000100
+| 0x0200002a 0x00001000 0x00000200
#reset
##
@@ -2204,7 +2204,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002b 0x00000152 0x00000004
+| 0x0200002b 0x00000152 0x00000104
#reset
#data
@@ -2212,7 +2212,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200042b 0x00000152 0x00000004
+| 0x0200042b 0x00000152 0x00000104
#reset
##
@@ -2240,7 +2240,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204002c 0x00003000 0x00000005
+| 0x0204002c 0x00003000 0x00000105
#reset
#data
@@ -2256,7 +2256,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204042c 0x00003000 0x00000005
+| 0x0204042c 0x00003000 0x00000105
#reset
#data
@@ -2264,7 +2264,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204002c 0x00008552 0x00000100
+| 0x0204002c 0x00008552 0x00000200
#reset
##
@@ -2475,7 +2475,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000030 0x00002800 0x00000007
+| 0x02000030 0x00002800 0x00000107
#reset
#data
@@ -2483,7 +2483,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000031 0x00000400 0x00000000
+| 0x02000031 0x00000400 0x00000100
#reset
#data
@@ -2491,7 +2491,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000032 0x00000800 0x00000002
+| 0x02000032 0x00000800 0x00000102
#reset
#data
@@ -2499,7 +2499,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000033 0x00001400 0x00000100
+| 0x02000033 0x00001400 0x00000200
#reset
##
@@ -2519,7 +2519,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000034 0x00019000 0x00000000
+| 0x02000034 0x00019000 0x00000100
#reset
#data
@@ -2527,7 +2527,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000434 0x00019000 0x00000000
+| 0x02000434 0x00019000 0x00000100
#reset
#data
@@ -2535,7 +2535,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000034 0x0000c800 0x00000100
+| 0x02000034 0x0000c800 0x00000200
#reset
##
@@ -2555,7 +2555,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x00019000 0x00000000
+| 0x02000035 0x00019000 0x00000100
#reset
#data
@@ -2563,7 +2563,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x0000c800 0x00000100
+| 0x02000035 0x0000c800 0x00000200
#reset
##
@@ -2575,7 +2575,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x00019000 0x00000000
+| 0x02000036 0x00019000 0x00000100
#reset
#data
@@ -2583,7 +2583,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x0000c800 0x00000100
+| 0x02000036 0x0000c800 0x00000200
#reset
##
@@ -2595,7 +2595,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000037 0x00019000 0x00000000
+| 0x02000037 0x00019000 0x00000100
#reset
#data
@@ -2603,7 +2603,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000037 0x0000c800 0x00000100
+| 0x02000037 0x0000c800 0x00000200
#reset
##
@@ -2763,7 +2763,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003b 0x00000c00 0x00000000
+| 0x0200003b 0x00000c00 0x00000100
#reset
#data
@@ -2771,7 +2771,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003b 0x00000000 0x00000000
+| 0x0200003b 0x00000000 0x00000100
#reset
##
@@ -2858,7 +2858,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003d 0x00002800 0x00000007
+| 0x0200003d 0x00002800 0x00000107
#reset
#data
@@ -2866,7 +2866,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003e 0x00000400 0x00000000
+| 0x0200003e 0x00000400 0x00000100
#reset
#data
@@ -2874,7 +2874,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003f 0x00000800 0x00000002
+| 0x0200003f 0x00000800 0x00000102
#reset
#data
@@ -2882,7 +2882,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000040 0x00001400 0x00000100
+| 0x02000040 0x00001400 0x00000200
#reset
##
@@ -3002,7 +3002,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x00000000 0x00000401
+| 0x02000044 0x00000000 0x00000801
#reset
#data
@@ -3010,7 +3010,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x00019000 0x00000400
+| 0x02000044 0x00019000 0x00000800
#reset
#data
@@ -3018,7 +3018,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x000002cd 0x00000401
+| 0x02000044 0x000002cd 0x00000801
#reset
#data
@@ -3026,7 +3026,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000044 0x0001e000 0x00000100
+| 0x02000044 0x0001e000 0x00000200
#reset
##
@@ -3038,7 +3038,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x00000000 0x00000401
+| 0x02000045 0x00000000 0x00000801
#reset
#data
@@ -3046,7 +3046,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x00019000 0x00000400
+| 0x02000045 0x00019000 0x00000800
#reset
#data
@@ -3054,7 +3054,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x000002cd 0x00000401
+| 0x02000045 0x000002cd 0x00000801
#reset
#data
@@ -3062,7 +3062,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000045 0x0001e000 0x00000100
+| 0x02000045 0x0001e000 0x00000200
#reset
##
@@ -3150,7 +3150,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00000000 0x00000800
+| 0x02000047 0x00000000 0x00001000
#reset
#data
@@ -3158,7 +3158,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000447 0x00000000 0x00000800
+| 0x02000447 0x00000000 0x00001000
#reset
#data
@@ -3166,7 +3166,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00064000 0x00000800
+| 0x02000047 0x00064000 0x00001000
#reset
#data
@@ -3174,7 +3174,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00000466 0x00000801
+| 0x02000047 0x00000466 0x00001001
#reset
##
@@ -3370,7 +3370,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004c 0x00000200 0x00000003
+| 0x0200004c 0x00000200 0x00000103
#reset
#data
@@ -3378,7 +3378,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004c 0x00001000 0x00000100
+| 0x0200004c 0x00001000 0x00000200
#reset
##
@@ -3738,7 +3738,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000056 0x00000000 0x00000000
+| 0x02000056 0x00000000 0x00000100
#reset
#data
@@ -3746,7 +3746,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000056 0x00003000 0x00000005
+| 0x02000056 0x00003000 0x00000105
#reset
#data
@@ -3754,7 +3754,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000056 0x00008552 0x00000100
+| 0x02000056 0x00008552 0x00000200
#reset
##
@@ -3810,7 +3810,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000058 0x00000200 0x00000003
+| 0x02000058 0x00000200 0x00000103
#reset
#data
@@ -3818,7 +3818,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000058 0x00001000 0x00000100
+| 0x02000058 0x00001000 0x00000200
#reset
##
@@ -3922,7 +3922,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200045a 0xffffd800 0x00000100
+| 0x0200045a 0xffffd800 0x00000200
#reset
#data
@@ -3930,7 +3930,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0xffffd800 0x00000100
+| 0x0200005a 0xffffd800 0x00000200
#reset
#data
@@ -3938,7 +3938,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0x00005000 0x00000100
+| 0x0200005a 0x00005000 0x00000200
#reset
#data
@@ -3946,7 +3946,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0x00001000 0x00000000
+| 0x0200005a 0x00001000 0x00000100
#reset
#data
@@ -3954,7 +3954,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200005a 0xfffff000 0x00000000
+| 0x0200005a 0xfffff000 0x00000100
#reset
##
@@ -4135,7 +4135,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204005d 0x00008552 0x00000100
+| 0x0204005d 0x00008552 0x00000200
#reset
# dunno if % can be tested here, cos it's a percentage of the inherited value
@@ -4144,7 +4144,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204045d 0x00008552 0x00000100
+| 0x0204045d 0x00008552 0x00000200
#reset
##
@@ -4220,7 +4220,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000060 0x061a7fff 0x00000001
+| 0x02000060 0x061a7fff 0x00000101
#reset
#data
@@ -4228,7 +4228,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000060 0x00010aab 0x00000100
+| 0x02000060 0x00010aab 0x00000200
#reset
##
@@ -4248,7 +4248,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000061 0x00000066 0x00000002
+| 0x02000061 0x00000066 0x00000102
#reset
##
@@ -4540,7 +4540,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000069 0x00000066 0x00000002
+| 0x02000069 0x00000066 0x00000102
#reset
##
@@ -4688,7 +4688,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200006c 0x00000c00 0x00000000
+| 0x0200006c 0x00000c00 0x00000100
#reset
#data
@@ -4696,7 +4696,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200006c 0x00000000 0x00000000
+| 0x0200006c 0x00000000 0x00000100
#reset
##
@@ -4736,7 +4736,7 @@ p:before { content: open-quote
url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200006e 0x00000066 0x00000002
+| 0x0200006e 0x00000066 0x00000102
#reset
##
--
Cascading Style Sheets library
_______________________________________________
netsurf-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]