Annotation of parser3/src/include/pa_vdouble.h, revision 1.7
1.1 paf 1: /*
1.7 ! paf 2: $Id: pa_vdouble.h,v 1.6 2001/03/08 12:19:19 paf Exp $
1.1 paf 3: */
4:
5: #ifndef PA_VDOUBLE_H
6: #define PA_VDOUBLE_H
7:
8: #include "pa_value.h"
1.2 paf 9: #include "pa_common.h"
1.7 ! paf 10: #include "pa_double.h"
1.2 paf 11:
1.3 paf 12: #define MAX_DOUBLE_AS_STRING 20
1.1 paf 13:
14: class VDouble : public Value {
15: public: // Value
16:
17: // all: for error reporting after fail(), etc
1.4 paf 18: const char *type() const { return "double"; }
1.7 ! paf 19: // clone
! 20: Value *clone() { return NEW VDouble(fdouble); }
! 21:
! 22: // double: fdouble
1.2 paf 23: String *get_string() {
1.3 paf 24: char *buf=static_cast<char *>(pool().malloc(MAX_DOUBLE_AS_STRING));
1.7 ! paf 25: snprintf(buf, MAX_DOUBLE_AS_STRING, "%g", fdouble);
1.2 paf 26: String *result=NEW String(pool());
27: result->APPEND_CONST(buf);
28: return result;
1.7 ! paf 29: }
! 30: // double: fdouble
! 31: double get_double() { return fdouble.value; }
1.5 paf 32: // double: 0 or !0
1.7 ! paf 33: bool get_bool() { return fdouble.value!=0; }
1.1 paf 34:
35: public: // usage
36:
1.7 ! paf 37: VDouble(Double& adouble) : Value(adouble.pool()),
! 38: fdouble(adouble) {
1.1 paf 39: }
40:
41: private:
1.2 paf 42:
1.7 ! paf 43: Double& fdouble;
1.1 paf 44:
45: };
46:
47: #endif
E-mail: