00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef JDXNUMBERS_H
00019 #define JDXNUMBERS_H
00020
00021
00022 #include <odinpara/jdxbase.h>
00023 #include <tjutils/tjtypes.h>
00024
00025
00030
00031
00036 template<class T>
00037 class JDXnumber : public virtual JcampDxClass {
00038
00039 public:
00040
00044 JDXnumber() {set_defaults();}
00045
00057 JDXnumber(T v, const STD_string& name="",bool userParameter=true,
00058 compatMode mode=notBroken,parameterMode parameter_mode=edit,
00059 const STD_string& parx_equivalent="",
00060 float parx_assign_factor=1.0,float parx_assign_offset=0.0);
00061
00062
00066 JDXnumber(const JDXnumber<T>& bi) {JDXnumber<T>::operator = (bi);}
00067
00071 JDXnumber<T>& operator = (T v) {val=v; return *this;}
00072
00076 JDXnumber<T>& operator = (const JDXnumber<T>& bi);
00077
00078
00079 operator T () const {return val;}
00080 T operator += (T rhsval) {val+=rhsval; return *this;}
00081 T operator -= (T rhsval) {val-=rhsval; return *this;}
00082 T operator *= (T rhsval) {val*=rhsval; return *this;}
00083 T operator /= (T rhsval) {val/=rhsval; return *this;}
00084 T operator ++ () {val=val+(T)1; return val;}
00085 T operator ++ (int) {T tmp=val; val=val+(T)1; return tmp;}
00086 T operator -- () {val=val-(T)1; return val;}
00087 T operator -- (int) {T tmp=val; val=val-(T)1; return tmp;}
00088
00093 JDXnumber<T>& set_minmaxval(double min,double max) {minval=min; maxval=max; return *this;}
00094
00095
00096 STD_string printvalstring() const;
00097 bool parsevalstring (const STD_string& parstring);
00098 STD_string get_parx_code(parxCodeType type, const ParxEquiv& equiv) const;
00099 ParxEquiv get_parx_equiv() const {return parx_equiv;}
00100 double get_minval() const {return minval;}
00101 double get_maxval() const {return maxval;}
00102 const char* get_typeInfo() const {return TypeTraits::type2label(val);}
00103 JcampDxClass* create_copy() const {return new JDXnumber<T>(*this);}
00104 T* cast(T*) {return &val;}
00105
00106 private:
00107
00108 void set_defaults();
00109
00110 T val;
00111 mutable ParxEquiv parx_equiv;
00112 double minval,maxval;
00113 };
00114
00116
00117
00118
00122 typedef JDXnumber<int> JDXint;
00123
00127 typedef JDXnumber<float> JDXfloat;
00128
00132 typedef JDXnumber<double> JDXdouble;
00133
00137 typedef JDXnumber<STD_complex> JDXcomplex;
00138
00139
00143 #endif
00144