diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2012-01-28 20:25:01 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2012-01-28 20:25:01 +0000 |
commit | 32ed7d0984f0dd872b4aaac0ac12c18471f291a0 (patch) | |
tree | 39181671076458c8f379507e0585d376ebc7363f /src/select/properties | |
parent | 6800a4d203fa62366720cc18993a74af92c0359c (diff) | |
download | libcss-32ed7d0984f0dd872b4aaac0ac12c18471f291a0.tar.gz libcss-32ed7d0984f0dd872b4aaac0ac12c18471f291a0.tar.bz2 |
Add support for parsing CSS3 Multi-column layout properties:
+ break-after
+ break-before
+ break-inside
+ column-count
+ column-fill
+ column-gap
+ column-rule-color
+ column-rule-style
+ column_rule-width
+ column_span
+ column_width
TODO: Shorthand properties (columns, column-rule)
TODO: Selection
svn path=/trunk/libcss/; revision=13412
Diffstat (limited to 'src/select/properties')
-rw-r--r-- | src/select/properties/Makefile | 11 | ||||
-rw-r--r-- | src/select/properties/break_after.c | 72 | ||||
-rw-r--r-- | src/select/properties/break_before.c | 72 | ||||
-rw-r--r-- | src/select/properties/break_inside.c | 67 | ||||
-rw-r--r-- | src/select/properties/column_count.c | 68 | ||||
-rw-r--r-- | src/select/properties/column_fill.c | 65 | ||||
-rw-r--r-- | src/select/properties/column_gap.c | 71 | ||||
-rw-r--r-- | src/select/properties/column_rule_color.c | 69 | ||||
-rw-r--r-- | src/select/properties/column_rule_style.c | 73 | ||||
-rw-r--r-- | src/select/properties/column_rule_width.c | 73 | ||||
-rw-r--r-- | src/select/properties/column_span.c | 65 | ||||
-rw-r--r-- | src/select/properties/column_width.c | 71 | ||||
-rw-r--r-- | src/select/properties/properties.h | 11 |
13 files changed, 788 insertions, 0 deletions
diff --git a/src/select/properties/Makefile b/src/select/properties/Makefile index b26939c..f9e6580 100644 --- a/src/select/properties/Makefile +++ b/src/select/properties/Makefile @@ -21,10 +21,21 @@ border_top_color.c \ border_top_style.c \ border_top_width.c \ bottom.c \ +break_after.c \ +break_before.c \ +break_inside.c \ caption_side.c \ clear.c \ clip.c \ color.c \ +column_count.c \ +column_fill.c \ +column_gap.c \ +column_rule_color.c \ +column_rule_style.c \ +column_rule_width.c \ +column_span.c \ +column_width.c \ content.c \ counter_increment.c \ counter_reset.c \ diff --git a/src/select/properties/break_after.c b/src/select/properties/break_after.c new file mode 100644 index 0000000..8a2cffc --- /dev/null +++ b/src/select/properties/break_after.c @@ -0,0 +1,72 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_break_after(uint32_t opv, css_style *style, + css_select_state *state) +{ + UNUSED(style); + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case BREAK_AFTER_AUTO: + case BREAK_AFTER_ALWAYS: + case BREAK_AFTER_AVOID: + case BREAK_AFTER_LEFT: + case BREAK_AFTER_RIGHT: + case BREAK_AFTER_PAGE: + case BREAK_AFTER_COLUMN: + case BREAK_AFTER_AVOID_PAGE: + case BREAK_AFTER_AVOID_COLUMN: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_break_after_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_break_after(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_break_after(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/break_before.c b/src/select/properties/break_before.c new file mode 100644 index 0000000..73137f4 --- /dev/null +++ b/src/select/properties/break_before.c @@ -0,0 +1,72 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_break_before(uint32_t opv, css_style *style, + css_select_state *state) +{ + UNUSED(style); + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case BREAK_BEFORE_AUTO: + case BREAK_BEFORE_ALWAYS: + case BREAK_BEFORE_AVOID: + case BREAK_BEFORE_LEFT: + case BREAK_BEFORE_RIGHT: + case BREAK_BEFORE_PAGE: + case BREAK_BEFORE_COLUMN: + case BREAK_BEFORE_AVOID_PAGE: + case BREAK_BEFORE_AVOID_COLUMN: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_break_before_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_break_before(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_break_before(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/break_inside.c b/src/select/properties/break_inside.c new file mode 100644 index 0000000..82cf09c --- /dev/null +++ b/src/select/properties/break_inside.c @@ -0,0 +1,67 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_break_inside(uint32_t opv, css_style *style, + css_select_state *state) +{ + UNUSED(style); + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case BREAK_INSIDE_AUTO: + case BREAK_INSIDE_AVOID: + case BREAK_INSIDE_AVOID_PAGE: + case BREAK_INSIDE_AVOID_COLUMN: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_break_inside_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_break_inside(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_break_inside(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_count.c b/src/select/properties/column_count.c new file mode 100644 index 0000000..5fe7465 --- /dev/null +++ b/src/select/properties/column_count.c @@ -0,0 +1,68 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_count(uint32_t opv, css_style *style, + css_select_state *state) +{ + css_fixed count = 0; + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_COUNT_SET: + count = *((css_fixed *) style->bytecode); + advance_bytecode(style, sizeof(count)); + break; + case COLUMN_COUNT_AUTO: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_count_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_count(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_count(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_fill.c b/src/select/properties/column_fill.c new file mode 100644 index 0000000..2322c03 --- /dev/null +++ b/src/select/properties/column_fill.c @@ -0,0 +1,65 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_fill(uint32_t opv, css_style *style, + css_select_state *state) +{ + UNUSED(style); + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_FILL_BALANCE: + case COLUMN_FILL_AUTO: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_fill_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_fill(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_fill(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_gap.c b/src/select/properties/column_gap.c new file mode 100644 index 0000000..8b7a841 --- /dev/null +++ b/src/select/properties/column_gap.c @@ -0,0 +1,71 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_gap(uint32_t opv, css_style *style, + css_select_state *state) +{ + css_fixed length = 0; + uint32_t unit = UNIT_PX; + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_GAP_SET: + length = *((css_fixed *) style->bytecode); + advance_bytecode(style, sizeof(length)); + unit = *((uint32_t *) style->bytecode); + advance_bytecode(style, sizeof(unit)); + break; + case COLUMN_GAP_NORMAL: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_gap_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_gap(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_gap(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_rule_color.c b/src/select/properties/column_rule_color.c new file mode 100644 index 0000000..933cb60 --- /dev/null +++ b/src/select/properties/column_rule_color.c @@ -0,0 +1,69 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_rule_color(uint32_t opv, css_style *style, + css_select_state *state) +{ + css_color color = 0; + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_RULE_COLOR_SET: + color = *((css_fixed *) style->bytecode); + advance_bytecode(style, sizeof(color)); + break; + case COLUMN_RULE_COLOR_TRANSPARENT: + case COLUMN_RULE_COLOR_CURRENT_COLOR: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_rule_color_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_rule_color(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_rule_color(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_rule_style.c b/src/select/properties/column_rule_style.c new file mode 100644 index 0000000..ba558a2 --- /dev/null +++ b/src/select/properties/column_rule_style.c @@ -0,0 +1,73 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_rule_style(uint32_t opv, css_style *style, + css_select_state *state) +{ + UNUSED(style); + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_RULE_STYLE_NONE: + case COLUMN_RULE_STYLE_HIDDEN: + case COLUMN_RULE_STYLE_DOTTED: + case COLUMN_RULE_STYLE_DASHED: + case COLUMN_RULE_STYLE_SOLID: + case COLUMN_RULE_STYLE_DOUBLE: + case COLUMN_RULE_STYLE_GROOVE: + case COLUMN_RULE_STYLE_RIDGE: + case COLUMN_RULE_STYLE_INSET: + case COLUMN_RULE_STYLE_OUTSET: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_rule_style_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_rule_style(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_rule_style(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_rule_width.c b/src/select/properties/column_rule_width.c new file mode 100644 index 0000000..2c0ca0d --- /dev/null +++ b/src/select/properties/column_rule_width.c @@ -0,0 +1,73 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_rule_width(uint32_t opv, css_style *style, + css_select_state *state) +{ + css_fixed length = 0; + uint32_t unit = UNIT_PX; + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_RULE_WIDTH_SET: + length = *((css_fixed *) style->bytecode); + advance_bytecode(style, sizeof(length)); + unit = *((uint32_t *) style->bytecode); + advance_bytecode(style, sizeof(unit)); + break; + case COLUMN_RULE_WIDTH_THIN: + case COLUMN_RULE_WIDTH_MEDIUM: + case COLUMN_RULE_WIDTH_THICK: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_rule_width_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_rule_width(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_rule_width(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_span.c b/src/select/properties/column_span.c new file mode 100644 index 0000000..92048a0 --- /dev/null +++ b/src/select/properties/column_span.c @@ -0,0 +1,65 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_span(uint32_t opv, css_style *style, + css_select_state *state) +{ + UNUSED(style); + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_SPAN_NONE: + case COLUMN_SPAN_ALL: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_span_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_span(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_span(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/column_width.c b/src/select/properties/column_width.c new file mode 100644 index 0000000..fd053d9 --- /dev/null +++ b/src/select/properties/column_width.c @@ -0,0 +1,71 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_column_width(uint32_t opv, css_style *style, + css_select_state *state) +{ + css_fixed length = 0; + uint32_t unit = UNIT_PX; + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case COLUMN_WIDTH_SET: + length = *((css_fixed *) style->bytecode); + advance_bytecode(style, sizeof(length)); + unit = *((uint32_t *) style->bytecode); + advance_bytecode(style, sizeof(unit)); + break; + case COLUMN_WIDTH_AUTO: + /** \todo convert to public values */ + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + /** \todo set computed elevation */ + } + + return CSS_OK; +} + +css_error css__set_column_width_from_hint(const css_hint *hint, + css_computed_style *style) +{ + UNUSED(hint); + UNUSED(style); + + return CSS_OK; +} + +css_error css__initial_column_width(css_select_state *state) +{ + UNUSED(state); + + return CSS_OK; +} + +css_error css__compose_column_width(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + UNUSED(parent); + UNUSED(child); + UNUSED(result); + + return CSS_OK; +} + diff --git a/src/select/properties/properties.h b/src/select/properties/properties.h index 2f3fca4..d0bb648 100644 --- a/src/select/properties/properties.h +++ b/src/select/properties/properties.h @@ -42,10 +42,21 @@ PROPERTY_FUNCS(border_right_width); PROPERTY_FUNCS(border_bottom_width); PROPERTY_FUNCS(border_left_width); PROPERTY_FUNCS(bottom); +PROPERTY_FUNCS(break_after); +PROPERTY_FUNCS(break_before); +PROPERTY_FUNCS(break_inside); PROPERTY_FUNCS(caption_side); PROPERTY_FUNCS(clear); PROPERTY_FUNCS(clip); PROPERTY_FUNCS(color); +PROPERTY_FUNCS(column_count); +PROPERTY_FUNCS(column_fill); +PROPERTY_FUNCS(column_gap); +PROPERTY_FUNCS(column_rule_color); +PROPERTY_FUNCS(column_rule_style); +PROPERTY_FUNCS(column_rule_width); +PROPERTY_FUNCS(column_span); +PROPERTY_FUNCS(column_width); PROPERTY_FUNCS(content); PROPERTY_FUNCS(counter_increment); PROPERTY_FUNCS(counter_reset); |