Definition at line 37 of file dictionary_parser.cpp.
◆ dictionary_parser()
cif::dictionary_parser::dictionary_parser |
( |
validator & |
validator, |
|
|
std::istream & |
is, |
|
|
file & |
f |
|
) |
| |
|
inline |
◆ load_dictionary()
void cif::dictionary_parser::load_dictionary |
( |
| ) |
|
|
inline |
Definition at line 46 of file dictionary_parser.cpp.
48 std::unique_ptr<datablock> dict;
49 auto savedDatablock = m_datablock;
53 while (m_lookahead != CIFToken::Eof)
57 case CIFToken::GLOBAL:
63 dict.reset(
new datablock(m_token_value));
64 m_datablock = dict.get();
73 catch (
const std::exception &ex)
79 for (
auto &ic : mCategoryValidators)
80 m_validator.add_category_validator(std::move(ic));
81 mCategoryValidators.clear();
83 for (
auto &iv : mItemValidators)
85 auto cv = m_validator.get_validator_for_category(iv.first);
87 error(
"Undefined category '" + iv.first);
89 for (
auto &v : iv.second)
90 const_cast<category_validator *
>(cv)->addItemValidator(std::move(v));
99 datablock::iterator info;
101 std::tie(info, is_new) = m_datablock->emplace(
"dictionary");
102 if (not is_new and not info->empty())
104 auto r = info->front();
105 m_validator.set_name(r[
"title"].as<std::string>());
106 m_validator.version(r[
"version"].as<std::string>());
109 m_datablock = savedDatablock;
111 mItemValidators.clear();
The documentation for this class was generated from the following file: