diff -r 932c358ece3e -r d8fccb2cd802 Orb/Doxygen/src/cppvalue.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orb/Doxygen/src/cppvalue.h Fri Apr 23 20:47:58 2010 +0100 @@ -0,0 +1,62 @@ +/****************************************************************************** + * + * + * + * + * Copyright (C) 1997-2008 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#ifndef _CPPVALUE_H +#define _CPPVALUE_H + +#include +#include + +class CPPValue +{ + public: + + + enum Type { Int, Float }; + + CPPValue(long val=0) : type(Int) { v.l = val; } + CPPValue(double val) : type(Float) { v.d = val; } + + operator double () const { return type==Int ? (double)v.l : v.d; } + operator long () const { return type==Int ? v.l : (long)v.d; } + + bool isInt() const { return type == Int; } + + void print() const + { + if (type==Int) + printf("(%ld)\n",v.l); + else + printf("(%f)\n",v.d); + } + + private: + Type type; + union { + double d; + long l; + } v; +}; + +extern CPPValue parseOctal(); +extern CPPValue parseDecimal(); +extern CPPValue parseHexadecimal(); +extern CPPValue parseCharacter(); +extern CPPValue parseFloat(); + +#endif