Annotation of parser3/src/include/pa_vdouble.h, revision 1.8
1.1 paf 1: /*
1.8 ! paf 2: $Id: pa_vdouble.h,v 1.7 2001/03/08 16:54:25 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
1.8 ! paf 20: Value *clone() const { return NEW VDouble(fdouble); }
1.7 paf 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.8 ! paf 25: snprintf(buf, MAX_DOUBLE_AS_STRING, "%g", fdouble.value);
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: