+class Repr : public Value
+{
+public:
+ Repr(Value *human, Value *machine) :
+ humanValue(human),
+ machineValue(machine)
+ {}
+
+ /** Human-readible value */
+ Value *humanValue;
+
+ /** Machine-readible value */
+ Value *machineValue;
+
+ virtual bool toBool(void) const;
+ virtual signed long long toSInt(void) const;
+ virtual unsigned long long toUInt(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
+
+ virtual void *toPointer(void) const;
+ virtual void *toPointer(bool bind);
+ virtual unsigned long long toUIntPtr(void) const;
+ virtual const char *toString(void) const;
+
+ void visit(Visitor &visitor);
+};
+
+class StackFrame {
+public:
+ String* module;
+ String* function;
+ String* filename;
+ String* linenumber;
+ String* offset;
+ StackFrame() :
+ module(NULL),
+ function(NULL),
+ filename(NULL),
+ linenumber(NULL),
+ offset(NULL)
+ {}
+ ~StackFrame();
+};
+
+class Backtrace {
+public:
+ std::vector<StackFrame*> frames;
+ ~Backtrace();
+ void addFrame(StackFrame* frame);
+};
+