159599516SKenneth E. Jansen #include <string> 259599516SKenneth E. Jansen #include <vector> 359599516SKenneth E. Jansen //MR CHANGE 459599516SKenneth E. Jansen #include <cstring> 559599516SKenneth E. Jansen #include <cmath> 659599516SKenneth E. Jansen #include <cstdlib> 759599516SKenneth E. Jansen //MR CHANGE END 859599516SKenneth E. Jansen 959599516SKenneth E. Jansen #include "ValType.h" 1059599516SKenneth E. Jansen operator int()1159599516SKenneth E. JansenValType::operator int() 1259599516SKenneth E. Jansen { 1359599516SKenneth E. Jansen used = true; 1459599516SKenneth E. Jansen return get_int(str); 1559599516SKenneth E. Jansen } 1659599516SKenneth E. Jansen operator vector<double>()1759599516SKenneth E. JansenValType::operator vector<double>() 1859599516SKenneth E. Jansen { 1959599516SKenneth E. Jansen used = true; 2059599516SKenneth E. Jansen return get_vector(str); 2159599516SKenneth E. Jansen } 2259599516SKenneth E. Jansen operator vector<int>()2359599516SKenneth E. JansenValType::operator vector<int>() 2459599516SKenneth E. Jansen { 2559599516SKenneth E. Jansen used = true; 2659599516SKenneth E. Jansen return get_ivector(str); 2759599516SKenneth E. Jansen } 2859599516SKenneth E. Jansen operator double()2959599516SKenneth E. JansenValType::operator double() 3059599516SKenneth E. Jansen { 3159599516SKenneth E. Jansen used = true; 3259599516SKenneth E. Jansen return get_double(str); 3359599516SKenneth E. Jansen } 3459599516SKenneth E. Jansen operator double*()3559599516SKenneth E. JansenValType::operator double*() 3659599516SKenneth E. Jansen { 3759599516SKenneth E. Jansen used = true; 3859599516SKenneth E. Jansen return get_double_array(str); 3959599516SKenneth E. Jansen } 4059599516SKenneth E. Jansen operator string()4159599516SKenneth E. JansenValType::operator string() 4259599516SKenneth E. Jansen { 4359599516SKenneth E. Jansen used = true; 4459599516SKenneth E. Jansen return get_string(str); 4559599516SKenneth E. Jansen } 4659599516SKenneth E. Jansen 4759599516SKenneth E. Jansen // 4859599516SKenneth E. Jansen // function implementations for type specific conversions 4959599516SKenneth E. Jansen // 5059599516SKenneth E. Jansen get_int(string str)5159599516SKenneth E. Jansenint ValType::get_int(string str) 5259599516SKenneth E. Jansen { 5359599516SKenneth E. Jansen int i = atoi(str.c_str()); 5459599516SKenneth E. Jansen return i; 5559599516SKenneth E. Jansen } 5659599516SKenneth E. Jansen get_double(string str)5759599516SKenneth E. Jansendouble ValType::get_double(string str) 5859599516SKenneth E. Jansen { 5959599516SKenneth E. Jansen double x = atof(str.c_str()); 6059599516SKenneth E. Jansen return x; 6159599516SKenneth E. Jansen } 6259599516SKenneth E. Jansen get_double_array(string str)6359599516SKenneth E. Jansendouble *ValType::get_double_array(string str) 6459599516SKenneth E. Jansen { 6559599516SKenneth E. Jansen //istrstream ist(str.c_str(),str.length()); 6659599516SKenneth E. Jansen //vector<double> vec; 6759599516SKenneth E. Jansen //double v; 6859599516SKenneth E. Jansen //while ( ist >> v ) { 6959599516SKenneth E. Jansen // vec.push_back(v); 7059599516SKenneth E. Jansen //} 7159599516SKenneth E. Jansen vector<double> vec = get_vector(str); 7259599516SKenneth E. Jansen int n = vec.size(); 7359599516SKenneth E. Jansen double *x = new double[n]; 7459599516SKenneth E. Jansen for (int i=0; i < n; i++) { 7559599516SKenneth E. Jansen x[i] = vec[i]; 7659599516SKenneth E. Jansen } 7759599516SKenneth E. Jansen return x; 7859599516SKenneth E. Jansen } 7959599516SKenneth E. Jansen get_vector(string str)8059599516SKenneth E. Jansenvector<double> ValType::get_vector(string str) 8159599516SKenneth E. Jansen { 82*ea8eaaacSCameron Smith char* s = (char*) malloc(str.size()+1); 83*ea8eaaacSCameron Smith strcpy(s,str.c_str()); 84*ea8eaaacSCameron Smith char *strTok = strtok(s," "); 8559599516SKenneth E. Jansen vector<double> vec; 8659599516SKenneth E. Jansen while(strTok) { 8759599516SKenneth E. Jansen vec.push_back(atof(strTok)); 8859599516SKenneth E. Jansen strTok = strtok(NULL," "); 8959599516SKenneth E. Jansen } 90*ea8eaaacSCameron Smith free(s); 9159599516SKenneth E. Jansen return vec; 9259599516SKenneth E. Jansen } 9359599516SKenneth E. Jansen get_ivector(string str)9459599516SKenneth E. Jansenvector<int> ValType::get_ivector(string str) 9559599516SKenneth E. Jansen { 96*ea8eaaacSCameron Smith char* s = (char*) malloc(str.size()+1); 97*ea8eaaacSCameron Smith strcpy(s,str.c_str()); 98*ea8eaaacSCameron Smith char *strTok = strtok(s," "); 9959599516SKenneth E. Jansen vector<int> vec; 10059599516SKenneth E. Jansen while(strTok) { 10159599516SKenneth E. Jansen vec.push_back(atoi(strTok)); 10259599516SKenneth E. Jansen strTok = strtok(NULL," "); 10359599516SKenneth E. Jansen } 104*ea8eaaacSCameron Smith free(s); 10559599516SKenneth E. Jansen return vec; 10659599516SKenneth E. Jansen } 10759599516SKenneth E. Jansen get_string(string str)10859599516SKenneth E. Jansenstring ValType::get_string(string str) 10959599516SKenneth E. Jansen { 11059599516SKenneth E. Jansen return str; 11159599516SKenneth E. Jansen } 112