A Discrete-Event Network Simulator
API
attribute-iterator.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 as
5  * published by the Free Software Foundation;
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  *
16  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
17  */
18 
19 #ifndef ATTRIBUTE_ITERATOR_H
20 #define ATTRIBUTE_ITERATOR_H
21 
22 #include "ns3/ptr.h"
23 #include "ns3/object.h"
24 #include "ns3/object-ptr-container.h"
25 #include <vector>
26 
27 namespace ns3 {
28 
36 {
37 public:
39  virtual ~AttributeIterator ();
40 
44  void Iterate (void);
45 protected:
50  std::string GetCurrentPath (void) const;
51 private:
60  virtual void DoVisitAttribute (Ptr<Object> object, std::string name) = 0;
65  virtual void DoStartVisitObject (Ptr<Object> object);
70  virtual void DoEndVisitObject (void);
79  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
83  virtual void DoEndVisitPointerAttribute (void);
94  virtual void DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectPtrContainerValue &vector);
98  virtual void DoEndVisitArrayAttribute (void);
105  virtual void DoStartVisitArrayItem (const ObjectPtrContainerValue &vector, uint32_t index, Ptr<Object> item);
109  virtual void DoEndVisitArrayItem (void);
110 
115  void DoIterate (Ptr<Object> object);
121  bool IsExamined (Ptr<const Object> object);
127  std::string GetCurrentPath (std::string attr) const;
128 
134  void VisitAttribute (Ptr<Object> object, std::string name);
139  void StartVisitObject (Ptr<Object> object);
143  void EndVisitObject (void);
152  void StartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
156  void EndVisitPointerAttribute (void);
167  void StartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectPtrContainerValue &vector);
171  void EndVisitArrayAttribute (void);
178  void StartVisitArrayItem (const ObjectPtrContainerValue &vector, uint32_t index, Ptr<Object> item);
182  void EndVisitArrayItem (void);
183 
184 
185  std::vector<Ptr<Object> > m_examined;
186  std::vector<std::string> m_currentPath;
187 };
188 
189 } // namespace ns3
190 
191 #endif /* ATTRIBUTE_ITERATOR_H */
ns3::AttributeIterator::DoEndVisitArrayItem
virtual void DoEndVisitArrayItem(void)
End the visit to the array item.
Definition: attribute-iterator.cc:123
ns3::AttributeIterator::DoIterate
void DoIterate(Ptr< Object > object)
Perform the iteration.
Definition: attribute-iterator.cc:193
ns3::AttributeIterator::EndVisitPointerAttribute
void EndVisitPointerAttribute(void)
End the visit to the attribute of type ns3::PointerValue.
Definition: attribute-iterator.cc:155
ns3::AttributeIterator::StartVisitArrayAttribute
void StartVisitArrayAttribute(Ptr< Object > object, std::string name, const ObjectPtrContainerValue &vector)
Visit the attribute of type ns3::ObjectVectorValue, with the provided name, found on the object point...
Definition: attribute-iterator.cc:162
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::AttributeIterator::EndVisitArrayAttribute
void EndVisitArrayAttribute(void)
End the visit to the attribute of type ns3::ObjectVectorValue.
Definition: attribute-iterator.cc:168
ns3::AttributeIterator::VisitAttribute
void VisitAttribute(Ptr< Object > object, std::string name)
Visit attribute to perform a config store operation on it.
Definition: attribute-iterator.cc:128
ns3::AttributeIterator::DoEndVisitObject
virtual void DoEndVisitObject(void)
This method is called to end the process of visiting the currently visited object.
Definition: attribute-iterator.cc:99
ns3::AttributeIterator::IsExamined
bool IsExamined(Ptr< const Object > object)
Check if this object has already been examined.
Definition: attribute-iterator.cc:55
ns3::AttributeIterator::StartVisitPointerAttribute
void StartVisitPointerAttribute(Ptr< Object > object, std::string name, Ptr< Object > value)
Visit the attribute of type ns3::PointerValue, with the provided name, found on the object pointed to...
Definition: attribute-iterator.cc:148
ns3::AttributeIterator::m_currentPath
std::vector< std::string > m_currentPath
current attribute path
Definition: attribute-iterator.h:186
ns3::AttributeIterator::m_examined
std::vector< Ptr< Object > > m_examined
list of attributes examined
Definition: attribute-iterator.h:185
ns3::ObjectPtrContainerValue
Container for a set of ns3::Object pointers.
Definition: object-ptr-container.h:46
ns3::AttributeIterator::DoStartVisitPointerAttribute
virtual void DoStartVisitPointerAttribute(Ptr< Object > object, std::string name, Ptr< Object > value)
Visit the attribute of type ns3::PointerValue, with the provided name, found on the object pointed to...
Definition: attribute-iterator.cc:103
ns3::AttributeIterator::GetCurrentPath
std::string GetCurrentPath(void) const
Get the current attribute path.
Definition: attribute-iterator.cc:84
ns3::AttributeIterator::Iterate
void Iterate(void)
Start the process of iterating all objects from the root namespace object.
Definition: attribute-iterator.cc:41
ns3::AttributeIterator::AttributeIterator
AttributeIterator()
Definition: attribute-iterator.cc:32
ns3::AttributeIterator::EndVisitArrayItem
void EndVisitArrayItem(void)
End the visit to the array item.
Definition: attribute-iterator.cc:184
ns3::Ptr< Object >
ns3::AttributeIterator::StartVisitArrayItem
void StartVisitArrayItem(const ObjectPtrContainerValue &vector, uint32_t index, Ptr< Object > item)
Start to visit the object found in the input array at the provided index.
Definition: attribute-iterator.cc:175
ns3::AttributeIterator::DoEndVisitArrayAttribute
virtual void DoEndVisitArrayAttribute(void)
End the visit to the attribute of type ns3::ObjectVectorValue.
Definition: attribute-iterator.cc:115
ns3::AttributeIterator::DoStartVisitObject
virtual void DoStartVisitObject(Ptr< Object > object)
This method is called to start the process of visiting the input object.
Definition: attribute-iterator.cc:95
ns3::AttributeIterator::DoStartVisitArrayAttribute
virtual void DoStartVisitArrayAttribute(Ptr< Object > object, std::string name, const ObjectPtrContainerValue &vector)
Visit the attribute of type ns3::ObjectVectorValue, with the provided name, found on the object point...
Definition: attribute-iterator.cc:111
ns3::AttributeIterator
Iterator to iterate on the values of attributes of an ns3::Object.
Definition: attribute-iterator.h:36
ns3::AttributeIterator::StartVisitObject
void StartVisitObject(Ptr< Object > object)
Start to visit an object to visit its attributes.
Definition: attribute-iterator.cc:136
ns3::AttributeIterator::DoStartVisitArrayItem
virtual void DoStartVisitArrayItem(const ObjectPtrContainerValue &vector, uint32_t index, Ptr< Object > item)
Start to visit the object found in the input array at the provided index.
Definition: attribute-iterator.cc:119
ns3::AttributeIterator::DoVisitAttribute
virtual void DoVisitAttribute(Ptr< Object > object, std::string name)=0
This method visits and performs a config-store action (such as saving to a text file) on the attribut...
ns3::AttributeIterator::~AttributeIterator
virtual ~AttributeIterator()
Definition: attribute-iterator.cc:36
ns3::AttributeIterator::EndVisitObject
void EndVisitObject(void)
End the visit to the object.
Definition: attribute-iterator.cc:142
ns3::AttributeIterator::DoEndVisitPointerAttribute
virtual void DoEndVisitPointerAttribute(void)
End the visit to the attribute of type ns3::PointerValue.
Definition: attribute-iterator.cc:107