48                                const std::vector<std::string> &contexts,
 
   50  : m_objects (objects),
 
   51  m_contexts (contexts),
 
  134      ok |= 
object->TraceConnect (name, ctx, cb);
 
  167      object->TraceDisconnect (name, ctx, cb);
 
  201  bool Matches (std::size_t i) 
const;
 
  219  : m_element (element)
 
  232  std::string::size_type tmp;
 
  234  if (tmp != std::string::npos)
 
  236      std::string left = 
m_element.substr (0, tmp - 0);
 
  253  std::string::size_type leftBracket = 
m_element.find (
"[");
 
  254  std::string::size_type rightBracket = 
m_element.find (
"]");
 
  255  std::string::size_type dash = 
m_element.find (
"-");
 
  256  if (leftBracket == 0 && rightBracket == 
m_element.size () - 1
 
  257      && dash > leftBracket && dash < rightBracket)
 
  259      std::string lowerBound = 
m_element.substr (leftBracket + 1, dash - (leftBracket + 1));
 
  260      std::string upperBound = 
m_element.substr (dash + 1, rightBracket - (dash + 1));
 
  291  std::istringstream iss;
 
  294  return !iss.bad () && !iss.fail ();
 
  383  std::string::size_type tmp = 
m_path.find (
"/");
 
  389  tmp = 
m_path.find_last_of (
"/");
 
  390  if (tmp != (
m_path.size () - 1))
 
  410  std::string fullPath = 
"/";
 
  413      fullPath += *i + 
"/";
 
  432  std::string::size_type next = path.find (
"/", 1);
 
  434  if (next == std::string::npos)
 
  450  std::string item = path.substr (1, next - 1);
 
  451  std::string pathLeft = path.substr (next, path.size () - next);
 
  462      std::string::size_type offset = path.find (
"/Names");
 
  478  Ptr<Object> namedObject = Names::Find<Object> (root, item);
 
  481      NS_LOG_DEBUG (
"Name system resolved item = " << item << 
" to " << namedObject);
 
  499  std::string::size_type dollarPos = item.find (
"$");
 
  503      std::string tidString = item.substr (1, item.size () - 1);
 
  521      bool foundMatch = 
false;
 
  531              if (info.
name != item && item != 
"*")
 
  558              if (vectorChecker != 0)
 
  574      while (nextTid != tid);
 
  590  std::string::size_type next = path.find (
"/", 1);
 
  591  if (next == std::string::npos)
 
  595  std::string item = path.substr (1, next - 1);
 
  596  std::string pathLeft = path.substr (next, path.size () - next);
 
  600  for (it = container.
Begin (); it != container.
End (); ++it)
 
  602      if (matcher.
Matches ((*it).first))
 
  604          std::ostringstream oss;
 
  655  void ParsePath (std::string path, std::string *root, std::string *leaf) 
const;
 
  658  typedef std::vector<Ptr<Object> > 
Roots;
 
  670  std::string::size_type slash = path.find_last_of (
"/");
 
  672  *root = path.substr (0, slash);
 
  673  *leaf = path.substr (slash + 1, path.size () - (slash + 1));
 
  682  std::string root, leaf;
 
  685  container.
Set (leaf, value);
 
  692  std::string root, leaf;
 
  701  std::string root, leaf;
 
  710  std::string root, leaf;
 
  713  if (container.
GetN () == 0)
 
  715      std::size_t lastFwdSlash = root.rfind (
"/");
 
  717                                           << 
", the Requested object name = " << root.substr (lastFwdSlash + 1)
 
  718                                           << 
" does not exits on path " << root.substr (0, lastFwdSlash));
 
  727  std::string root, leaf;
 
  737  std::string root, leaf;
 
  740  if (container.
GetN () == 0)
 
  742      std::size_t lastFwdSlash = root.rfind (
"/");
 
  744                                           << 
", the Requested object name = " << root.substr (lastFwdSlash + 1)
 
  745                                           << 
" does not exits on path " << root.substr (0, lastFwdSlash));
 
  754  class LookupMatchesResolver : 
