4 #include "ns3/fatal-error.h"
6 #include "ns3/global-value.h"
7 #include "ns3/string.h"
8 #include "ns3/config.h"
9 #include <libxml/encoding.h>
10 #include <libxml/xmlwriter.h>
32 m_writer = xmlNewTextWriterFilename (filename.c_str (), 0);
37 rc = xmlTextWriterSetIndent (
m_writer, 1);
45 rc = xmlTextWriterStartDocument (
m_writer, NULL,
"utf-8", NULL);
53 rc = xmlTextWriterStartElement (
m_writer, BAD_CAST
"ns3");
71 rc = xmlTextWriterEndDocument (
m_writer);
86 XmlDefaultIterator (xmlTextWriterPtr writer) {
90 virtual void StartVisitTypeId (std::string name) {
93 virtual void DoVisitAttribute (std::string name, std::string defaultValue) {
95 rc = xmlTextWriterStartElement (
m_writer, BAD_CAST
"default");
100 std::string fullname = m_typeid +
"::" + name;
101 rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST
"name",
102 BAD_CAST fullname.c_str ());
107 rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST
"value",
108 BAD_CAST defaultValue.c_str ());
113 rc = xmlTextWriterEndElement (
m_writer);
120 std::string m_typeid;
122 XmlDefaultIterator iterator = XmlDefaultIterator (
m_writer);
132 XmlTextAttributeIterator (xmlTextWriterPtr writer)
135 virtual void DoVisitAttribute (
Ptr<Object> object, std::string name) {
137 object->GetAttribute (name, str);
139 rc = xmlTextWriterStartElement (
m_writer, BAD_CAST
"value");
144 rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST
"path",
145 BAD_CAST GetCurrentPath ().c_str ());
150 rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST
"value",
151 BAD_CAST str.
Get ().c_str ());
156 rc = xmlTextWriterEndElement (
m_writer);
165 XmlTextAttributeIterator iter = XmlTextAttributeIterator (
m_writer);
176 (*i)->GetValue (value);
178 rc = xmlTextWriterStartElement (
m_writer, BAD_CAST
"global");
183 rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST
"name",
184 BAD_CAST (*i)->GetName ().c_str ());
189 rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST
"value",
190 BAD_CAST value.
Get ().c_str ());
195 rc = xmlTextWriterEndElement (
m_writer);
221 xmlTextReaderPtr reader = xmlNewTextReaderFilename (
m_filename.c_str ());
227 rc = xmlTextReaderRead (reader);
230 const xmlChar *type = xmlTextReaderConstName (reader);
235 if (std::string ((
char*)type) ==
"default")
237 xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST
"name");
242 xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST
"value");
247 NS_LOG_DEBUG (
"default="<<(
char*)name<<
", value=" <<value);
252 rc = xmlTextReaderRead (reader);
254 xmlFreeTextReader (reader);
259 xmlTextReaderPtr reader = xmlNewTextReaderFilename (
m_filename.c_str ());
265 rc = xmlTextReaderRead (reader);
268 const xmlChar *type = xmlTextReaderConstName (reader);
273 if (std::string ((
char*)type) ==
"global")
275 xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST
"name");
280 xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST
"value");
285 NS_LOG_DEBUG (
"global="<<(
char*)name<<
", value=" <<value);
290 rc = xmlTextReaderRead (reader);
292 xmlFreeTextReader (reader);
297 xmlTextReaderPtr reader = xmlNewTextReaderFilename (
m_filename.c_str ());
303 rc = xmlTextReaderRead (reader);
306 const xmlChar *type = xmlTextReaderConstName (reader);
311 if (std::string ((
char*)type) ==
"value")
313 xmlChar *path = xmlTextReaderGetAttribute (reader, BAD_CAST
"path");
318 xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST
"value");
323 NS_LOG_DEBUG (
"path="<<(
char*)path <<
", value=" << (
char*)value);
328 rc = xmlTextReaderRead (reader);
330 xmlFreeTextReader (reader);
virtual void Attributes(void)
#define NS_LOG_FUNCTION(parameters)
std::string Get(void) const
virtual void SetFilename(std::string filename)
hold variables of type string
virtual void Default(void)
NS_LOG_COMPONENT_DEFINE("XmlConfig")
Vector::const_iterator Iterator
void Set(std::string path, const AttributeValue &value)
#define NS_FATAL_ERROR(msg)
fatal error handling
static Iterator Begin(void)
void SetDefault(std::string name, const AttributeValue &value)
virtual void SetFilename(std::string filename)
virtual void Global(void)
virtual void Attributes(void)
virtual void Global(void)
static Iterator End(void)
#define NS_LOG_DEBUG(msg)
virtual void Default(void)
This class is used internally by ConfigStore and GtkConfigStore.
xmlTextWriterPtr m_writer
void SetGlobal(std::string name, const AttributeValue &value)