void SettingsMgr::set_as_number(string const& k, double d) { string sp = get_as_string(k); if (sp == S(d)) { F_->msg("Option '" + k + "' already has value: " + sp); return; } const Option& opt = find_option(k); assert(opt.vtype == kInt || opt.vtype == kDouble || opt.vtype == kBool); if (opt.vtype == kInt) { m_.*opt.val.i.ptr = iround(d); if (k == "pseudo_random_seed") do_srand(); } else if (opt.vtype == kDouble) { if (k == "epsilon") { if (d <= 0.) throw ExecuteError("Value of epsilon must be positive."); epsilon = d; } m_.*opt.val.d.ptr = d; } else // if (opt.vtype == kBool) m_.*opt.val.b.ptr = (fabs(d) >= 0.5); }
std::string message_reader::get_as_string( const std::string &field_name ) const { const field_desc_type *fld(impl_->find_field( field_name )); if( !fld ) throw std::runtime_error( "Bad field name" ); return get_as_string( fld ); }
int Config::get_as_int(const char* key_name) { std::string s=get_as_string(key_name); if(s.size()>0){ return atoi(s.c_str()); } else{ return 0; } }
char *h_container_list_get_as_delimited_string(h_container_list_t *list, h_core_get_as_string_f get_as_string, const char *delimiter) { assert(list); assert(get_as_string); assert(delimiter); char *string; void *object; char *object_string; unsigned long object_index; unsigned long last_object_index; h_core_bool_t success; string = NULL; last_object_index = list->size - 1; success = h_core_bool_true; object_index = 0; h_container_list_iterate_start(list); while ((object = h_container_list_iterate_next(list))) { object_string = get_as_string(object); if (object_string) { string = h_core_string_append(string, object_string); free(object_string); if (string) { if (object_index != last_object_index) { string = h_core_string_append(string, delimiter); if (!string) { success = h_core_bool_false; h_core_trace("string_append"); break; } } } else { success = h_core_bool_false; h_core_trace("string_append"); break; } } else { success = h_core_bool_false; h_core_trace("get_as_string"); break; } object_index++; } if (!success && string) { free(string); string = NULL; } return string; }
char *ih_container_array_get_as_delimited_string(ih_container_array_t *array, ih_core_get_as_string_f get_as_string, char *delimiter) { assert(array); assert(get_as_string); assert(delimiter); char *string; void *object; char *object_string; unsigned long object_index; unsigned long last_object_index; ih_core_bool_t success; string = NULL; last_object_index = array->array_size - 1; success = ih_core_bool_true; object_index = 0; ih_container_array_iterate_start(array); while ((object = ih_container_array_iterate_next(array))) { object_string = get_as_string(object); if (object_string) { string = ih_core_string_append(string, object_string); free(object_string); if (string) { if (object_index != last_object_index) { string = ih_core_string_append(string, delimiter); if (!string) { success = ih_core_bool_false; ih_core_trace("string_append"); break; } } } else { success = ih_core_bool_false; ih_core_trace("string_append"); break; } } else { success = ih_core_bool_false; ih_core_trace("get_as_string"); break; } object_index++; } if (!success && string) { free(string); string = NULL; } return string; }
void SettingsMgr::set_as_string(string const& k, string const& v) { string sp = get_as_string(k); if (sp == v) { F_->msg("Option '" + k + "' already has value: " + v); return; } const Option& opt = find_option(k); assert(opt.vtype == kString || opt.vtype == kEnum); if (opt.vtype == kString) { if (k == "logfile" && !v.empty()) { FILE* f = fopen(v.c_str(), "a"); if (!f) throw ExecuteError("Cannot open file for writing: " + v); // time_now() ends with "\n" fprintf(f, "%s. LOG START: %s", fityk_version_line, time_now().c_str()); fclose(f); } else if (k == "numeric_format") { if (count(v.begin(), v.end(), '%') != 1) throw ExecuteError("Exactly one `%' expected, e.g. '%.9g'"); set_long_double_format(v); } else if (k == "cwd") { change_current_working_dir(v.c_str()); } m_.*opt.val.s.ptr = v; } else { // if (opt.vtype == kEnum) const char **ptr = opt.allowed_values; while (*ptr) { if (*ptr == v) { m_.*opt.val.e.ptr = *ptr; return; } ++ptr; } throw ExecuteError("`" + v + "' is not a valid value for `" + k + "'"); } }
void ChatEventInfo::setMchatMembers(const core::iarray &members) { auto &membersFriendly = Mchat_.MembersFriendly_; assert(membersFriendly.isEmpty()); for (auto index = 0; index < members.size(); ++index) { auto member = members.get_at(index); assert(member); QString memberFriendly = member->get_as_string(); cleanupFriendlyName(memberFriendly); membersFriendly << memberFriendly; } membersFriendly.removeDuplicates(); assert(membersFriendly.size() == members.size()); }