diff options
Diffstat (limited to 'src/cppvalue.h')
-rw-r--r-- | src/cppvalue.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/cppvalue.h b/src/cppvalue.h new file mode 100644 index 0000000..f0d5f8b --- /dev/null +++ b/src/cppvalue.h @@ -0,0 +1,62 @@ +/****************************************************************************** + * + * $Id: cppvalue.h,v 1.7 2001/03/19 19:27:40 root Exp $ + * + * + * Copyright (C) 1997-2011 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 <stdio.h> +#include <qglobal.h> + +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 |