lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [4837] Move default implementations into base class


From: Greg Chicares
Subject: [lmi-commits] [4837] Move default implementations into base class
Date: Wed, 14 Apr 2010 14:55:15 +0000

Revision: 4837
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=4837
Author:   chicares
Date:     2010-04-14 14:55:15 +0000 (Wed, 14 Apr 2010)
Log Message:
-----------
Move default implementations into base class

Modified Paths:
--------------
    lmi/trunk/ChangeLog
    lmi/trunk/mec_input.cpp
    lmi/trunk/mec_state.cpp
    lmi/trunk/product_data.cpp
    lmi/trunk/xml_serializable.hpp
    lmi/trunk/xml_serializable.tpp

Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2010-04-14 13:18:15 UTC (rev 4836)
+++ lmi/trunk/ChangeLog 2010-04-14 14:55:15 UTC (rev 4837)
@@ -24849,3 +24849,12 @@
 virtual. It does no harm to provide an empty implementation of a pure
 virtual merely as a hook upon which to hang documentation.
 
+20100414T1455Z <address@hidden> [760]
+
+  mec_input.cpp
+  mec_state.cpp
+  product_data.cpp
+  xml_serializable.hpp
+  xml_serializable.tpp
+Move default implementations into base class.
+

Modified: lmi/trunk/mec_input.cpp
===================================================================
--- lmi/trunk/mec_input.cpp     2010-04-14 13:18:15 UTC (rev 4836)
+++ lmi/trunk/mec_input.cpp     2010-04-14 14:55:15 UTC (rev 4837)
@@ -633,35 +633,22 @@
 
 std::string mec_input::redintegrate_ex_ante
     (int                file_version
-    ,std::string const& // name
+    ,std::string const& name
     ,std::string const& value
     ) const
 {
-    if(class_version() == file_version)
-        {
-        return value;
-        }
-    else
-        {
-        fatal_error() << "Incompatible file version." << LMI_FLUSH;
-        return value; // Stifle compiler warning.
-        }
+    typedef xml_serializable<mec_input> base;
+    return base::redintegrate_ex_ante(file_version, name, value);
 }
 
 void mec_input::redintegrate_ex_post
     (int                                file_version
-    ,std::map<std::string, std::string> // detritus_map
-    ,std::list<std::string>             // residuary_names
+    ,std::map<std::string, std::string> detritus_map
+    ,std::list<std::string>             residuary_names
     )
 {
-    if(class_version() == file_version)
-        {
-        return;
-        }
-    else
-        {
-        fatal_error() << "Incompatible file version." << LMI_FLUSH;
-        }
+    typedef xml_serializable<mec_input> base;
+    base::redintegrate_ex_post(file_version, detritus_map, residuary_names);
 }
 
 void mec_input::redintegrate_ad_terminum()

Modified: lmi/trunk/mec_state.cpp
===================================================================
--- lmi/trunk/mec_state.cpp     2010-04-14 13:18:15 UTC (rev 4836)
+++ lmi/trunk/mec_state.cpp     2010-04-14 14:55:15 UTC (rev 4837)
@@ -412,35 +412,22 @@
 
 std::string mec_state::redintegrate_ex_ante
     (int                file_version
-    ,std::string const& // name
+    ,std::string const& name
     ,std::string const& value
     ) const
 {
-    if(class_version() == file_version)
-        {
-        return value;
-        }
-    else
-        {
-        fatal_error() << "Incompatible file version." << LMI_FLUSH;
-        return value; // Stifle compiler warning.
-        }
+    typedef xml_serializable<mec_state> base;
+    return base::redintegrate_ex_ante(file_version, name, value);
 }
 
 void mec_state::redintegrate_ex_post
     (int                                file_version
-    ,std::map<std::string, std::string> // detritus_map
-    ,std::list<std::string>             // residuary_names
+    ,std::map<std::string, std::string> detritus_map
+    ,std::list<std::string>             residuary_names
     )
 {
-    if(class_version() == file_version)
-        {
-        return;
-        }
-    else
-        {
-        fatal_error() << "Incompatible file version." << LMI_FLUSH;
-        }
+    typedef xml_serializable<mec_state> base;
+    base::redintegrate_ex_post(file_version, detritus_map, residuary_names);
 }
 
 void mec_state::redintegrate_ad_terminum()

