ULong = Literal("unsigned long", "UInt")
ULongLong = Literal("unsigned long long", "UInt")
Float = Literal("float", "Float")
-Double = Literal("double", "Float")
+Double = Literal("double", "Double")
SizeT = Literal("size_t", "UInt")
WString = Literal("wchar_t *", "WString")
// floating point cast
-double Value ::toFloat(void) const { assert(0); return 0; }
-double Null ::toFloat(void) const { return 0; }
-double Bool ::toFloat(void) const { return static_cast<double>(value); }
-double SInt ::toFloat(void) const { return static_cast<double>(value); }
-double UInt ::toFloat(void) const { return static_cast<double>(value); }
-double Float ::toFloat(void) const { return value; }
-double Enum ::toFloat(void) const { return sig->second->toFloat(); }
+float Value ::toFloat(void) const { assert(0); return 0; }
+float Null ::toFloat(void) const { return 0; }
+float Bool ::toFloat(void) const { return static_cast<float>(value); }
+float SInt ::toFloat(void) const { return static_cast<float>(value); }
+float UInt ::toFloat(void) const { return static_cast<float>(value); }
+float Float ::toFloat(void) const { return value; }
+float Enum ::toFloat(void) const { return sig->second->toFloat(); }
+
+
+// floating point cast
+double Value ::toDouble(void) const { assert(0); return 0; }
+double Null ::toDouble(void) const { return 0; }
+double Bool ::toDouble(void) const { return static_cast<double>(value); }
+double SInt ::toDouble(void) const { return static_cast<double>(value); }
+double UInt ::toDouble(void) const { return static_cast<double>(value); }
+double Float ::toDouble(void) const { return value; }
+double Enum ::toDouble(void) const { return sig->second->toDouble(); }
// pointer cast
virtual bool toBool(void) const = 0;
virtual signed long long toSInt(void) const;
virtual unsigned long long toUInt(void) const;
- virtual double toFloat(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
virtual void *toPointer(void) const;
virtual unsigned long long toUIntPtr(void) const;
bool toBool(void) const;
signed long long toSInt(void) const;
unsigned long long toUInt(void) const;
- double toFloat(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
void *toPointer(void) const;
unsigned long long toUIntPtr(void) const;
const char *toString(void) const;
bool toBool(void) const;
signed long long toSInt(void) const;
unsigned long long toUInt(void) const;
- double toFloat(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
void visit(Visitor &visitor);
bool value;
bool toBool(void) const;
signed long long toSInt(void) const;
unsigned long long toUInt(void) const;
- double toFloat(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
void visit(Visitor &visitor);
signed long long value;
bool toBool(void) const;
signed long long toSInt(void) const;
unsigned long long toUInt(void) const;
- double toFloat(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
void visit(Visitor &visitor);
unsigned long long value;
bool toBool(void) const;
signed long long toSInt(void) const;
unsigned long long toUInt(void) const;
- double toFloat(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
void visit(Visitor &visitor);
double value;
bool toBool(void) const;
signed long long toSInt(void) const;
unsigned long long toUInt(void) const;
- double toFloat(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
void visit(Visitor &visitor);
const Signature *sig;
std::ostream & operator <<(std::ostream &os, Value *value);
-signed long long asSInt(const Value &node);
-unsigned long long asUInt(const Value &node);
-double asFloat(const Value &node);
-
-
class Call
{
public: