Exemple #1
0
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);
}
Exemple #2
0
 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 );
 }
Exemple #3
0
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;
	}
}
Exemple #4
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;
}
Exemple #5
0
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;
}
Exemple #6
0
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());
	}