diff --git a/doomsday/libcore/include/de/data/numbervalue.h b/doomsday/libcore/include/de/data/numbervalue.h index 9e25e49f0e..03f0aeb082 100644 --- a/doomsday/libcore/include/de/data/numbervalue.h +++ b/doomsday/libcore/include/de/data/numbervalue.h @@ -48,6 +48,7 @@ class DENG2_PUBLIC NumberValue : public Value enum SemanticHint { Boolean = 0x1, ///< The number is intended to be a boolean value. + Hex = 0x2, ///< The number is intended to be a hexadecimal value. Generic = 0 ///< Generic number. }; Q_DECLARE_FLAGS(SemanticHints, SemanticHint) @@ -55,8 +56,8 @@ class DENG2_PUBLIC NumberValue : public Value public: NumberValue(Number initialValue = 0, SemanticHints semantic = Generic); NumberValue(dsize initialSize); - NumberValue(dint initialInteger); - NumberValue(duint initialUnsignedInteger); + NumberValue(dint initialInteger, SemanticHints semantic = Generic); + NumberValue(duint initialUnsignedInteger, SemanticHints semantic = Generic); NumberValue(bool initialBoolean); /** diff --git a/doomsday/libcore/src/data/numbervalue.cpp b/doomsday/libcore/src/data/numbervalue.cpp index ee7e238109..6145fb5b48 100644 --- a/doomsday/libcore/src/data/numbervalue.cpp +++ b/doomsday/libcore/src/data/numbervalue.cpp @@ -34,12 +34,12 @@ NumberValue::NumberValue(dsize initialSize) : _value(initialSize), _semantic(Generic) {} -NumberValue::NumberValue(dint initialInteger) - : _value(initialInteger), _semantic(Generic) +NumberValue::NumberValue(dint initialInteger, SemanticHints semantic) + : _value(initialInteger), _semantic(semantic) {} -NumberValue::NumberValue(duint initialUnsignedInteger) - : _value(initialUnsignedInteger), _semantic(Generic) +NumberValue::NumberValue(duint initialUnsignedInteger, SemanticHints semantic) + : _value(initialUnsignedInteger), _semantic(semantic) {} NumberValue::NumberValue(bool initialBoolean) @@ -64,6 +64,10 @@ Value::Text NumberValue::asText() const { s << (isTrue()? "True" : "False"); } + else if(_semantic.testFlag(Hex)) + { + s << "0x" << QString::number(int(_value), 16); + } else { s << _value; diff --git a/doomsday/libdoomsday/src/defs/dedparser.cpp b/doomsday/libdoomsday/src/defs/dedparser.cpp index 8a290d69af..e8c78970fd 100644 --- a/doomsday/libdoomsday/src/defs/dedparser.cpp +++ b/doomsday/libdoomsday/src/defs/dedparser.cpp @@ -635,7 +635,7 @@ DENG2_PIMPL(DEDParser) int value = 0; if(ReadFlags(&value, prefix)) { - dest->set(NumberValue(value)); + dest->set(NumberValue(value, NumberValue::Hex)); return true; } return false;