MCPcopy Create free account
hub / github.com/NatLabRockies/SAM / Input

Method Input

src/codegenerator.cpp:857–953  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

855}
856
857bool CodeGen_lk::Input(ssc_data_t p_data, const char *name, const wxString &folder, const int &array_matrix_threshold)
858{
859
860
861 ssc_number_t value;
862 ssc_number_t *p;
863 int len, nr, nc;
864 wxString str_value;
865 double dbl_value;
866 int type = ::ssc_data_query(p_data, name);
867 switch (type)
868 {
869 case SSC_STRING:
870// str_value = wxString::FromUTF8(::ssc_data_get_string(p_data, name));
871 str_value = wxString(::ssc_data_get_string(p_data, name));
872 str_value.Replace("\\", "/");
873// fprintf(m_fp, "var( '%s', '%s' );\n", name, (const char*)str_value.c_str());
874 wxFprintf(m_fp, "var( '%s', '%s' );\n", name, (const char*)str_value.c_str());
875 break;
876 case SSC_NUMBER:
877 ::ssc_data_get_number(p_data, name, &value);
878 dbl_value = (double)value;
879 if (dbl_value > 1e38) dbl_value = 1e38;
880 fprintf(m_fp, "var( '%s', %.17g );\n", name, dbl_value);
881 break;
882 case SSC_ARRAY:
883 p = ::ssc_data_get_array(p_data, name, &len);
884 if (len > array_matrix_threshold)
885 { // separate csv file (var_name.csv in folder) for each variable
886 wxCSVData csv;
887 wxString fn = folder + "/" + TableElementFileNames(name) + ".csv";
888 // write out as single column data for compatibility with csvread in SDKTool
889 for (int i = 0; i < len; i++)
890 {
891 dbl_value = (double)p[i];
892 if (dbl_value > 1e38) dbl_value = 1e38;
893 csv.Set(i, 0, wxString::Format("%.17g", dbl_value));
894 }
895 csv.WriteFile(fn);
896 fprintf(m_fp, "var( '%s', real_array(read_text_file('%s')));\n", name, (const char*)fn.c_str());
897 }
898 else
899 {
900 wxString localname = TableElementFileNames(name);
901 fprintf(m_fp, "var( '%s', [", (const char*)localname.c_str());
902 for (int i = 0; i < (len - 1); i++)
903 {
904 dbl_value = (double)p[i];
905 if (dbl_value > 1e38) dbl_value = 1e38;
906 fprintf(m_fp, " %.17g,", dbl_value);
907 }
908 dbl_value = (double)p[len - 1];
909 if (dbl_value > 1e38) dbl_value = 1e38;
910 fprintf(m_fp, " %.17g ] );\n", dbl_value);
911 }
912 break;
913 case SSC_MATRIX:
914 p = ::ssc_data_get_matrix(p_data, name, &nr, &nc);

Callers 2

WriteSSCTestInputsMethod · 0.80
WriteSSCTestOutputsMethod · 0.80

Calls 5

TableElementFileNamesFunction · 0.85
format_as_variableFunction · 0.70
SetMethod · 0.45
AddMethod · 0.45
FindMethod · 0.45

Tested by

no test coverage detected