|
CASM
1.1.0
A Clusters Approach to Statistical Mechanics
|
#include <InputParser.hh>
Inheritance diagram for CASM::KwargsParser:Base data structure for parsing values from JSON and storing error and warning messages
This contains two jsonParser references:
this->input.find_at(this->path) that will be parsed when member functions (require, optional, etc.) are called and which any error or warning messages they create are referenced to.Basic example:
Similar options allow returning parsed values instead of assigning, optionally parsing if values exists in the JSON, specifying default values if no value exists, etc.
The make_report, print_errors and print_warnings methods allow formatted output of error and warning messages.
Definition at line 66 of file InputParser.hh.
Public Types | |
| typedef std::multimap< fs::path, std::shared_ptr< KwargsParser > > | map_type |
Public Member Functions | |
| KwargsParser (jsonParser const &_input, fs::path _path, bool _required) | |
| virtual | ~KwargsParser () |
| const jsonParser & | parent () const |
| fs::path | parent_path () const |
| std::string | name () const |
Name of this->self, equivalent to this->path.filename().string() More... | |
| bool | exists () const |
| fs::path | relpath (const fs::path &val) const |
| Return this->path / val, ensuring the result is a relative path. More... | |
| map_type::const_iterator | begin () const |
| Begin iterator over subparsers. More... | |
| map_type::const_iterator | end () const |
| End iterator over subparsers. More... | |
| bool | valid () const |
| Return true if this and and all subparsers are valid. More... | |
| std::map< fs::path, std::set< std::string > > | all_warnings () const |
| Return warning messages from this and all subparsers. More... | |
| std::map< fs::path, std::set< std::string > > | all_errors () const |
| Return error messages from this and all subparsers. More... | |
| void | insert (fs::path path, const std::shared_ptr< KwargsParser > &subparser) |
| void | insert_error (fs::path option, std::string message) |
Insert a subparser at location option with a single error message More... | |
| void | insert_warning (fs::path option, std::string message) |
Insert a subparser at location option with a single warning message More... | |
| bool | warn_unnecessary (const std::set< std::string > &expected) |
| Insert a warning if any unexpected JSON attributes are found in self. More... | |
| Validator & | insert (const Validator &other) |
| void | clear () |
| Validator & | insert (const Validator &other) |
Public Attributes | |
| jsonParser const & | input |
| Reference to the top of the JSON document being parsed. More... | |
| fs::path | path |
| jsonParser const & | self |
| bool | required |
| If this->input.at(this->path) is required to exist. More... | |
| std::string | type_name |
| std::set< std::string > | error |
| std::set< std::string > | warning |
Private Types | |
| typedef map_type::value_type | PairType |
Private Attributes | |
| map_type | m_subparsers |
| typedef std::multimap<fs::path, std::shared_ptr<KwargsParser> > CASM::KwargsParser::map_type |
Definition at line 134 of file InputParser.hh.
|
private |
Definition at line 172 of file InputParser.hh.
| CASM::KwargsParser::KwargsParser | ( | jsonParser const & | _input, |
| fs::path | _path, | ||
| bool | _required | ||
| ) |
Construct KwargsParser
| _input | Reference to top of the JSON document |
| _path | Location of JSON component, relative to input, to be parsed |
| _required | If true, insert an error if JSON component refered to by _path does not exist |
If required to exist, but does not, the KwargsParser will be constructed and the following error will be inserted:
Definition at line 20 of file InputParser.cc.
|
inlinevirtual |
Definition at line 102 of file InputParser.hh.
| std::map< fs::path, std::set< std::string > > CASM::KwargsParser::all_errors | ( | ) | const |
Return error messages from this and all subparsers.
Definition at line 77 of file InputParser.cc.
| std::map< fs::path, std::set< std::string > > CASM::KwargsParser::all_warnings | ( | ) | const |
Return warning messages from this and all subparsers.
Definition at line 61 of file InputParser.cc.
| KwargsParser::map_type::const_iterator CASM::KwargsParser::begin | ( | ) | const |
Begin iterator over subparsers.
Definition at line 48 of file InputParser.cc.
|
inlineinherited |
Definition at line 14 of file Validator.hh.
| KwargsParser::map_type::const_iterator CASM::KwargsParser::end | ( | ) | const |
End iterator over subparsers.
Definition at line 52 of file InputParser.cc.
| bool CASM::KwargsParser::exists | ( | ) | const |
Check if this->input.find_at(this->path) exists
When KwargsParser is contructed with a path that does not exist, then this->self=this->input.
Definition at line 44 of file InputParser.cc.
|
inline |
Definition at line 19 of file Validator.hh.
Definition at line 19 of file Validator.hh.
| void CASM::KwargsParser::insert | ( | fs::path | path, |
| const std::shared_ptr< KwargsParser > & | subparser | ||
| ) |
Insert a subparser
Subparsers are stored in a map of path (from this->input) to the subparser. After being inserted, the subparser's errors and warnings are included in validation checks (valid) and in parser output (make_report, print_warnings, print_errors, etc.).
Definition at line 92 of file InputParser.cc.
| void CASM::KwargsParser::insert_error | ( | fs::path | option, |
| std::string | message | ||
| ) |
Insert a subparser at location option with a single error message
Definition at line 97 of file InputParser.cc.
| void CASM::KwargsParser::insert_warning | ( | fs::path | option, |
| std::string | message | ||
| ) |
Insert a subparser at location option with a single warning message
Definition at line 104 of file InputParser.cc.
| std::string CASM::KwargsParser::name | ( | ) | const |
Name of this->self, equivalent to this->path.filename().string()
Definition at line 42 of file InputParser.cc.
| const jsonParser & CASM::KwargsParser::parent | ( | ) | const |
Return a const reference to the parent JSON object of this->self
If self==input, returns self.
Definition at line 33 of file InputParser.cc.
| fs::path CASM::KwargsParser::parent_path | ( | ) | const |
Return a fs::path from the top-level to the parent JSON object of this->self
The result satisfies: this->parent()==this->input.find_at(this->parent_path())
Definition at line 40 of file InputParser.cc.
|
inline |
Return this->path / val, ensuring the result is a relative path.
Definition at line 128 of file InputParser.hh.
| bool CASM::KwargsParser::valid | ( | ) | const |
Return true if this and and all subparsers are valid.
Definition at line 56 of file InputParser.cc.
| bool CASM::KwargsParser::warn_unnecessary | ( | const std::set< std::string > & | expected | ) |
Insert a warning if any unexpected JSON attributes are found in self.
Definition at line 111 of file InputParser.cc.
|
inherited |
Definition at line 11 of file Validator.hh.
| jsonParser const& CASM::KwargsParser::input |
Reference to the top of the JSON document being parsed.
Definition at line 68 of file InputParser.hh.
|
private |
Used to store sub-parsers. Allows code re-use w/ storage of all errors & warnings. Can use static_cast to get values from InputParser subparsers if they are included.
Definition at line 178 of file InputParser.hh.
| fs::path CASM::KwargsParser::path |
Path to the JSON component to be parsed from the opt of the JSON document. If it exists, this->self = this->input.at(this->path))
Definition at line 72 of file InputParser.hh.
| bool CASM::KwargsParser::required |
If this->input.at(this->path) is required to exist.
Definition at line 84 of file InputParser.hh.
| jsonParser const& CASM::KwargsParser::self |
Reference to the JSON component to be parsed, if it exists, otherwise set to this->input
Note:
Definition at line 81 of file InputParser.hh.
| std::string CASM::KwargsParser::type_name |
Default empty, can be used to differentiate between parsers when multiple values are parsed from a single JSON object
Definition at line 88 of file InputParser.hh.
|
inherited |
Definition at line 12 of file Validator.hh.