Esempio n. 1
0
FunctionParameter::FunctionParameter(const std::string& fmt, bool keyword_only)
  : optional(false)
  , allow_none(false)
  , keyword_only(keyword_only)
  , size(0)
  , default_scalar(0)
{
  auto space = fmt.find(' ');
  if (space == std::string::npos) {
    throw std::runtime_error("FunctionParameter(): missing type: " + fmt);
  }

  auto type_str = fmt.substr(0, space);

  auto question = type_str.find('?');
  if (question != std::string::npos) {
    allow_none = true;
    type_str = type_str.substr(0, question);
  }

  // Parse and remove brackets from type_str
  auto bracket = type_str.find('[');
  if (bracket != std::string::npos) {
    auto size_str = type_str.substr(bracket + 1, type_str.length() - bracket - 2);
    size = atoi(size_str.c_str());
    type_str = type_str.substr(0, bracket);
  }

  auto name_str = fmt.substr(space + 1);
  auto it = type_map.find(type_str);
  if (it == type_map.end()) {
    throw std::runtime_error("FunctionParameter(): invalid type string: " + type_str);
  }
  type_ = it->second;

  auto eq = name_str.find('=');
  if (eq != std::string::npos) {
    name = name_str.substr(0, eq);
    optional = true;
    set_default_str(name_str.substr(eq + 1));
  } else {
    name = name_str;
  }
#if PY_MAJOR_VERSION == 2
  python_name = PyString_InternFromString(name.c_str());
#else
  python_name = PyUnicode_InternFromString(name.c_str());
#endif
}
Esempio n. 2
0
void isl_args_set_defaults(struct isl_args *args, void *opt)
{
	int i;

	for (i = 0; args->args[i].type != isl_arg_end; ++i) {
		switch (args->args[i].type) {
		case isl_arg_choice:
			set_default_choice(&args->args[i], opt);
			break;
		case isl_arg_flags:
			set_default_flags(&args->args[i], opt);
			break;
		case isl_arg_bool:
			set_default_bool(&args->args[i], opt);
			break;
		case isl_arg_child:
			set_default_child(&args->args[i], opt);
			break;
		case isl_arg_user:
			set_default_user(&args->args[i], opt);
			break;
		case isl_arg_int:
			set_default_int(&args->args[i], opt);
			break;
		case isl_arg_long:
			set_default_long(&args->args[i], opt);
			break;
		case isl_arg_ulong:
			set_default_ulong(&args->args[i], opt);
			break;
		case isl_arg_arg:
		case isl_arg_str:
			set_default_str(&args->args[i], opt);
			break;
		case isl_arg_str_list:
			set_default_str_list(&args->args[i], opt);
			break;
		case isl_arg_alias:
		case isl_arg_footer:
		case isl_arg_version:
		case isl_arg_end:
			break;
		}
	}
}