24 #include "ns3/fatal-error.h" 
   26 #include "ns3/global-value.h" 
   27 #include "ns3/string.h" 
   28 #include "ns3/config.h" 
   29 #include <libxml/encoding.h> 
   30 #include <libxml/xmlwriter.h> 
   52   m_writer = xmlNewTextWriterFilename (filename.c_str (), 0);
 
   57   rc = xmlTextWriterSetIndent (
m_writer, 1);
 
   65   rc = xmlTextWriterStartDocument (
m_writer, NULL, 
"utf-8", NULL);
 
   73   rc = xmlTextWriterStartElement (
m_writer, BAD_CAST 
"ns3");
 
   91   rc = xmlTextWriterEndDocument (
m_writer);
 
  106     XmlDefaultIterator (xmlTextWriterPtr writer) {
 
  110     virtual void StartVisitTypeId (std::string name) {
 
  113     virtual void DoVisitAttribute (std::string name, std::string defaultValue) {
 
  115       rc = xmlTextWriterStartElement (
m_writer, BAD_CAST 
"default");
 
  120       std::string fullname = m_typeid + 
"::" + name;
 
  121       rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST 
"name",
 
  122                                         BAD_CAST fullname.c_str ());
 
  127       rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST 
"value",
 
  128                                         BAD_CAST defaultValue.c_str ());
 
  133       rc = xmlTextWriterEndElement (
m_writer);
 
  140     std::string m_typeid;
 
  142   XmlDefaultIterator iterator = XmlDefaultIterator (
m_writer);
 
  152     XmlTextAttributeIterator (xmlTextWriterPtr writer)
 
  155     virtual void DoVisitAttribute (
Ptr<Object> object, std::string name) {
 
  157       object->GetAttribute (name, str);
 
  159       rc = xmlTextWriterStartElement (
m_writer, BAD_CAST 
"value");
 
  164       rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST 
"path",
 
  165                                         BAD_CAST GetCurrentPath ().c_str ());
 
  170       rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST 
"value",
 
  171                                         BAD_CAST str.
Get ().c_str ());
 
  176       rc = xmlTextWriterEndElement (
m_writer);
 
  185   XmlTextAttributeIterator iter = XmlTextAttributeIterator (
m_writer);
 
  196       (*i)->GetValue (value);
 
  198       rc = xmlTextWriterStartElement (
m_writer, BAD_CAST 
"global");
 
  203       rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST 
"name",
 
  204                                         BAD_CAST (*i)->GetName ().c_str ());
 
  209       rc = xmlTextWriterWriteAttribute (
m_writer, BAD_CAST 
"value",
 
  210                                         BAD_CAST value.
Get ().c_str ());
 
  215       rc = xmlTextWriterEndElement (
m_writer);
 
  241   xmlTextReaderPtr reader = xmlNewTextReaderFilename (
m_filename.c_str ());
 
  247   rc = xmlTextReaderRead (reader);
 
  250       const xmlChar *type = xmlTextReaderConstName (reader);
 
  255       if (std::string ((
char*)type) == 
"default")
 
  257           xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST 
"name");
 
  262           xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST 
"value");
 
  267           NS_LOG_DEBUG (
"default="<<(
char*)name<<
", value=" <<value);
 
  272       rc = xmlTextReaderRead (reader);
 
  274   xmlFreeTextReader (reader);
 
  279   xmlTextReaderPtr reader = xmlNewTextReaderFilename (
m_filename.c_str ());
 
  285   rc = xmlTextReaderRead (reader);
 
  288       const xmlChar *type = xmlTextReaderConstName (reader);
 
  293       if (std::string ((
char*)type) == 
"global")
 
  295           xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST 
"name");
 
  300           xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST 
"value");
 
  305           NS_LOG_DEBUG (
"global="<<(
char*)name<<
", value=" <<value);
 
  310       rc = xmlTextReaderRead (reader);
 
  312   xmlFreeTextReader (reader);
 
  317   xmlTextReaderPtr reader = xmlNewTextReaderFilename (
m_filename.c_str ());
 
  323   rc = xmlTextReaderRead (reader);
 
  326       const xmlChar *type = xmlTextReaderConstName (reader);
 
  331       if (std::string ((
char*)type) == 
"value")
 
  333           xmlChar *path = xmlTextReaderGetAttribute (reader, BAD_CAST 
"path");
 
  338           xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST 
"value");
 
  343           NS_LOG_DEBUG (
"path="<<(
char*)path << 
", value=" << (
char*)value);
 
  348       rc = xmlTextReaderRead (reader);
 
  350   xmlFreeTextReader (reader);
 
virtual void Attributes(void)
Load or save the attributes values. 
 
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
 
std::string Get(void) const 
 
virtual void SetFilename(std::string filename)
Set the file name. 
 
Hold variables of type string. 
 
virtual void Default(void)
Load or save the default values. 
 
void Set(std::string path, const AttributeValue &value)
 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
 
Vector::const_iterator Iterator
Iterator type for the list of all global values. 
 
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate. 
 
static Iterator Begin(void)
The Begin iterator. 
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
virtual void SetFilename(std::string filename)
Set the file name. 
 
virtual void Global(void)
Load or save the global values. 
 
std::string m_filename
the file name 
 
virtual void Attributes(void)
Load or save the attributes values. 
 
void SetGlobal(std::string name, const AttributeValue &value)
 
virtual void Global(void)
Load or save the global values. 
 
static Iterator End(void)
The End iterator. 
 
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG. 
 
void SetDefault(std::string name, const AttributeValue &value)
 
virtual void Default(void)
Load or save the default values. 
 
Iterator to iterate on the values of attributes of an ns3::Object. 
 
xmlTextWriterPtr m_writer
XML writer. 
 
Iterator to iterate on the default values of attributes of an ns3::Object.