Modified: lmi/trunk/product_data.cpp
===================================================================
--- lmi/trunk/product_data.cpp  2010-04-14 13:18:15 UTC (rev 4836)
+++ lmi/trunk/product_data.cpp  2010-04-14 14:55:15 UTC (rev 4837)
@@ -209,35 +209,22 @@
 
 std::string product_data::redintegrate_ex_ante
     (int                file_version
-    ,std::string const& // name
+    ,std::string const& name
     ,std::string const& value
     ) const
 {
-    if(class_version() == file_version)
-        {
-        return value;
-        }
-    else
-        {
-        fatal_error() << "Incompatible file version." << LMI_FLUSH;
-        return value; // Stifle compiler warning.
-        }
+    typedef xml_serializable<product_data> base;
+    return base::redintegrate_ex_ante(file_version, name, value);
 }
 
 void product_data::redintegrate_ex_post
     (int                                file_version
-    ,std::map<std::string, std::string> // detritus_map
-    ,std::list<std::string>             // residuary_names
+    ,std::map<std::string, std::string> detritus_map
+    ,std::list<std::string>             residuary_names
     )
 {
-    if(class_version() == file_version)
-        {
-        return;
-        }
-    else
-        {
-        fatal_error() << "Incompatible file version." << LMI_FLUSH;
-        }
+    typedef xml_serializable<product_data> base;
+    base::redintegrate_ex_post(file_version, detritus_map, residuary_names);
 }
 
 void product_data::redintegrate_ad_terminum()

Modified: lmi/trunk/xml_serializable.hpp
===================================================================
--- lmi/trunk/xml_serializable.hpp      2010-04-14 13:18:15 UTC (rev 4836)
+++ lmi/trunk/xml_serializable.hpp      2010-04-14 14:55:15 UTC (rev 4837)
@@ -51,9 +51,7 @@
     void read (xml::element const&);
     void write(xml::element&) const;
 
-  private:
-    void immit_members_into(xml::element&) const;
-
+  protected: // Possibly-implemented pure virtuals.
     virtual int         class_version() const = 0;
     virtual std::string xml_root_name() const = 0;
     virtual bool        is_detritus(std::string const&) const = 0;
@@ -68,6 +66,9 @@
         ,std::list<std::string>             residuary_names
         ) = 0;
     virtual void        redintegrate_ad_terminum() = 0;
+
+  private:
+    void immit_members_into(xml::element&) const;
 };
 
 template<typename T>

Modified: lmi/trunk/xml_serializable.tpp
===================================================================
--- lmi/trunk/xml_serializable.tpp      2010-04-14 13:18:15 UTC (rev 4836)
+++ lmi/trunk/xml_serializable.tpp      2010-04-14 14:55:15 UTC (rev 4837)
@@ -210,12 +210,26 @@
 /// The element's text contents are given as a string argument; the
 /// transformed contents are returned as a string.
 
-std::string redintegrate_ex_ante
+template<typename T>
+std::string xml_serializable<T>::redintegrate_ex_ante
     (int                file_version
-    ,std::string const& name
+    ,std::string const& // name
     ,std::string const& value
     ) const
 {
+    if(class_version() == file_version)
+        {
+        return value;
+        }
+    else
+        {
+        fatal_error()
+            << "Incompatible file version."
+            << " An explicit override is necessary."
+            << LMI_FLUSH
+            ;
+        return value; // Stifle compiler warning.
+        }
 }
 
 /// Provide for backward compatibility after assigning values.
@@ -247,12 +261,25 @@
 /// i.e., if they were used only in an earlier version. In the first
 /// example above, 'firstname' and 'lastname' would be "detritus".
 
-void redintegrate_ex_post
+template<typename T>
+void xml_serializable<T>::redintegrate_ex_post
     (int                                file_version
-    ,std::map<std::string, std::string> detritus_map
-    ,std::list<std::string>             residuary_names
+    ,std::map<std::string, std::string> // detritus_map
+    ,std::list<std::string>             // residuary_names
     )
 {
+    if(class_version() == file_version)
+        {
+        return;
+        }
+    else
+        {
+        fatal_error()
+            << "Incompatible file version."
+            << " An explicit override is necessary."
+            << LMI_FLUSH
+            ;
+        }
 }
 
 /// Perform any required after-the-fact fixup.
@@ -260,7 +287,8 @@
 /// Override this function to do anything that's necessary after all
 /// elements have been read, but doesn't fit anywhere else.
 
-void redintegrate_ad_terminum()
+template<typename T>
+void xml_serializable<T>::redintegrate_ad_terminum()
 {
 }
 





reply via email to

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