[Top][All Lists]
[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()
{
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [4837] Move default implementations into base class,
Greg Chicares <=