22 #include "building-list.h"
23 #include "ns3/simulator.h"
24 #include "ns3/object-vector.h"
25 #include "ns3/config.h"
27 #include "ns3/assert.h"
28 #include "building-list.h"
41 static TypeId GetTypeId (
void);
46 BuildingList::Iterator Begin (
void)
const;
47 BuildingList::Iterator End (
void)
const;
49 uint32_t GetNBuildings (
void);
56 static void Delete (
void);
57 std::vector<Ptr<Building> > m_buildings;
63 BuildingListPriv::GetTypeId (
void)
67 .AddAttribute (
"BuildingList",
"The list of all buildings created during the simulation.",
69 MakeObjectVectorAccessor (&BuildingListPriv::m_buildings),
70 MakeObjectVectorChecker<Building> ())
76 BuildingListPriv::Get (
void)
80 Ptr<BuildingListPriv> *
81 BuildingListPriv::DoGet (
void)
83 static Ptr<BuildingListPriv> ptr = 0;
86 ptr = CreateObject<BuildingListPriv> ();
93 BuildingListPriv::Delete (
void)
101 BuildingListPriv::BuildingListPriv ()
105 BuildingListPriv::~BuildingListPriv ()
112 for (std::vector<
Ptr<Building> >::iterator i = m_buildings.begin ();
113 i != m_buildings.end (); i++)
116 building->Dispose ();
119 m_buildings.erase (m_buildings.begin (), m_buildings.end ());
127 uint32_t index = m_buildings.size ();
128 m_buildings.push_back (building);
133 BuildingList::Iterator
134 BuildingListPriv::Begin (
void)
const
136 return m_buildings.begin ();
138 BuildingList::Iterator
139 BuildingListPriv::End (
void)
const
141 return m_buildings.end ();
144 BuildingListPriv::GetNBuildings (
void)
146 return m_buildings.size ();
150 BuildingListPriv::GetBuilding (uint32_t n)
152 NS_ASSERT_MSG (n < m_buildings.size (),
"Building index " << n <<
153 " is out of range (only have " << m_buildings.size () <<
" buildings).");
154 return m_buildings.at (n);
169 return BuildingListPriv::Get ()->Add (building);
171 BuildingList::Iterator
174 return BuildingListPriv::Get ()->Begin ();
176 BuildingList::Iterator
179 return BuildingListPriv::Get ()->End ();
184 return BuildingListPriv::Get ()->GetBuilding (n);
189 return BuildingListPriv::Get ()->GetNBuildings ();
smart pointer class similar to boost::intrusive_ptr
static uint32_t GetNBuildings(void)
static Ptr< Building > GetBuilding(uint32_t n)
#define NS_LOG_COMPONENT_DEFINE(name)
private implementation detail of the BuildingList API.
virtual void DoDispose(void)
void UnregisterRootNamespaceObject(Ptr< Object > obj)
static Iterator End(void)
#define NS_LOG_FUNCTION_NOARGS()
static Iterator Begin(void)
static void ScheduleWithContext(uint32_t context, Time const &time, MEM mem_ptr, OBJ obj)
virtual void DoDispose(void)
void RegisterRootNamespaceObject(Ptr< Object > obj)
static uint32_t Add(Ptr< Building > building)
#define NS_ASSERT_MSG(condition, message)
static EventId ScheduleDestroy(MEM mem_ptr, OBJ obj)
a base class which provides memory management and object aggregation
contain a set of ns3::Object pointers.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)