xref: /phasta/phSolver/common/ValType.h (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen #ifndef H_ValType
2*59599516SKenneth E. Jansen #define H_ValType
3*59599516SKenneth E. Jansen 
4*59599516SKenneth E. Jansen #include <iostream>
5*59599516SKenneth E. Jansen #include <string>
6*59599516SKenneth E. Jansen 
7*59599516SKenneth E. Jansen using namespace std;
8*59599516SKenneth E. Jansen 
9*59599516SKenneth E. Jansen class ValType {
10*59599516SKenneth E. Jansen public:
ValType(const string & s)11*59599516SKenneth E. Jansen   ValType(const string & s)
12*59599516SKenneth E. Jansen     : str(s)
13*59599516SKenneth E. Jansen     { used = false; }
14*59599516SKenneth E. Jansen 
~ValType()15*59599516SKenneth E. Jansen   ~ValType()
16*59599516SKenneth E. Jansen     {
17*59599516SKenneth E. Jansen       if (!used)
18*59599516SKenneth E. Jansen 	cerr << "error: ambiguous return type" << endl;
19*59599516SKenneth E. Jansen     }
20*59599516SKenneth E. Jansen 
21*59599516SKenneth E. Jansen   // conversion operators
22*59599516SKenneth E. Jansen   operator double();
23*59599516SKenneth E. Jansen   operator double*();
24*59599516SKenneth E. Jansen   operator vector<double>();
25*59599516SKenneth E. Jansen   operator vector<int>();
26*59599516SKenneth E. Jansen   operator int();
27*59599516SKenneth E. Jansen   operator string();
28*59599516SKenneth E. Jansen 
29*59599516SKenneth E. Jansen private:
30*59599516SKenneth E. Jansen   bool used;
31*59599516SKenneth E. Jansen   string str;
32*59599516SKenneth E. Jansen 
33*59599516SKenneth E. Jansen   int get_int(string str);
34*59599516SKenneth E. Jansen   double get_double(string str);
35*59599516SKenneth E. Jansen   double *get_double_array(string str);
36*59599516SKenneth E. Jansen   vector<double> get_vector(string str);
37*59599516SKenneth E. Jansen   vector<int> get_ivector(string str);
38*59599516SKenneth E. Jansen   string get_string(string str);
39*59599516SKenneth E. Jansen 
40*59599516SKenneth E. Jansen };
41*59599516SKenneth E. Jansen 
42*59599516SKenneth E. Jansen 
43*59599516SKenneth E. Jansen #endif
44*59599516SKenneth E. Jansen 
45