1 #ifndef APPLICATION_PYBIND_HH_ 2 #define APPLICATION_PYBIND_HH_ 14 std::list< std::string > all_members;
16 all_members.push_back(
"MainApp" );
18 .def( pybind11::init< >() )
26 .def_property_readonly(
"config_filename", (std::string& (
scarab::main_app::*)()) &scarab::main_app::config_filename )
40 .
def(
"add_config_flag",
41 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
46 "add a CLI flag, which is toggled as a bool" )
47 .def(
"add_config_counted_flag",
48 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
53 "add a CLI flag, the config will contain a count of occurrances" )
54 .def(
"add_config_string_option",
55 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
60 "add a single-string argument" )
61 .def(
"add_config_int_option",
62 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
67 "add a single-integer argument" )
68 .def(
"add_config_float_option",
69 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
74 "add a single-float argument" )
75 .def(
"add_config_multi_string_option",
76 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
81 "add a sequence of string arguments" )
82 .def(
"add_config_multi_int_option",
83 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
88 "add a sequence of ints arguments" )
89 .def(
"add_config_multi_float_option",
90 [](
scarab::main_app* an_app, std::string a_name, std::string a_addr, std::string a_description)
95 "add a sequence of string arguments" )
104 const char* argv[args.size()];
105 std::list< std::string >::iterator an_arg = args.begin();
106 for (
unsigned i_arg=0; i_arg<args.size(); ++i_arg)
108 argv[i_arg] = an_arg->c_str();
116 "parse arguments and execute the application" )
verbosity_t get_global_verbosity() const
Get the global verbosity.
class_ & def_property_readonly(const char *name, const Getter &fget, const Extra &...extra)
Uses return_value_policy::reference_internal by default.
void set_version(scarab::version_semantic_ptr_t a_ver)
Wrapper for Python extension modules.
virtual void do_config_stage_4()
Load the application-specific options.
virtual void do_config_stage_1()
Load default values.
std::list< std::string > export_application(pybind11::module &mod)
virtual void do_config_stage_2()
Load the config file.
CLI::Option * add_config_flag(std::string a_name, std::string a_master_config_addr, std::string a_description="")
App * callback(std::function< void()> app_callback)
CLI::Option * add_config_option(std::string a_name, std::string a_master_config_addr, std::string a_description="")
Add an option that gets automatically added to the master config of a main_app.
CLI::Option * add_config_multi_option(std::string a_name, std::string a_master_config_addr, std::string a_description="")
Add an option that gets automatically added to the master config of a main_app.
#define CLI11_PARSE(app, argc, argv)
Primary application class.
virtual void do_config_stage_3()
Load the directly-addressed non-option arguments.
bool typename Extra class_ & def(const char *name_, Func &&f, const Extra &... extra)