[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 180c1d7 2/4: Begin to populate 'sample.lingo'
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 180c1d7 2/4: Begin to populate 'sample.lingo' |
Date: |
Fri, 13 Nov 2020 17:28:41 -0500 (EST) |
branch: master
commit 180c1d7d21ece4a1c971e881bb2e4e34481a6e10
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Begin to populate 'sample.lingo'
---
lingo.cpp | 14 ++++++++++++++
lingo.hpp | 3 +++
2 files changed, 17 insertions(+)
diff --git a/lingo.cpp b/lingo.cpp
index 00dc4ab..6423837 100644
--- a/lingo.cpp
+++ b/lingo.cpp
@@ -26,11 +26,15 @@
#include "alert.hpp"
#include "data_directory.hpp" // AddDataDir()
#include "my_proem.hpp" // ::write_proem()
+#include "sample.hpp" // superior::lingo
#include "xml_lmi.hpp"
+#include "xml_serialize.hpp"
#include <boost/filesystem/convenience.hpp>
#include <boost/filesystem/path.hpp>
+/// Construct from filename.
+
lingo::lingo(std::string const& filename)
{
xml_lmi::dom_parser parser(filename);
@@ -45,15 +49,25 @@ lingo::lingo(std::string const& filename)
<< LMI_FLUSH
;
}
+ xml_serialize::from_xml(root, map_);
}
void lingo::write_lingo_files()
{
+ // superior::lingo enumerators are used for clarity in specifying
+ // this map. They decay to integers in the resulting file, which
+ // can therefore be read without the enumerators being visible.
+ static std::unordered_map<superior::lingo,std::string> enumerative_map
+ {{superior::policy_form , "UL32768-NY"}
+ ,{superior::policy_form_KS_KY, "UL32768-X"}
+ };
+
fs::path const path(AddDataDir("sample.lingo"));
xml_lmi::xml_document document(xml_root_name());
write_proem(document, fs::basename(path));
xml::element& root = document.root_node();
xml_lmi::set_attr(root, "version", class_version());
+ xml_serialize::to_xml(root, enumerative_map);
document.save(path.string());
}
diff --git a/lingo.hpp b/lingo.hpp
index 4d56fe6..423966a 100644
--- a/lingo.hpp
+++ b/lingo.hpp
@@ -28,6 +28,7 @@
#include "xml_lmi_fwd.hpp"
#include <string>
+#include <unordered_map>
/// Company-specific lingo.
@@ -50,6 +51,8 @@ class LMI_SO lingo final
(xml_lmi::xml_document& document
,std::string const& file_leaf_name
);
+
+ std::unordered_map<int,std::string> map_;
};
#endif // lingo_hpp