Annotation of parser3/src/include/pa_vstring.h, revision 1.14

1.1       paf         1: /*
1.14    ! paf         2:   $Id: pa_vstring.h,v 1.13 2001/03/09 04:47:27 paf Exp $
1.1       paf         3: */
                      4: 
                      5: #ifndef PA_VSTRING_H
                      6: #define PA_VSTRING_H
                      7: 
1.6       paf         8: #include <stdlib.h>
                      9: 
1.1       paf        10: #include "pa_value.h"
1.13      paf        11: #include "pa_vobject.h"
1.14    ! paf        12: #include "pa_vdouble.h"
1.13      paf        13: #include "classes/_string.h"
1.1       paf        14: 
1.13      paf        15: class VString : public VObject {
1.1       paf        16: public: // Value
                     17: 
                     18:        // all: for error reporting after fail(), etc
1.9       paf        19:        const char *type() const { return "string"; }
1.14    ! paf        20:        // string: fvalue as VDouble
        !            21:        Value *get_expr_result() { return NEW VDouble(pool(), get_double()); }
        !            22:        // string: fvalue
1.10      paf        23:        String *get_string() { return &fvalue; };
1.14    ! paf        24:        // string: fvalue
1.10      paf        25:        double get_double() { return atof(fvalue.cstr()); }
1.14    ! paf        26:        // string: empty or not
1.10      paf        27:        bool get_bool() { return fvalue.size()!=0; };
1.1       paf        28: 
                     29: public: // usage
                     30: 
1.14    ! paf        31:        VString(Pool& apool) : VObject(apool, *string_class), 
1.13      paf        32:                fvalue(*new(string_class->pool()) String(string_class->pool())) {
1.2       paf        33:        }
                     34: 
1.14    ! paf        35:        VString(String& avalue) : VObject(avalue.pool(), *string_class),
1.10      paf        36:                fvalue(avalue) {
1.1       paf        37:        }
                     38: 
                     39: private:
1.10      paf        40:        String& fvalue;
1.1       paf        41: 
                     42: };
                     43: 
                     44: #endif

E-mail: