diff --git a/ssc/sscapi.cpp b/ssc/sscapi.cpp index d6f4a1987..896593114 100644 --- a/ssc/sscapi.cpp +++ b/ssc/sscapi.cpp @@ -577,6 +577,14 @@ SSCEXPORT void ssc_data_set_number( ssc_data_t p_data, const char *name, ssc_num vt->assign( name, var_data( value ) ); } +SSCEXPORT void ssc_data_set_number_from_string( ssc_data_t p_data, const char *name, const char *value ) +{ + var_table *vt = static_cast(p_data); + if (!vt) return; + ssc_number_t num_value = std::stod(value); + vt->assign( name, var_data(num_value) ); +} + SSCEXPORT void ssc_data_set_array( ssc_data_t p_data, const char *name, ssc_number_t *pvalues, int length ) { var_table *vt = static_cast(p_data); @@ -836,7 +844,7 @@ void json_to_ssc_var(const rapidjson::Value& json_val, ssc_var_t ssc_val) { std::vector vec; std::vector* vd_arr; var_table* vd_tab; - + auto is_numerical = [](const rapidjson::Value& json_val) { bool is_num = true; for (rapidjson::SizeType i = 0; i < json_val.Size(); i++) { @@ -847,7 +855,7 @@ void json_to_ssc_var(const rapidjson::Value& json_val, ssc_var_t ssc_val) { } return is_num; }; - + switch (json_val.GetType()) { default: case rapidjson::Type::kNullType: @@ -1012,7 +1020,7 @@ SSCEXPORT const char* ssc_data_to_json(ssc_data_t p_data) { return strdup(buffer.GetString()); } - + diff --git a/ssc/sscapi.h b/ssc/sscapi.h index 2e458bb6f..0211a46df 100644 --- a/ssc/sscapi.h +++ b/ssc/sscapi.h @@ -242,6 +242,7 @@ SSCEXPORT void ssc_data_set_string( ssc_data_t p_data, const char *name, const c /** Assigns value of type @a SSC_NUMBER */ SSCEXPORT void ssc_data_set_number( ssc_data_t p_data, const char *name, ssc_number_t value ); +SSCEXPORT void ssc_data_set_number_from_string( ssc_data_t p_data, const char *name, const char *value ); /** Assigns value of type @a SSC_ARRAY */ SSCEXPORT void ssc_data_set_array( ssc_data_t p_data, const char *name, ssc_number_t *pvalues, int length );