--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/config-store.cc Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,135 @@
+#include "config-store.h"
+#include "raw-text-config.h"
+#include "ns3/string.h"
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/enum.h"
+#include "ns3/attribute-list.h"
+#include "ns3/config-store-config.h"
+#ifdef HAVE_LIBXML2
+#include "xml-config.h"
+#endif
+
+#include <string>
+#include <fstream>
+#include <iostream>
+#include <unistd.h>
+#include <stdlib.h>
+
+
+NS_LOG_COMPONENT_DEFINE ("ConfigStore");
+
+namespace ns3 {
+
+
+NS_OBJECT_ENSURE_REGISTERED (ConfigStore);
+
+TypeId
+ConfigStore::GetTypeId (void)
+{
+ static TypeId tid = TypeId ("ns3::ConfigStore")
+ .SetParent<ObjectBase> ()
+ .AddAttribute ("Mode",
+ "Configuration mode",
+ EnumValue (ConfigStore::NONE),
+ MakeEnumAccessor (&ConfigStore::SetMode),
+ MakeEnumChecker (ConfigStore::NONE, "None",
+ ConfigStore::LOAD, "Load",
+ ConfigStore::SAVE, "Save"))
+ .AddAttribute ("Filename",
+ "The file where the configuration should be saved to or loaded from.",
+ StringValue (""),
+ MakeStringAccessor (&ConfigStore::SetFilename),
+ MakeStringChecker ())
+ .AddAttribute ("FileFormat",
+ "Type of file format",
+ EnumValue (ConfigStore::RAW_TEXT),
+ MakeEnumAccessor (&ConfigStore::SetFileFormat),
+ MakeEnumChecker (ConfigStore::RAW_TEXT, "RawText",
+ ConfigStore::XML, "Xml"))
+ ;
+ return tid;
+}
+TypeId
+ConfigStore::GetInstanceTypeId (void) const
+{
+ return GetTypeId ();
+}
+
+
+ConfigStore::ConfigStore ()
+{
+ ObjectBase::ConstructSelf (AttributeList ());
+
+#ifdef HAVE_LIBXML2
+ if (m_fileFormat == ConfigStore::XML)
+ {
+ if (m_mode == ConfigStore::SAVE)
+ {
+ m_file = new XmlConfigSave ();
+ }
+ else if (m_mode == ConfigStore::LOAD)
+ {
+ m_file = new XmlConfigLoad ();
+ }
+ else
+ {
+ m_file = new NoneFileConfig ();
+ }
+ }
+ else
+#endif /* HAVE_LIBXML2 */
+ if (m_fileFormat == ConfigStore::RAW_TEXT)
+ {
+ if (m_mode == ConfigStore::SAVE)
+ {
+ m_file = new RawTextConfigSave ();
+ }
+ else if (m_mode == ConfigStore::LOAD)
+ {
+ m_file = new RawTextConfigLoad ();
+ }
+ else
+ {
+ m_file = new NoneFileConfig ();
+ }
+ }
+ m_file->SetFilename (m_filename);
+}
+
+ConfigStore::~ConfigStore ()
+{
+ delete m_file;
+ m_file = 0;
+}
+
+void
+ConfigStore::SetMode (enum Mode mode)
+{
+ m_mode = mode;
+}
+void
+ConfigStore::SetFileFormat (enum FileFormat format)
+{
+ m_fileFormat = format;
+}
+void
+ConfigStore::SetFilename (std::string filename)
+{
+ m_filename = filename;
+}
+
+void
+ConfigStore::ConfigureAttributes (void)
+{
+ m_file->Attributes ();
+}
+
+void
+ConfigStore::ConfigureDefaults (void)
+{
+ m_file->Default ();
+ m_file->Global ();
+}
+
+} // namespace ns3