public Resolver 
  757    LookupMatchesResolver (std::string path)
 
  761    virtual void DoOne (
Ptr<Object> object, std::string path)
 
  763      m_objects.push_back (
object);
 
  764      m_contexts.push_back (path);
 
  766    std::vector<Ptr<Object> > m_objects;
 
  767    std::vector<std::string> m_contexts;
 
  768  } resolver = LookupMatchesResolver (path);
 
  769  for (Roots::const_iterator i = 
m_roots.begin (); i != 
m_roots.end (); i++)
 
  771      resolver.Resolve (*i);
 
  779  resolver.Resolve (0);
 
  781  return MatchContainer (resolver.m_objects, resolver.m_contexts, path);
 
  836      (*i)->ResetInitialValue ();
 
  860  std::string::size_type pos = fullName.rfind (
"::");
 
  861  if (pos == std::string::npos)
 
  865  std::string tidName = fullName.substr (0, pos);
 
  866  std::string paramName = fullName.substr (pos + 2, fullName.size () - (pos + 2));
 
  878      if (tmp.
name == paramName)
 
Hold a value for an Attribute.
Base class for Callback class.
Helper to test if an array entry matches a config path specification.
ArrayMatcher(std::string element)
Construct from a Config path specification.
bool StringToUint32(std::string str, uint32_t *value) const
Convert a string to an uint32_t.
bool Matches(std::size_t i) const
Test if a specific index matches the Config Path.
std::string m_element
The Config path element.
Config system implementation class.
void UnregisterRootNamespaceObject(Ptr< Object > obj)
void DisconnectWithoutContext(std::string path, const CallbackBase &cb)
Roots m_roots
The list of Config path roots.
Ptr< Object > GetRootNamespaceObject(std::size_t i) const
bool ConnectFailSafe(std::string path, const CallbackBase &cb)
bool SetFailSafe(std::string path, const AttributeValue &value)
std::size_t GetRootNamespaceObjectN(void) const
void Set(std::string path, const AttributeValue &value)
void ParsePath(std::string path, std::string *root, std::string *leaf) const
Break a Config path into the leading path and the last leaf token.
void Disconnect(std::string path, const CallbackBase &cb)
std::vector< Ptr< Object > > Roots
Container type to hold the root Config path tokens.
bool ConnectWithoutContextFailSafe(std::string path, const CallbackBase &cb)
void RegisterRootNamespaceObject(Ptr< Object > obj)
MatchContainer LookupMatches(std::string path)
hold a set of objects which match a specific search string.
bool SetFailSafe(std::string name, const AttributeValue &value)
void Connect(std::string name, const CallbackBase &cb)
void DisconnectWithoutContext(std::string name, const CallbackBase &cb)
void Set(std::string name, const AttributeValue &value)
Ptr< Object > Get(std::size_t i) const
void Disconnect(std::string name, const CallbackBase &cb)
std::string GetPath(void) const
MatchContainer::Iterator End(void) const
std::string GetMatchedPath(uint32_t i) const
bool ConnectFailSafe(std::string name, const CallbackBase &cb)
std::size_t GetN(void) const
bool ConnectWithoutContextFailSafe(std::string name, const CallbackBase &cb)
std::string m_path
The path used to perform the object matching.
void ConnectWithoutContext(std::string name, const CallbackBase &cb)
std::vector< Ptr< Object > >::const_iterator Iterator
Const iterator over the objects in this container.
std::vector< Ptr< Object > > m_objects
The list of objects in this container.
MatchContainer::Iterator Begin(void) const
std::vector< std::string > m_contexts
The context for each object.
Abstract class to parse Config paths into object references.
std::vector< std::string > m_workStack
Current list of path tokens.
Resolver(std::string path)
Construct from a base Config path.
void Resolve(Ptr< Object > root)
Parse the stored Config path into an object reference, beginning at the indicated root object.
void Canonicalize(void)
Ensure the Config path starts and ends with a '/'.
void DoResolveOne(Ptr< Object > object)
Handle one object found on the path.
virtual void DoOne(Ptr< Object > object, std::string path)=0
Handle one found object.
std::string GetResolvedPath(void) const
Get the current Config path.
void DoResolve(std::string path, Ptr< Object > root)
Parse the next element in the Config path.
std::string m_path
The Config path.
virtual ~Resolver()
Destructor.
void DoArrayResolve(std::string path, const ObjectPtrContainerValue &vector)
Parse an index on the Config path.
Vector::const_iterator Iterator
Iterator type for the list of all global values.
static Iterator End(void)
The End iterator.
static void Bind(std::string name, const AttributeValue &value)
Iterate over the set of GlobalValues until a matching name is found and then set its value with Globa...
static bool BindFailSafe(std::string name, const AttributeValue &value)
Iterate over the set of GlobalValues until a matching name is found and then set its value with Globa...
static Iterator Begin(void)
The Begin iterator.
bool TraceConnectWithoutContext(std::string name, const CallbackBase &cb)
Connect a TraceSource to a Callback without a context.
bool TraceDisconnectWithoutContext(std::string name, const CallbackBase &cb)
Disconnect from a TraceSource a Callback previously connected without a context.
bool SetAttributeFailSafe(std::string name, const AttributeValue &value)
Set a single attribute without raising errors.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
void GetAttribute(std::string name, AttributeValue &value) const
Get the value of an attribute, raising fatal errors if unsuccessful.
A base class which provides memory management and object aggregation.
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
AttributeChecker implementation for ObjectPtrContainerValue.
Container for a set of ns3::Object pointers.
Iterator Begin(void) const
Get an iterator to the first Object.
std::map< std::size_t, Ptr< Object > >::const_iterator Iterator
Iterator type for traversing this container.
Iterator End(void) const
Get an iterator to the past-the-end Object.
AttributeChecker implementation for PointerValue.
Hold objects of type Ptr<T>.
static ConfigImpl * Get(void)
Get a pointer to the singleton instance.
a unique identifier for an interface.
bool SetAttributeInitialValue(std::size_t i, Ptr< const AttributeValue > initialValue)
Set the initial value of an Attribute.
static TypeId LookupByName(std::string name)
Get a TypeId by name.
std::size_t GetAttributeN(void) const
Get the number of attributes.
static uint16_t GetRegisteredN(void)
Get the number of registered TypeIds.
struct TypeId::AttributeInformation GetAttribute(std::size_t i) const
Get Attribute information by index.
static TypeId GetRegistered(uint16_t i)
Get a TypeId by index.
TypeId GetParent(void) const
Get the parent of this TypeId.
bool LookupAttributeByName(std::string name, struct AttributeInformation *info) const
Find an Attribute by name, retrieving the associated AttributeInformation.
static bool LookupByNameFailSafe(std::string name, TypeId *tid)
Get a TypeId by name.
Declaration of the various ns3::Config functions and classes.
ns3::GlobalValue declaration.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
void SetGlobal(std::string name, const AttributeValue &value)
bool SetFailSafe(std::string path, const AttributeValue &value)
void Reset(void)
Reset the initial value of every attribute as well as the value of every global to what they were bef...
void SetDefault(std::string name, const AttributeValue &value)
void Disconnect(std::string path, const CallbackBase &cb)
void Connect(std::string path, const CallbackBase &cb)
MatchContainer LookupMatches(std::string path)
void DisconnectWithoutContext(std::string path, const CallbackBase &cb)
void ConnectWithoutContext(std::string path, const CallbackBase &cb)
bool ConnectFailSafe(std::string path, const CallbackBase &cb)
void UnregisterRootNamespaceObject(Ptr< Object > obj)
Ptr< Object > GetRootNamespaceObject(uint32_t i)
bool SetGlobalFailSafe(std::string name, const AttributeValue &value)
void Set(std::string path, const AttributeValue &value)
void RegisterRootNamespaceObject(Ptr< Object > obj)
std::size_t GetRootNamespaceObjectN(void)
bool SetDefaultFailSafe(std::string fullName, const AttributeValue &value)
bool ConnectWithoutContextFailSafe(std::string path, const CallbackBase &cb)
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
Declaration of class ns3::Names.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
U * PeekPointer(const Ptr< U > &p)
ns3::ObjectPtrContainerValue attribute value declarations and template implementations.
ns3::Object class declaration, which is the root of the Object hierarchy and Aggregation.
ns3::PointerValue attribute value declarations and template implementations.
ns3::Singleton declaration and template implementation.