48 const std::vector<std::string> &contexts,
50 : m_objects (objects),
51 m_contexts (contexts),
108 for (uint32_t i = 0; i <
m_objects.size (); ++i)
112 object->TraceConnect (name, ctx, cb);
131 for (uint32_t i = 0; i <
m_objects.size (); ++i)
135 object->TraceDisconnect (name, ctx, cb);
168 bool Matches (uint32_t i)
const;
184 : m_element (element)
197 std::string::size_type tmp;
199 if (tmp != std::string::npos)
201 std::string left =
m_element.substr (0, tmp-0);
218 std::string::size_type leftBracket =
m_element.find (
"[");
219 std::string::size_type rightBracket =
m_element.find (
"]");
220 std::string::size_type dash =
m_element.find (
"-");
221 if (leftBracket == 0 && rightBracket ==
m_element.size () - 1 &&
222 dash > leftBracket && dash < rightBracket)
224 std::string lowerBound =
m_element.substr (leftBracket + 1, dash - (leftBracket + 1));
225 std::string upperBound =
m_element.substr (dash + 1, rightBracket - (dash + 1));
230 i >= min && i <= max)
256 std::istringstream iss;
259 return !iss.bad () && !iss.fail ();
346 std::string::size_type tmp =
m_path.find (
"/");
352 tmp =
m_path.find_last_of (
"/");
353 if (tmp != (
m_path.size () - 1))
373 std::string fullPath =
"/";
376 fullPath += *i +
"/";
395 std::string::size_type next = path.find (
"/", 1);
397 if (next == std::string::npos)
413 std::string item = path.substr (1, next-1);
414 std::string pathLeft = path.substr (next, path.size ()-next);
425 std::string::size_type offset = path.find (
"/Names");
441 Ptr<Object> namedObject = Names::Find<Object> (root, item);
444 NS_LOG_DEBUG (
"Name system resolved item = " << item <<
" to " << namedObject);
462 std::string::size_type dollarPos = item.find (
"$");
466 std::string tidString = item.substr (1, item.size () - 1);
483 TypeId nextTid = root->GetInstanceTypeId ();
484 bool foundMatch =
false;
494 if (info.name != item && item !=
"*")
504 root->GetAttribute (info.name, ptr);
521 if (vectorChecker != 0)
526 root->GetAttribute (info.name, vector);
536 }
while (nextTid != tid);
552 std::string::size_type next = path.find (
"/", 1);
553 if (next == std::string::npos)
557 std::string item = path.substr (1, next-1);
558 std::string pathLeft = path.substr (next, path.size ()-next);
562 for (it = container.
Begin (); it != container.
End (); ++it)
564 if (matcher.
Matches ((*it).first))
566 std::ostringstream oss;
610 void ParsePath (std::string path, std::string *root, std::string *leaf)
const;
613 typedef std::vector<Ptr<Object> >
Roots;
624 std::string::size_type slash = path.find_last_of (
"/");
626 *root = path.substr (0, slash);
627 *leaf = path.substr (slash+1, path.size ()-(slash+1));
636 std::string root, leaf;
639 container.
Set (leaf, value);
645 std::string root, leaf;
654 std::string root, leaf;
664 std::string root, leaf;
674 std::string root, leaf;
684 class LookupMatchesResolver :
public Resolver
687 LookupMatchesResolver (std::string path)
690 virtual void DoOne (
Ptr<Object> object, std::string path) {
691 m_objects.push_back (
object);
692 m_contexts.push_back (path);
694 std::vector<Ptr<Object> > m_objects;
695 std::vector<std::string> m_contexts;
696 } resolver = LookupMatchesResolver (path);
697 for (Roots::const_iterator i =
m_roots.begin (); i !=
m_roots.end (); i++)
699 resolver.Resolve (*i);
707 resolver.Resolve (0);
765 (*i)->ResetInitialValue ();
785 std::string::size_type pos = fullName.rfind (
"::");
786 if (pos == std::string::npos)
790 std::string tidName = fullName.substr (0, pos);
791 std::string paramName = fullName.substr (pos+2, fullName.size () - (pos+2));
801 if (tmp.
name == paramName)
uint32_t GetAttributeN(void) const
Get the number of attributes.
uint32_t GetRootNamespaceObjectN(void) const
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
ns3::Singleton declaration and template implementation.
bool SetDefaultFailSafe(std::string fullName, const AttributeValue &value)
void DisconnectWithoutContext(std::string path, const CallbackBase &cb)
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
void Set(std::string path, const AttributeValue &value)
bool SetGlobalFailSafe(std::string name, const AttributeValue &value)
void UnregisterRootNamespaceObject(Ptr< Object > obj)
Hold a value for an Attribute.
void DoResolve(std::string path, Ptr< Object > root)
Parse the next element in the Config path.
std::string m_element
The Config path element.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
U * PeekPointer(const Ptr< U > &p)
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
TypeId GetParent(void) const
Get the parent of this TypeId.
Vector::const_iterator Iterator
Iterator type for the list of all global values.
Base class for Callback class.
std::string GetMatchedPath(uint32_t i) const
void Disconnect(std::string name, const CallbackBase &cb)
void DisconnectWithoutContext(std::string path, const CallbackBase &cb)
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
static bool LookupByNameFailSafe(std::string name, TypeId *tid)
Get a TypeId by name.
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
std::vector< Ptr< Object > > Roots
Container type to hold the root Config path tokens.
Declaration of the various ns3::Config functions and classes.
static ConfigImpl * Get(void)
Get a pointer to the singleton instance.
void RegisterRootNamespaceObject(Ptr< Object > obj)
std::vector< std::string > m_workStack
Current list of path tokens.
std::map< uint32_t, Ptr< Object > >::const_iterator Iterator
Iterator type for traversing this container.
void UnregisterRootNamespaceObject(Ptr< Object > obj)
MatchContainer::Iterator End(void) const
virtual void DoOne(Ptr< Object > object, std::string path)=0
Handle one found object.
void ConnectWithoutContext(std::string path, const CallbackBase &cb)
Config::MatchContainer LookupMatches(std::string path)
void ConnectWithoutContext(std::string name, const CallbackBase &cb)
ObjectPtrContainer attribute value declarations and template implementations.
static uint32_t GetRegisteredN(void)
Get the number of registered TypeIds.
static Iterator Begin(void)
The Begin iterator.
Ptr< Object > GetRootNamespaceObject(uint32_t i)
void Resolve(Ptr< Object > root)
Parse the stored Config path into an object reference, beginning at the indicated root object...
AttributeChecker implementation for ObjectPtrContainerValue.
bool TraceDisconnectWithoutContext(std::string name, const CallbackBase &cb)
Disconnect from a TraceSource a Callback previously connected without a context.
static TypeId GetRegistered(uint32_t i)
Get a TypeId by index.
void ConnectWithoutContext(std::string path, const CallbackBase &cb)
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...
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.
uint32_t GetRootNamespaceObjectN(void)
void Connect(std::string path, const CallbackBase &cb)
void Connect(std::string path, const CallbackBase &cb)
void DoResolveOne(Ptr< Object > object)
Handle one object found on the path.
uint32_t GetN(void) const
void Disconnect(std::string path, const CallbackBase &cb)
void DoArrayResolve(std::string path, const ObjectPtrContainerValue &vector)
Parse an index on the Config path.
std::string m_path
The path used to perform the object matching.
bool TraceConnectWithoutContext(std::string name, const CallbackBase &cb)
Connect a TraceSource to a Callback without a context.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Hold objects of type Ptr.
Abstract class to parse Config paths into object references.
Helper to test if an array entry matches a config path specification.
Ptr< Object > Get(uint32_t i) const
Iterator Begin(void) const
Get an iterator to the first Object.
ns3::GlobalValue declaration.
hold a set of objects which match a specific search string.
std::vector< Ptr< Object > > m_objects
The list of objects in this container.
std::string m_path
The Config path.
void Connect(std::string name, const CallbackBase &cb)
void Reset(void)
Reset the initial value of every attribute as well as the value of every global to what they were bef...
bool SetAttributeInitialValue(uint32_t i, Ptr< const AttributeValue > initialValue)
Set the initial value of an Attribute.
Config::MatchContainer LookupMatches(std::string path)
ns3::Object class declaration, which is the root of the Object hierarchy and Aggregation.
void DisconnectWithoutContext(std::string name, const CallbackBase &cb)
virtual ~Resolver()
Destructor.
AttributeChecker implementation for PointerValue.
void SetGlobal(std::string name, const AttributeValue &value)
std::vector< std::string > m_contexts
The context for each object.
static Iterator End(void)
The End iterator.
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...
void Canonicalize(void)
Ensure the Config path starts and ends with a '/'.
void RegisterRootNamespaceObject(Ptr< Object > obj)
Iterator End(void) const
Get an iterator to the past-the-end Object.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
void SetDefault(std::string name, const AttributeValue &value)
bool Matches(uint32_t i) const
Test if a specific index matches the Config Path.
void Set(std::string path, const AttributeValue &value)
Declaration of class ns3::Names.
std::vector< Ptr< Object > >::const_iterator Iterator
Const iterator over the objects in this container.
std::string GetResolvedPath(void) const
Get the current Config path.
bool StringToUint32(std::string str, uint32_t *value) const
Convert a string to an uint32_t.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
void Set(std::string name, const AttributeValue &value)
A base class which provides memory management and object aggregation.
MatchContainer::Iterator Begin(void) const
Container for a set of ns3::Object pointers.
ArrayMatcher(std::string element)
Construct from a Config path specification.
struct TypeId::AttributeInformation GetAttribute(uint32_t i) const
Get Attribute information by index.
Ptr< Object > GetRootNamespaceObject(uint32_t i) const
void Disconnect(std::string path, const CallbackBase &cb)
std::string GetPath(void) const
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Pointer attribute value declarations and template implementations.
a unique identifier for an interface.
Resolver(std::string path)
Construct from a base Config path.
Roots m_roots
The list of Config path roots.
Config system implementation class.
static TypeId LookupByName(std::string name)
Get a TypeId by name.