[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [4987] Refactor, deriving configurable_settings from xml_s
From: |
Greg Chicares |
Subject: |
[lmi-commits] [4987] Refactor, deriving configurable_settings from xml_serializable |
Date: |
Sat, 12 Jun 2010 01:39:19 +0000 |
Revision: 4987
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=4987
Author: chicares
Date: 2010-06-12 01:39:19 +0000 (Sat, 12 Jun 2010)
Log Message:
-----------
Refactor, deriving configurable_settings from xml_serializable
Modified Paths:
--------------
lmi/trunk/ChangeLog
lmi/trunk/configurable_settings.cpp
lmi/trunk/configurable_settings.hpp
Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2010-06-12 01:17:30 UTC (rev 4986)
+++ lmi/trunk/ChangeLog 2010-06-12 01:39:19 UTC (rev 4987)
@@ -26031,3 +26031,22 @@
configurable_settings.cpp
Remove a defect marker for an issue resolved 20100514T2140Z.
+20100611T2356Z <address@hidden> [702]
+
+ Makefile.am
+ configurable_settings.cpp
+ configurable_settings_test.cpp [new file]
+ objects.make
+Add an inchoate unit test.
+
+20100612T0117Z <address@hidden> [702]
+
+ configurable_settings.cpp
+Rearrange to make an imminent refactoring clearer.
+
+20100612T0139Z <address@hidden> [702]
+
+ configurable_settings.cpp
+ configurable_settings.hpp
+Refactor, deriving configurable_settings from xml_serializable.
+
Modified: lmi/trunk/configurable_settings.cpp
===================================================================
--- lmi/trunk/configurable_settings.cpp 2010-06-12 01:17:30 UTC (rev 4986)
+++ lmi/trunk/configurable_settings.cpp 2010-06-12 01:39:19 UTC (rev 4987)
@@ -27,6 +27,7 @@
#endif // __BORLANDC__
#include "configurable_settings.hpp"
+#include "xml_serializable.tpp"
#include "alert.hpp"
#include "contains.hpp"
@@ -47,12 +48,10 @@
#include <iterator>
#include <sstream>
+template class xml_serializable<configurable_settings>;
+
namespace
{
-// Forward declarations that will soon become unnecessary.
-std::string const& xml_root_name();
-bool is_detritus(std::string const&);
-
std::string const& configuration_filename()
{
static std::string s("configurable_settings.xml");
@@ -183,69 +182,25 @@
void configurable_settings::load()
{
- std::ostringstream oss;
- xml_lmi::dom_parser parser(configuration_filepath().string());
- xml::element const& root = parser.root_node(xml_root_name());
- xml::const_nodes_view const elements(root.elements());
- typedef xml::const_nodes_view::const_iterator cnvi;
- for(cnvi i = elements.begin(); i != elements.end(); ++i)
- {
- std::string name = i->get_name();
- if(contains(member_names(), name))
- {
- operator[](i->get_name()) = xml_lmi::get_content(*i);
- }
- else if(is_detritus(name))
- {
- // Hold certain obsolete entities that must be translated.
- // For now, there are none.
- }
- else
- {
- oss << " '" << name << "'\n";
- }
- }
- if(!oss.str().empty())
- {
- warning()
- << "Configurable-settings file '"
- << configuration_filepath()
- << "':\n"
- << oss.str()
- << "not recognized."
- << LMI_FLUSH
- ;
- }
+ xml_serializable<configurable_settings>::load(configuration_filepath());
}
void configurable_settings::save() const
{
- xml_lmi::xml_document document(xml_root_name());
- xml::element& root = document.root_node();
+ xml_serializable<configurable_settings>::save(configuration_filepath());
+}
- std::vector<std::string>::const_iterator i;
- for(i = member_names().begin(); i != member_names().end(); ++i)
- {
- xml_lmi::add_node(root, *i, operator[](*i).str());
- }
+/// Backward-compatibility serial number of this class's xml version.
+///
+/// version 0: 20100612T0139Z
- fs::ofstream ofs(configuration_filepath(), ios_out_trunc_binary());
- ofs << document;
- if(!ofs)
- {
- fatal_error()
- << "Configurable-settings file '"
- << configuration_filepath()
- << "' is not writeable."
- << LMI_FLUSH
- ;
- }
+int configurable_settings::class_version() const
+{
+ return 0;
}
-namespace
+std::string const& configurable_settings::xml_root_name() const
{
-std::string const& xml_root_name()
-{
static std::string const s("configurable_settings");
return s;
}
@@ -254,7 +209,7 @@
/// are recognized and ignored. If they're resurrected in a later
/// version, then they aren't ignored.
-bool is_detritus(std::string const& s)
+bool configurable_settings::is_detritus(std::string const& s) const
{
static std::string const a[] =
{"xml_schema_filename" // Withdrawn.
@@ -267,7 +222,6 @@
static std::vector<std::string> const v(a, a + lmi_array_size(a));
return contains(v, s);
}
-} // Unnamed namespace.
// TODO ?? CALCULATION_SUMMARY Address the validation issue:
Modified: lmi/trunk/configurable_settings.hpp
===================================================================
--- lmi/trunk/configurable_settings.hpp 2010-06-12 01:17:30 UTC (rev 4986)
+++ lmi/trunk/configurable_settings.hpp 2010-06-12 01:39:19 UTC (rev 4987)
@@ -29,6 +29,7 @@
#include "any_member.hpp"
#include "obstruct_slicing.hpp"
#include "so_attributes.hpp"
+#include "xml_serializable.hpp"
#include <boost/utility.hpp>
@@ -46,9 +47,10 @@
/// Data members are documented in their accessors' implementations.
class LMI_SO configurable_settings
- :public MemberSymbolTable<configurable_settings>
- ,private boost::noncopyable
- ,virtual private obstruct_slicing<configurable_settings>
+ : private boost::noncopyable
+ ,virtual private obstruct_slicing <configurable_settings>
+ , public xml_serializable <configurable_settings>
+ , public MemberSymbolTable <configurable_settings>
{
public:
static configurable_settings& instance();
@@ -77,6 +79,13 @@
void ascribe_members();
void load();
+ // xml_serializable required implementation.
+ virtual int class_version() const;
+ virtual std::string const& xml_root_name() const;
+
+ // xml_serializable overrides.
+ virtual bool is_detritus(std::string const&) const;
+
std::string calculation_summary_columns_;
std::string cgi_bin_log_filename_;
std::string custom_input_filename_;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [4987] Refactor, deriving configurable_settings from xml_serializable,
Greg Chicares <=