00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "arts.h"
00019 #include "messages.h"
00020 #include "token.h"
00021
00026 String TokValTypeName[7] = {"String", "Index", "Numeric",
00027 "ArrayOfString", "ArrayOfIndex", "Vector",
00028 "undefined"};
00029
00030
00031
00032
00033 TokVal::operator String() const {
00034 assert (mtype == String_t);
00035 return ms;
00036 }
00037
00038 TokVal::operator Index() const {
00039 assert (mtype == Index_t);
00040 return mn;
00041 }
00042
00043 TokVal::operator Numeric() const {
00044 assert (mtype == Numeric_t);
00045 return mx;
00046 }
00047
00048
00049 TokVal::operator ArrayOfString() const {
00050 assert (mtype == Array_String_t);
00051 return msv;
00052 }
00053
00054 TokVal::operator ArrayOfIndex() const {
00055 assert (mtype == Array_Index_t);
00056 return mnv;
00057 }
00058
00059 TokVal::operator Vector() const {
00060 assert (mtype == Vector_t);
00061 return mxv;
00062 }
00063
00064
00065 ostream& operator<<(ostream& os, const TokVal& a)
00066 {
00067
00068 bool first = true;
00069
00070 switch (a.mtype)
00071 {
00072 case String_t:
00073 os << "\"" << a.ms << "\"";
00074 break;
00075 case Index_t:
00076 os << a.mn;
00077 break;
00078 case Numeric_t:
00079 os << a.mx;
00080 break;
00081 case Array_String_t:
00082 os << "[";
00083 for ( Index i=0; i<a.msv.nelem(); ++i )
00084 {
00085 if (first) first=false;
00086 else os << ",";
00087 os << "\"" << a.msv[i] << "\"";
00088 }
00089 os << "]";
00090 break;
00091 case Array_Index_t:
00092 os << "[";
00093 for ( Index i=0; i<a.mnv.nelem(); ++i )
00094 {
00095 if (first) first=false;
00096 else os << ",";
00097
00098 os << a.mnv[i];
00099 }
00100 os << "]";
00101 break;
00102 case Vector_t:
00103 os << "[";
00104 for ( Index i=0; i<a.mxv.nelem(); ++i )
00105 {
00106 if (first) first=false;
00107 else os << ",";
00108
00109 os << a.mxv[i];
00110 }
00111 os << "]";
00112 break;
00113 default:
00114 out0 << "Undefined token type.\n";
00115 arts_exit ();
00116 }
00117 return os;
00118 }
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134