48 const std::vector<std::string> &contexts,
50 : m_objects (objects),
51 m_contexts (contexts),
130 for (uint32_t i = 0; i <
m_objects.size (); ++i)
134 ok |=
object->TraceConnect (name, ctx, cb);
163 for (uint32_t i = 0; i <
m_objects.size (); ++i)
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)
This function will attempt to find all trace sources which match the input path and will then connect...
bool SetFailSafe(std::string path, const AttributeValue &value)
This function will attempt to find attributes which match the input path and will then set their valu...
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)
This function will attempt to find all trace sources which match the input path and will then connect...
void RegisterRootNamespaceObject(Ptr< Object > obj)
MatchContainer LookupMatches(std::string path)
hold a set of objects which match a specific search string.
std::vector< Ptr< Object > >::const_iterator Iterator
Const iterator over the objects in this container.
bool SetFailSafe(std::string name, const AttributeValue &value)
Set the specified attribute value to all the objects stored in this container.
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)
Connect the specified sink to all the objects stored in this container.
std::size_t GetN(void) const
bool ConnectWithoutContextFailSafe(std::string name, const CallbackBase &cb)
Connect the specified sink to all the objects stored in this container.
std::string m_path
The path used to perform the object matching.
void ConnectWithoutContext(std::string name, const CallbackBase &cb)
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)
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)
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)
#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.
bool SetFailSafe(std::string path, const AttributeValue &value)
This function will attempt to find attributes which match the input path and will then set their valu...
bool ConnectFailSafe(std::string path, const CallbackBase &cb)
This function will attempt to find all trace sources which match the input path and will then connect...
bool ConnectWithoutContextFailSafe(std::string path, const CallbackBase &cb)
This function will attempt to find all trace sources which match the input path and will then connect...
Every class exported by the ns3 library is enclosed in the ns3 namespace.
double max(double x, double y)
double min(double x, double y)
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.