Changeset 23864
- Timestamp:
- 2014-12-18T20:45:49+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SimulationRuntime/c/simulation/simulation_input_xml.cpp
r23747 r23864 770 770 omc_CommandLineOverrides mOverrides; 771 771 char* overrideStr = NULL; 772 if((override != NULL) && (overrideFile != NULL)) { 772 if((override != NULL) && (overrideFile != NULL)) 773 { 773 774 throwStreamPrint(NULL, "simulation_input_xml.cpp: usage error you cannot have both -override and -overrideFile active at the same time. see Model -? for more info!"); 774 775 } 775 776 776 if(override != NULL) { 777 if(override != NULL) 778 { 777 779 overrideStr = strdup(override); 778 780 } 779 781 780 if(overrideFile != NULL) { 782 if(overrideFile != NULL) 783 { 781 784 /* read override values from file */ 782 785 infoStreamPrint(LOG_SOLVER, 0, "read override values from file: %s", overrideFile); … … 784 787 785 788 infile.open(overrideFile, ifstream::in); 786 if(infile.is_open() == false) { 789 if(infile.is_open() == false) 790 { 787 791 throwStreamPrint(NULL, "simulation_input_xml.cpp: could not open the file given to -overrideFile=%s", overrideFile); 788 792 } … … 796 800 // if is comment //, ignore line 797 801 if (tline.size() > 2 && tline[0] == '/' && tline[1] == '/') 802 { 798 803 continue; 804 } 799 805 800 806 if (overrideLine.empty()) … … 813 819 } 814 820 815 if(overrideStr != NULL) { 821 if(overrideStr != NULL) 822 { 816 823 std::string key, value; 817 824 /* read override values */ 818 825 infoStreamPrint(LOG_SOLVER, 0, "read override values: %s", overrideStr); 819 826 char *p = strtok(overrideStr, ","); 820 while(p) { 821 std::string *key_val = new string(p); 822 // split it key = value => map[key]=value 823 size_t pos = key_val->find("="); 824 key = key_val->substr(0,pos); 825 value = key_val->substr(pos + 1,key_val->length() - pos - 1); 826 827 /* un-quote key and value 828 if(key[0] == '"') 829 key = key.substr(1,key.length() - 1); 830 if(key[key.length()] == '"') 831 key = key.substr(0,key.length() - 1); 832 if(value[0] == '"') 833 value = value.substr(1,value.length() - 1); 834 if(value[value.length()] == '"') 835 value = value.substr(0,value.length() - 1); 836 */ 837 838 // map[key]=value 839 mOverrides[key] = value; 840 841 infoStreamPrint(LOG_SOLVER, 0, "override %s = %s", key.c_str(), value.c_str()); 842 843 // move to next 844 p = strtok(NULL, ","); 827 while(p) 828 { 829 std::string *key_val = new string(p); 830 // split it key = value => map[key]=value 831 size_t pos = key_val->find("="); 832 key = key_val->substr(0,pos); 833 value = key_val->substr(pos + 1,key_val->length() - pos - 1); 834 835 /* un-quote key and value 836 if(key[0] == '"') 837 key = key.substr(1,key.length() - 1); 838 if(key[key.length()] == '"') 839 key = key.substr(0,key.length() - 1); 840 if(value[0] == '"') 841 value = value.substr(1,value.length() - 1); 842 if(value[value.length()] == '"') 843 value = value.substr(0,value.length() - 1); 844 */ 845 846 // map[key]=value 847 mOverrides[key] = value; 848 849 infoStreamPrint(LOG_SOLVER, 0, "override %s = %s", key.c_str(), value.c_str()); 850 851 // move to next 852 p = strtok(NULL, ","); 845 853 } 846 854 … … 880 888 for(long i=0; i<modelData->nParametersReal; i++) 881 889 { 890 // TODO: only allow to override primary parameters 882 891 mi.rPar[i]["start"] = mOverrides.count(mi.rPar[i]["name"]) ? mOverrides[mi.rPar[i]["name"]] : mi.rPar[i]["start"]; 883 892 } 884 893 for(long i=0; i<modelData->nParametersInteger; i++) 885 894 { 895 // TODO: only allow to override primary parameters 886 896 mi.iPar[i]["start"] = mOverrides.count(mi.iPar[i]["name"]) ? mOverrides[mi.iPar[i]["name"]] : mi.iPar[i]["start"]; 887 897 } 888 898 for(long i=0; i<modelData->nParametersBoolean; i++) 889 899 { 900 // TODO: only allow to override primary parameters 890 901 mi.bPar[i]["start"] = mOverrides.count(mi.bPar[i]["name"]) ? mOverrides[mi.bPar[i]["name"]] : mi.bPar[i]["start"]; 891 902 } 892 903 for(long i=0; i<modelData->nParametersString; i++) 893 904 { 905 // TODO: only allow to override primary parameters 894 906 mi.sPar[i]["start"] = mOverrides.count(mi.sPar[i]["name"]) ? mOverrides[mi.sPar[i]["name"]] : mi.sPar[i]["start"]; 895 907 }
Note: See TracChangeset
for help on using the changeset viewer.