[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master e695a13 4/6: Permit derivation from class pro
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master e695a13 4/6: Permit derivation from class product_data |
Date: |
Fri, 21 Jun 2019 18:18:31 -0400 (EDT) |
branch: master
commit e695a131f1203059c828b0bf646629e938815206
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Permit derivation from class product_data
Made default ctor protected rather than private, and added a protected
accessor, so that derived classes can represent particular products.
---
product_data.cpp | 12 ++++++++----
product_data.hpp | 7 +++++--
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/product_data.cpp b/product_data.cpp
index cb6c1af..c0087dd 100644
--- a/product_data.cpp
+++ b/product_data.cpp
@@ -117,10 +117,7 @@ std::string const& glossed_string::gloss() const
return gloss_;
}
-/// Private default ctor.
-///
-/// Used only by friends: class PolicyDocument, 'my_prod.cpp',
-/// and 'basicvalues.cpp'.
+/// Default ctor, used only by derived classes and friends.
product_data::product_data()
{
@@ -173,6 +170,13 @@ std::string const& product_data::datum(std::string const&
name) const
return member_cast<glossed_string>(operator[](name))->datum();
}
+/// Reference to named member.
+
+glossed_string& product_data::item(std::string const& name)
+{
+ return *exact_cast<glossed_string>(operator[](name));
+}
+
/// Enregister certain data members for access via any_member<>[].
void product_data::ascribe_members()
diff --git a/product_data.hpp b/product_data.hpp
index 2075fff..9eaff28 100644
--- a/product_data.hpp
+++ b/product_data.hpp
@@ -76,7 +76,7 @@ template<> struct deserialized<product_data>
///
/// Implicitly-declared special member functions do the right thing.
-class LMI_SO product_data final
+class LMI_SO product_data
:public xml_serializable <product_data>
,public MemberSymbolTable <product_data>
{
@@ -96,8 +96,11 @@ class LMI_SO product_data final
static void write_policy_files();
static void write_proprietary_policy_files();
- private:
+ protected:
product_data();
+ glossed_string& item(std::string const& name);
+
+ private:
product_data(product_data const&);
product_data& operator=(product_data const&) = delete;
- [lmi-commits] [lmi] master updated (c41f3dd -> 1cd343e), Greg Chicares, 2019/06/21
- [lmi-commits] [lmi] master e1de3f6 3/6: Place 'sample*' classes in an unnamed namespace, Greg Chicares, 2019/06/21
- [lmi-commits] [lmi] master e695a13 4/6: Permit derivation from class product_data,
Greg Chicares <=
- [lmi-commits] [lmi] master eac9529 1/6: Make 'make show_env' show more, Greg Chicares, 2019/06/21
- [lmi-commits] [lmi] master de3be01 2/6: Improve concinnity, Greg Chicares, 2019/06/21
- [lmi-commits] [lmi] master 6130ac9 5/6: Refactor 'sample*.policy' generation, Greg Chicares, 2019/06/21
- [lmi-commits] [lmi] master 1cd343e 6/6: Improve documentation, Greg Chicares, 2019/06/21