|
ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
|
Holds list of Options, and a list of other InputBlocks. Can be initialised with a list of options, with a string, or from a file (ifstream). Format for input is, e.g.,: More...
#include <InputBlock.hpp>
Public Member Functions | |
| InputBlock () | |
| Default constructor: name will be blank. | |
| InputBlock (std::string_view name, std::initializer_list< Option > options={}) | |
| Construct from literal list of 'Options' (see Option struct) | |
| InputBlock (std::string_view name, const std::string &string_input) | |
| Construct from a string with the correct Block{option=value;} format. | |
| InputBlock (std::string_view name, const std::istream &file) | |
| Construct from plain text file, in Block{option=value;} format. | |
| void | add (InputBlock block, bool merge=false) |
| Add a new InputBlock (merge: will be merged with existing if names match) | |
| void | merge (InputBlock block) |
| void | add (Option option) |
| Adds a new option to end of list. | |
| void | add (const std::vector< Option > &options) |
| void | add (const std::string &string, bool merge=false) |
| Adds options/inputBlocks by parsing a string. | |
| void | merge (const std::string &string) |
| std::string_view | name () const |
| const std::vector< Option > & | options () const |
| Return const reference to list of options. | |
| const std::vector< InputBlock > & | blocks () const |
| Return const reference to list of blocks. | |
| template<typename T > | |
| T | get (std::string_view key, T default_value) const |
| If 'key' exists in the options, returns value. Else, returns default_value. Note: If two keys with same name, will use the later. | |
| template<typename T = std::string> | |
| std::optional< T > | get (std::string_view key) const |
| Returns optional value. Contains value if key exists; empty otherwise. Note: If two keys with same name, will use the later. | |
| bool | has_option (std::string_view key) const |
| Check is option is present (even if not set) in current block. | |
| bool | option_is_set (std::string_view key) const |
| Check if option is present AND has been set. | |
| template<typename T > | |
| T | get (std::initializer_list< std::string > blocks, std::string_view key, T default_value) const |
| Get value from set of nested blocks. .get({block1,block2},option) | |
| template<typename T > | |
| std::optional< T > | get (std::initializer_list< std::string > blocks, std::string_view key) const |
| As above, but without default value. | |
| std::optional< InputBlock > | getBlock (std::string_view name) const |
| Returns optional InputBlock. Contains InputBlock if block of given name exists; empty otherwise. | |
| std::optional< InputBlock > | getBlock (std::initializer_list< std::string > blocks, std::string_view name) const |
| InputBlock | get_block (std::string_view name) const |
| If block is present, returns a copy of it. If not, returns empty block. | |
| bool | has_block (std::string_view name) const |
| Checks if block 'name' is present in current block. | |
| bool | has_block (std::initializer_list< std::string > blocks, std::string_view name) const |
| Checks if block 'name' is present in nesteded block. | |
| std::optional< Option > | getOption (std::string_view key) const |
| Get an 'Option' (kay, value) - rarely needed. | |
| void | print (std::ostream &os=std::cout, int indent_depth=0) const |
| Prints options to screen in user-friendly form. Same form as input string. By default prints to cout, but can be given any ostream. | |
| bool | check (std::initializer_list< std::string > blocks, const std::vector< std::pair< std::string, std::string > > &list, bool print=false) const |
| Check all the options and blocks in this; if any of them are not present in 'list', then there is likely a spelling error in the input => returns false, warns user, and prints all options to screen. list is a pair: {option, description}. Description allws you to explain what each option is - great for 'self-documenting' code If print=true - will print all options+descriptions even if all good. | |
| bool | check (const std::vector< std::pair< std::string, std::string > > &list, bool print=false) const |
| Override for when condidering current block. | |
Friends | |
| bool | operator== (InputBlock block, std::string_view name) |
| Comparison of blocks compares the 'name'. | |
| bool | operator== (std::string_view name, InputBlock block) |
| bool | operator!= (InputBlock block, std::string_view name) |
| bool | operator!= (std::string_view name, InputBlock block) |
Holds list of Options, and a list of other InputBlocks. Can be initialised with a list of options, with a string, or from a file (ifstream). Format for input is, e.g.,:
BlockName1{ option1=value1; option2=value2; InnerBlock{ option1=v3; } }
Note: comparison for block/option names is case insensitive!
|
inline |
Check all the options and blocks in this; if any of them are not present in 'list', then there is likely a spelling error in the input => returns false, warns user, and prints all options to screen. list is a pair: {option, description}. Description allws you to explain what each option is - great for 'self-documenting' code If print=true - will print all options+descriptions even if all good.
Check one of the sub-blocks.