summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2022-08-13 16:16:24 +0100
committerMichael Drake <mdrake.unique@gmail.com>2022-08-29 13:49:20 +0100
commit1815b305ea226fa8a9cf8582df259e0bde76bbdf (patch)
treefbec4dfdabd97bbb6169b4a7889248e7302e77b0
parent65f56b6d7aa73040a87eab240628eecbab9e7504 (diff)
downloadlibcss-1815b305ea226fa8a9cf8582df259e0bde76bbdf.tar.gz
libcss-1815b305ea226fa8a9cf8582df259e0bde76bbdf.tar.bz2
Bytecode: Flag values for explicit defaulting
-rw-r--r--src/bytecode/bytecode.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/bytecode/bytecode.h b/src/bytecode/bytecode.h
index 7f5ea9d..ccfdcac 100644
--- a/src/bytecode/bytecode.h
+++ b/src/bytecode/bytecode.h
@@ -18,9 +18,20 @@ typedef uint32_t css_code_t;
typedef enum css_properties_e opcode_t;
+enum flag_value {
+ FLAG_VALUE__NONE = 0,
+ FLAG_VALUE_INHERIT = 1,
+ FLAG_VALUE_INITIAL = 2,
+ FLAG_VALUE_REVERT = 3,
+ FLAG_VALUE_UNSET = 4,
+};
+
enum flag {
- FLAG_IMPORTANT = (1<<0),
- FLAG_INHERIT = (1<<1)
+ FLAG_IMPORTANT = (1 << 0),
+ FLAG_INHERIT = (FLAG_VALUE_INHERIT << 1),
+ FLAG_INITIAL = (FLAG_VALUE_INITIAL << 1),
+ FLAG_REVERT = (FLAG_VALUE_REVERT << 1),
+ FLAG_UNSET = (FLAG_VALUE_UNSET << 1),
};
@@ -95,12 +106,22 @@ static inline uint16_t getValue(css_code_t OPV)
static inline bool isImportant(css_code_t OPV)
{
- return getFlags(OPV) & 0x1;
+ return getFlags(OPV) & FLAG_IMPORTANT;
+}
+
+static inline enum flag_value getFlagValue(css_code_t OPV)
+{
+ return (getFlags(OPV) >> 1) & 0x7;
+}
+
+static inline bool hasFlagValue(css_code_t OPV)
+{
+ return getFlagValue(OPV) != FLAG_VALUE__NONE;
}
static inline bool isInherit(css_code_t OPV)
{
- return getFlags(OPV) & 0x2;
+ return getFlagValue(OPV) == FLAG_VALUE_INHERIT;
}
#endif