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 }
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; } } }