--- parser3/src/include/Attic/pa_vstring.h 2001/03/08 16:54:25 1.11 +++ parser3/src/include/Attic/pa_vstring.h 2001/03/10 11:44:32 1.15 @@ -1,5 +1,5 @@ /* - $Id: pa_vstring.h,v 1.11 2001/03/08 16:54:25 paf Exp $ + $Id: pa_vstring.h,v 1.15 2001/03/10 11:44:32 paf Exp $ */ #ifndef PA_VSTRING_H @@ -8,33 +8,36 @@ #include #include "pa_value.h" +#include "pa_vobject.h" +#include "pa_vdouble.h" +#include "classes/_string.h" -class VString : public Value { +class VString : public VObject { public: // Value // all: for error reporting after fail(), etc const char *type() const { return "string"; } - // clone - Value *clone() const { return NEW VString(fvalue); }; - // fvalue: fvalue - String *get_string() { return &fvalue; }; - // fvalue: fvalue + // string: fvalue as VDouble + Value *get_expr_result() { return NEW VDouble(pool(), get_double()); } + // string: fvalue + const String *get_string() { return &fvalue; }; + // string: fvalue double get_double() { return atof(fvalue.cstr()); } - // fvalue: empty or not + // string: empty or not bool get_bool() { return fvalue.size()!=0; }; public: // usage - VString(Pool& apool) : Value(apool), - fvalue(*new(apool) String(apool)) { + VString(Pool& apool) : VObject(apool, *string_class), + fvalue(*new(string_class->pool()) String(string_class->pool())) { } - VString(String& avalue) : Value(avalue.pool()), + VString(const String& avalue) : VObject(avalue.pool(), *string_class), fvalue(avalue) { } private: - String& fvalue; + const String& fvalue; };