+ String(std::string _value) : value(_value) {}
+
+ bool toBool(void) const;
+ const char *toString(void) const;
+ void visit(Visitor &visitor);
+
+ std::string value;
+};
+
+
+class Enum : public Value
+{
+public:
+ struct Signature : public std::pair<std::string, Value *>
+ {
+ Signature()
+ : std::pair<std::string, Value *>()
+ {}
+ Signature(const std::string &n, Trace::Value *val)
+ : std::pair<std::string, Value *>(n, val)
+ {}
+ ~Signature()
+ {
+ delete second;
+ }
+ };
+
+ Enum(const Signature *_sig) : sig(_sig) {}
+
+ bool toBool(void) const;
+ signed long long toSInt(void) const;
+ unsigned long long toUInt(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
+ void visit(Visitor &visitor);
+
+ const Signature *sig;
+};
+
+
+class Bitmask : public UInt
+{
+public:
+ typedef std::pair<std::string, unsigned long long> Pair;
+ typedef std::vector<Pair> Signature;
+
+ Bitmask(const Signature *_sig, unsigned long long _value) : UInt(_value), sig(_sig) {}