lmi-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]