00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __loaded__numbers_h__
00021 #define __loaded__numbers_h__
00022 using namespace std;
00023 #line 1 "numbers.h++"
00024 #include <stdlib.h>
00025 #include "data.h"
00026 #include "data-visitor.h"
00027
00028
00029
00030
00031
00032
00033
00034
00035 template <class T, bool S, char C> class IntegerClass: public DataClass
00036 {
00037 private:
00038 T value;
00039 protected:
00040 virtual QString type_name() const
00041 {
00042 return "Integer";
00043 };
00044 virtual void visit(DataVisitor& v)
00045 {
00046 v.visit(*this);
00047 }
00048 public:
00049 IntegerClass() : value(0)
00050 {
00051 };
00052 IntegerClass(T i) : value(i)
00053 {
00054 };
00055 IntegerClass(const char* text)
00056 {
00057 unsigned8 number;
00058 if (S)
00059 number = atoll(text+1);
00060 else
00061 number = atoll(text);
00062 if (S && text[0]=='-')
00063 {
00064 value=(T)-number;
00065
00066 }
00067 else
00068 {
00069 value = (T)number;
00070
00071 }
00072 }
00073 virtual DataClass* shallow_copy() const
00074 {
00075 return new IntegerClass<T,S,C>(*this);
00076 };
00077 operator T() const
00078 {
00079 return value;
00080 };
00081 T operator()() const
00082 {
00083 return value;
00084 };
00085 char letter() const
00086 {
00087 return C;
00088 };
00089 IntegerClass<T,S,C>& operator= (const IntegerClass<T,S,C> & o)
00090 {
00091 value=o.value;
00092 return *this;
00093 };
00094 IntegerClass<T,S,C>& operator= (T t)
00095 {
00096 value=t;
00097 return *this;
00098 };
00099 };
00100
00101
00102
00103
00104 template <class T, char C> class FloatClass: public DataClass
00105 {
00106 private:
00107 T value;
00108 protected:
00109 virtual QString type_name() const
00110 {
00111 return "Float";
00112 };
00113 virtual void visit(DataVisitor& v)
00114 {
00115 v.visit(*this);
00116 };
00117 public:
00118 FloatClass() : value(0)
00119 {
00120 };
00121 FloatClass(T i) : value(i)
00122 {
00123 };
00124 FloatClass(const char* text)
00125 {
00126 value = atof(text);
00127 }
00128 virtual DataClass* shallow_copy() const
00129 {
00130 return new FloatClass<T,C>(*this);
00131 };
00132 T operator()() const
00133 {
00134 return value;
00135 };
00136 operator T() const
00137 {
00138 return value;
00139 };
00140 char letter() const
00141 {
00142 return C;
00143 };
00144 FloatClass<T,C>& operator= (const FloatClass<T,C> & o)
00145 {
00146 value=o.value;
00147 return *this;
00148 };
00149 FloatClass<T,C>& operator= (T t)
00150 {
00151 value=t;
00152 return *this;
00153 };
00154 };
00155 #endif // __loaded__numbers_h__