STORMM Source Documentation
Loading...
Searching...
No Matches
command_line_parser.h
1// -*-c++-*-
2#ifndef STORMM_COMMAND_LINE_PARSER_H
3#define STORMM_COMMAND_LINE_PARSER_H
4
5#include <map>
6#include <string>
7#include <vector>
8#include "copyright.h"
9#include "namelist_emulator.h"
10#include "namelist_inventory.h"
11
12namespace stormm {
13namespace namelist {
14
17const char default_stormm_input_deck[] = "stormm.in";
18const char default_stormm_input_topology[] = "prmtop";
19const char default_stormm_input_coordinates[] = "inpcrd";
20const char default_stormm_report_file[] = "stormm_report.m";
21const char default_stormm_output_trajectory[] = "mdcrd";
22const char default_stormm_output_checkpoint[] = "mdrst";
24
31public:
32
38 CommandLineParser(const std::string &program_name_in, const std::string &program_description,
39 const std::vector<std::string> &noted_imports_in = {},
40 ExceptionResponse policy_in = ExceptionResponse::WARN);
41
42 CommandLineParser(const std::string &program_name_in, const std::string &program_description,
43 ExceptionResponse policy_in);
45
53 CommandLineParser(const CommandLineParser &original) = default;
54 CommandLineParser(CommandLineParser &&original) = default;
55 CommandLineParser& operator=(const CommandLineParser &original) = default;
56 CommandLineParser& operator=(CommandLineParser &&original) = default;
58
63 std::string getInputAsString(int width = 0) const;
64
68 bool doesProgramExitOnHelp() const;
69
72
75
78 void activateExitOnHelp();
79
82 void preventExitOnHelp();
83
98 void addStandardAmberInputs(const std::vector<std::string> &cli_keys);
99 void addStandardAmberInputs(const char* key_a, const char* key_b = nullptr,
100 const char* key_c = nullptr, const char* key_d = nullptr);
103
107 void addStandardBenchmarkingInputs(const std::vector<std::string> &cli_keys);
108 void addStandardBenchmarkingInputs(const char* key_a, const char* key_b = nullptr,
109 const char* key_c = nullptr, const char* key_d = nullptr);
112
116 void addStandardApplicationInputs(const std::vector<std::string> &cli_keys);
117 void addStandardApplicationInputs(const char* key_a, const char* key_b = nullptr,
118 const char* key_c = nullptr, const char* key_d = nullptr);
121
131
137 void parseUserInput(int argc, const char* argv[]);
138
149
155 void addControlBlocks(const std::vector<std::string> &list);
156
164 void addCustomNamelists(const std::vector<NamelistToken> &custom_namelists_in);
165
166private:
167
168 ExceptionResponse policy;
171 int arg_count;
172 std::string program_name;
173 std::string executable;
174 NamelistEmulator cli_nml;
175 bool help_on_no_args;
177 bool exit_on_help;
179 bool lead_parser;
183
185 std::vector<std::string> command_line_text;
186
188 std::vector<std::string> control_blocks;
189
191 std::vector<CommandLineParser*> coordinations;
192
194 std::map<std::string, NamelistType> excluded_keys;
195
197 std::vector<std::string> noted_imports;
198
202 std::vector<NamelistToken> custom_namelists;
203};
204
205} // namespace namelist
206} // namespace stormm
207
208#endif
const NamelistEmulator * getNamelistPointer() const
Return a pointer to the internal namelist.
Definition command_line_parser.cpp:408
void addStandardAmberInputs(const std::vector< std::string > &cli_keys)
Impart the typical comand-line keywords inspired by Amber.
Definition command_line_parser.cpp:128
void coordinateWithPartner(CommandLineParser *other)
The nature of the command line parser as a unique sort of namelist which can be assembled and recombi...
Definition command_line_parser.cpp:537
void activateExitOnHelp()
Order the program to exit after displaying general help documentation, with a return value of zero.
Definition command_line_parser.cpp:118
bool doesProgramExitOnHelp() const
Obtain a verdict on whether the program is to exit after displaying a help message....
Definition command_line_parser.cpp:103
void addControlBlocks(const std::vector< std::string > &list)
Add a list of relevant namelists that will be displayed in the context of any help message....
Definition command_line_parser.cpp:614
void suppressHelpOnNoArgs()
Suppress the printout of help messages if no command line arguments are provided.
Definition command_line_parser.cpp:113
void addStandardApplicationInputs(const std::vector< std::string > &cli_keys)
Impart some common application command line arguments to the interface. Overloading and descriptions ...
Definition command_line_parser.cpp:325
void parseUserInput(int argc, const char *argv[])
Supply the internal namelist with command-line input as if parsing from an input file.
Definition command_line_parser.cpp:413
CommandLineParser(const CommandLineParser &original)=default
With no pointers to repair and all members coming from or built using Standard Template Library objec...
std::string getInputAsString(int width=0) const
Return the command line text as a string.
Definition command_line_parser.cpp:92
void addCustomNamelists(const std::vector< NamelistToken > &custom_namelists_in)
Add a series of custom namelists to the object's repertoire of control blocks, about which it is prep...
Definition command_line_parser.cpp:627
void activateHelpOnNoArgs()
Activate the printout of help messages if no command line arguments are provided.
Definition command_line_parser.cpp:108
void addStandardBenchmarkingInputs(const std::vector< std::string > &cli_keys)
Impart some common benchmarking keywords to the command line interface. Overloading and descriptions ...
Definition command_line_parser.cpp:213
void preventExitOnHelp()
Prevent the program from exiting after displaying general help documentation, with a return value of ...
Definition command_line_parser.cpp:123
CommandLineParser(const std::string &program_name_in, const std::string &program_description, const std::vector< std::string > &noted_imports_in={}, ExceptionResponse policy_in=ExceptionResponse::WARN)
The constructor is passed the list of command-line arguments. The object will take the first string i...
Definition command_line_parser.cpp:60
Collection of variables to transcribe information contained within a namelist.
Definition namelist_emulator.h:30