walker::ctr::CmdLine class

CmdLine : Control< specialized to Walker >, see Types.h.

Base classes

template<typename... Ts>
class tk::Control

Public types

using keywords = brigand::set<kw::verbose, kw::charestate, kw::virtualization, kw::help, kw::helpctr, kw::helpkw, kw::control, kw::pdf, kw::stat, kw::quiescence>
Walker command-line keywords.

Constructors, destructors, conversion operators

CmdLine(tk::ctr::HelpFactory ctrinfo = tk::ctr::HelpFactory())
Constructor: set all defaults.

Public functions

void pup(PUP::er& p)

Function documentation

walker::ctr::CmdLine::CmdLine(tk::ctr::HelpFactory ctrinfo = tk::ctr::HelpFactory())

Constructor: set all defaults.

ctrinfo in std::map of control file keywords and their info

Anything not set here is initialized by the compiler using the default constructor for the corresponding type. The ctrinfo map argument is optional. If not given, it is an empty std::map constructed in-place and affects nothing. If given, it contains the control file keywords, all of which are moved into the relevant slot (tag::ctrinfo). This allows constructing, e.g., a CmdLine object both with and without this information in place, which are both used at different stages of the execution. For example, because the command-line is parsed very early on during runtime while the input deck is only parsed much later, the control-file keywords and their information (owned by and generated by the input deck and its constructor) is not yet available when the CmdLine object is constructed. However, during command-line parsing it is still possible to request information on a control file keyword, so it must be available. The input deck is where all parsed information goes during control file parsing and is stored at global scope, see, e.g., walker::g_inputdeck. This global-scope (still namespace-scope), input deck object is thus created before command-line parsing. The input deck object's constructor (working only on type information, available at compile-time, of all the control file keywords) creates a run-time map. This is a run-time map, but available before main() starts, because it is const and it is initialized as a global-scope map. This map is then passed in here as ctrinfo, and its contents inserted into the CmdLine object, making the control-file keywords and their info available during command-line parsing. Since the input deck stack contains a copy of the command-line stack, the command-line stack must be possible to be instantiated without passing the ctrinfo map, otherwise it would be a mutual dependency.