00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef token_h
00019 #define token_h
00020
00021 #include "matpackI.h"
00022 #include "array.h"
00023 #include "mystring.h"
00024
00027 enum TokValType { String_t, Index_t, Numeric_t,
00028 Array_String_t, Array_Index_t, Vector_t,
00029 undefined_t };
00030
00033 class TokVal {
00034 public:
00035
00037 TokVal() : mtype(undefined_t), ms(), mn(-1), mx(0.), msv(), mnv(), mxv() { }
00038
00040 TokVal(const char s[]) : mtype(String_t), ms(s), mn(-1), mx(0.),
00041 msv(), mnv(), mxv() { }
00042
00044 TokVal(const String& s) : mtype(String_t), ms(s), mn(-1), mx(0.),
00045 msv(), mnv(), mxv() { }
00046
00048 TokVal(Index n) : mtype(Index_t), ms(), mn(n), mx(0.),
00049 msv(), mnv(), mxv() { }
00050
00052 TokVal(Numeric x) : mtype(Numeric_t), ms(), mn(-1), mx(x),
00053 msv(), mnv(), mxv() { }
00054
00056 TokVal(ArrayOfString sv) : mtype(Array_String_t), ms(), mn(-1), mx(0.),
00057 msv(sv), mnv(), mxv() { }
00058
00060 TokVal(ArrayOfIndex nv) : mtype(Array_Index_t), ms(), mn(-1), mx(0.),
00061 msv(), mnv(nv), mxv() { }
00062
00064 TokVal(Vector xv) : mtype(Vector_t), ms(), mn(-1), mx(0.),
00065 msv(), mnv(), mxv(xv) { }
00066
00067
00068
00070 operator String() const;
00072 operator Index() const;
00074 operator Numeric() const;
00075
00077 operator ArrayOfString() const;
00079 operator ArrayOfIndex() const;
00081 operator Vector() const;
00082
00084 friend ostream& operator<<(ostream& os, const TokVal& a);
00085
00086 private:
00087 TokValType mtype;
00088 String ms;
00089 Index mn;
00090 Numeric mx;
00091 ArrayOfString msv;
00092 ArrayOfIndex mnv;
00093 Vector mxv;
00094 };
00095
00096
00097
00098
00099
00100
00101
00102 #endif // token_h