src/contrib/config-store.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 17 Apr 2008 13:42:25 -0700
changeset 2965 4b28e9740e3b
parent 2958 f6ec069d17da
child 3063 a1c532e3bf18
permissions -rw-r--r--
get rid of Attribute class. Use AttributeValue subclasses directly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2958
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
#include "config-store.h"
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
#include "ns3/string.h"
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
#include "ns3/config.h"
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
#include "ns3/object-vector.h"
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
#include "ns3/pointer.h"
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
#include "ns3/log.h"
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
#include <string>
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
#include <fstream>
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
#include <iostream>
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
#include <unistd.h>
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
NS_LOG_COMPONENT_DEFINE ("ConfigStore");
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
namespace ns3 {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
NS_OBJECT_ENSURE_REGISTERED (ConfigStore);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
TypeId 
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
ConfigStore::GetTypeId (void)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
  static TypeId tid = TypeId ("ns3::ConfigStore")
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
    .SetParent<ObjectBase> ()
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
    .AddAttribute ("LoadFilename", 
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
		   "The file where the configuration should be loaded from.",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
    25
		   StringValue (""),
2958
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
		   MakeStringAccessor (&ConfigStore::m_loadFilename),
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
		   MakeStringChecker ())
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
    .AddAttribute ("StoreFilename", 
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
		   "The file where the configuration should be stored to.",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
    30
		   StringValue (""),
2958
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
		   MakeStringAccessor (&ConfigStore::m_storeFilename),
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
		   MakeStringChecker ())
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
    ;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  return tid;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
TypeId 
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
ConfigStore::GetInstanceTypeId (void) const
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  return GetTypeId ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
ConfigStore::ConfigStore ()
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  ObjectBase::ConstructSelf (AttributeList ());
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
void 
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
ConfigStore::LoadFrom (std::string filename)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  std::ifstream is;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  is.open (filename.c_str (), std::ios::in);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  std::string path, value;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
  while (is.good())
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
      is >> path >> value;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
      NS_LOG_DEBUG (path << "=" << value);
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
    58
      Config::Set (path, StringValue (value));
2958
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
void 
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
ConfigStore::StoreTo (std::string filename)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
  std::ofstream os;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  os.open (filename.c_str (), std::ios::out);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
  for (uint32_t i = 0; i < Config::GetRootNamespaceObjectN (); ++i)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
      Ptr<Object> object = Config::GetRootNamespaceObject (i);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
      Store (os, object);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  os.close ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
  NS_ASSERT (m_currentPath.empty ());
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  NS_ASSERT (m_examined.empty ());
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
  exit (0);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
bool
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
ConfigStore::IsExamined (Ptr<const Object> object)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
  for (uint32_t i = 0; i < m_examined.size (); ++i)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
      if (object == m_examined[i])
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
	{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
	  return true;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
	}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  return false;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
std::string
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
ConfigStore::GetCurrentPath (std::string attr) const
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
  std::ostringstream oss;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
  for (uint32_t i = 0; i < m_currentPath.size (); ++i)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
      oss << "/" << m_currentPath[i];
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
  oss << "/" << attr;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
  return oss.str ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
void
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
ConfigStore::Store (std::ostream &os, Ptr<const Object> object)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
  if (IsExamined (object))
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
      return;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
  TypeId tid = object->GetInstanceTypeId ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  m_currentPath.push_back ("$" + tid.GetName ());
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  NS_LOG_DEBUG ("store " << tid.GetName ());
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  for (uint32_t i = 0; i < tid.GetAttributeN (); ++i)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
      Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (i);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
      const PointerChecker *ptrChecker = dynamic_cast<const PointerChecker *> (PeekPointer (checker));
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
      if (ptrChecker != 0)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
	{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
	  NS_LOG_DEBUG ("pointer attribute " << tid.GetAttributeName (i));
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   119
	  PointerValue ptr;
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   120
	  object->GetAttribute (tid.GetAttributeName (i), ptr);
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   121
	  Ptr<const Object> tmp = ptr.Get<Object> ();
2958
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
	  if (tmp != 0)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
	    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
	      m_currentPath.push_back (tid.GetAttributeName (i));
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
	      m_examined.push_back (object);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
	      Store (os, tmp);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
	      m_examined.pop_back ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
	      m_currentPath.pop_back ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
	    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
	  continue;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
	}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
      // attempt to cast to an object vector.
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
      const ObjectVectorChecker *vectorChecker = dynamic_cast<const ObjectVectorChecker *> (PeekPointer (checker));
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
      if (vectorChecker != 0)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
	{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
	  NS_LOG_DEBUG ("vector attribute " << tid.GetAttributeName (i));
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   137
	  ObjectVectorValue vector;
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   138
	  object->GetAttribute (tid.GetAttributeName (i), vector);
2958
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
	  for (uint32_t j = 0; j < vector.GetN (); ++j)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
	    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
	      NS_LOG_DEBUG ("vector attribute item " << j);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
	      Ptr<const Object> tmp = vector.Get (j);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
	      std::ostringstream oss;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
	      oss << tid.GetAttributeName (i) << "/" << j;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
	      m_currentPath.push_back (oss.str ());
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
	      m_examined.push_back (object);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
	      Store (os, tmp);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
	      m_examined.pop_back ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
	      m_currentPath.pop_back ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
	    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
	  continue;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
	}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
      uint32_t flags = tid.GetAttributeFlags (i);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
      Ptr<const AttributeAccessor> accessor = tid.GetAttributeAccessor (i);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
      if ((flags & TypeId::ATTR_GET) && accessor->HasGetter () &&
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
	  (flags & TypeId::ATTR_SET) && accessor->HasSetter ())
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
	{
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   158
	  StringValue str;
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   159
	  object->GetAttribute (tid.GetAttributeName (i), str);
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2958
diff changeset
   160
	  os << GetCurrentPath (tid.GetAttributeName (i)) << " " << str.Get () << std::endl;
2958
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
	}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
      else
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
	{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
	  NS_LOG_DEBUG ("could not store " << tid.GetAttributeName (i));
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
	}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
  Object::AggregateIterator iter = object->GetAggregateIterator ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
  bool recursiveAggregate = false;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
  while (iter.HasNext ())
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
      Ptr<const Object> tmp = iter.Next ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
      if (IsExamined (tmp))
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
	{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
	  recursiveAggregate = true;
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
	}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
  if (!recursiveAggregate)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
      iter = object->GetAggregateIterator ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
      while (iter.HasNext ())
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
	{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
	  Ptr<const Object> tmp = iter.Next ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
	  m_examined.push_back (object);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
	  Store (os, tmp);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
	  m_examined.pop_back ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
	}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   188
  m_currentPath.pop_back ();
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
void 
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
ConfigStore::Configure (void)
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
{
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
  if (m_loadFilename != "")
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
      LoadFrom (m_loadFilename);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  if (m_storeFilename != "")
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
    {
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
      StoreTo (m_storeFilename);
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
    }
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
}
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
f6ec069d17da ConfigStore allows you to dump and read from a file a simulation configuration
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
} // namespace ns3