From d7e161bbd8728a51585a36c60c3dcea91ebc5243 Mon Sep 17 00:00:00 2001 From: jnin Date: Mon, 21 Mar 2011 13:02:15 +0100 Subject: [PATCH] Fix some typos and bugs on the attribute to map implementation --- src/contrib/attribute-iterator.cc | 3 +-- src/contrib/model-node-creator.cc | 38 ++++++++++++++++++++++++++++++ src/contrib/model-node-creator.h | 7 ++++++ src/core/model/object-map.h | 2 +- src/lte/examples/lena-first-sim.cc | 10 +++++--- src/lte/model/lte-enb-rrc.cc | 2 +- src/lte/model/lte-ue-net-device.cc | 2 +- 7 files changed, 56 insertions(+), 8 deletions(-) diff --git a/src/contrib/attribute-iterator.cc b/src/contrib/attribute-iterator.cc index 53d844b7e..2725ce77f 100644 --- a/src/contrib/attribute-iterator.cc +++ b/src/contrib/attribute-iterator.cc @@ -223,7 +223,7 @@ void AttributeIterator::EndVisitMapAttribute (void) { m_currentPath.pop_back (); - DoEndVisitArrayAttribute (); + DoEndVisitMapAttribute (); } void @@ -304,7 +304,6 @@ AttributeIterator::DoIterate (Ptr object) NS_LOG_DEBUG ("map attribute " << tid.GetAttributeName (i)); ObjectMapValue map; object->GetAttribute (tid.GetAttributeName (i), map); - // JNG Fix this StartVisitMapAttribute (object, tid.GetAttributeName (i), map); for (ObjectMapValue::Iterator it = map.Begin () ; it != map.End(); it++ ) { diff --git a/src/contrib/model-node-creator.cc b/src/contrib/model-node-creator.cc index 0b5a3d245..2c7a04c59 100644 --- a/src/contrib/model-node-creator.cc +++ b/src/contrib/model-node-creator.cc @@ -127,4 +127,42 @@ ModelCreator::DoEndVisitArrayItem (void) g_free (iter); m_iters.pop_back (); } + +void +ModelCreator::DoStartVisitMapAttribute (Ptr object, std::string name, const ObjectMapValue &map) +{ + ModelNode *node = new ModelNode (); + node->type = ModelNode::NODE_VECTOR; + node->object = object; + node->name = name; + Add (node); +} +void +ModelCreator::DoEndVisitMapAttribute (void) +{ + Remove (); +} +void +ModelCreator::DoStartVisitMapItem (const ObjectMapValue &map, uint32_t index, Ptr item) +{ + GtkTreeIter *parent = m_iters.back (); + GtkTreeIter *current = g_new (GtkTreeIter, 1); + ModelNode *node = new ModelNode (); + node->type = ModelNode::NODE_VECTOR_ITEM; + node->object = item; + node->index = index; + gtk_tree_store_append (m_treestore, current, parent); + gtk_tree_store_set (m_treestore, current, + COL_NODE, node, + -1); + m_iters.push_back (current); +} +void +ModelCreator::DoEndVisitMapItem (void) +{ + GtkTreeIter *iter = m_iters.back (); + g_free (iter); + m_iters.pop_back (); +} + }//end namespace ns3 diff --git a/src/contrib/model-node-creator.h b/src/contrib/model-node-creator.h index f2947797d..de0160b84 100644 --- a/src/contrib/model-node-creator.h +++ b/src/contrib/model-node-creator.h @@ -64,6 +64,13 @@ private: virtual void DoStartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr item); virtual void DoEndVisitArrayItem (void); + + virtual void DoStartVisitMapAttribute (Ptr object, std::string name, const ObjectMapValue &map); + virtual void DoEndVisitMapAttribute (void); + virtual void DoStartVisitMapItem (const ObjectMapValue &vector, uint32_t index, Ptr item); + virtual void DoEndVisitMapItem (void); + + void Add (ModelNode *node); void Remove (void); diff --git a/src/core/model/object-map.h b/src/core/model/object-map.h index 5777e3ab9..c5886d8bc 100644 --- a/src/core/model/object-map.h +++ b/src/core/model/object-map.h @@ -154,7 +154,7 @@ MakeObjectMapAccessor (U T::*memberMap) { if (k == i) { - return std::pair > ( k, (*j).second); + return std::pair > ( (*j).first, (*j).second); break; } } diff --git a/src/lte/examples/lena-first-sim.cc b/src/lte/examples/lena-first-sim.cc index f898dbae6..8db46b984 100644 --- a/src/lte/examples/lena-first-sim.cc +++ b/src/lte/examples/lena-first-sim.cc @@ -23,20 +23,20 @@ #include "ns3/network-module.h" #include "ns3/mobility-module.h" #include "ns3/lte-module.h" - +#include "ns3/gtk-config-store.h" using namespace ns3; int main (int argc, char *argv[]) { LenaHelper lena; - lena.EnableLogComponents (); + //lena.EnableLogComponents (); // Create Nodes: eNodeB and UE NodeContainer enbNodes; NodeContainer ueNodes; enbNodes.Create (1); - ueNodes.Create (1); + ueNodes.Create (4); // Install Mobility Model MobilityHelper mobility; @@ -63,6 +63,10 @@ int main (int argc, char *argv[]) Simulator::Stop (Seconds (0.005)); Simulator::Run (); + + GtkConfigStore config; + config.ConfigureAttributes (); + Simulator::Destroy (); return 0; } diff --git a/src/lte/model/lte-enb-rrc.cc b/src/lte/model/lte-enb-rrc.cc index 5e8ffb2fc..b02b0a5ac 100644 --- a/src/lte/model/lte-enb-rrc.cc +++ b/src/lte/model/lte-enb-rrc.cc @@ -119,7 +119,7 @@ void EnbRadioBearerInfo::SetRlc(Ptr rlc) * Manages all the radio bearer information possessed by the ENB RRC for a single UE * */ -class UeInfo : public Object //public SimpleRefCount +class UeInfo : public Object { public: /** diff --git a/src/lte/model/lte-ue-net-device.cc b/src/lte/model/lte-ue-net-device.cc index c5c9ff531..1a4ac238b 100644 --- a/src/lte/model/lte-ue-net-device.cc +++ b/src/lte/model/lte-ue-net-device.cc @@ -106,7 +106,7 @@ LteUeNetDevice::InitLteUeNetDevice (void) m_targetEnb = 0; SetNode (0); m_mac = CreateObject (); - m_rrc = Create (); + m_rrc = CreateObject (); m_rrc->SetLteUeCmacSapProvider (m_mac->GetLteUeCmacSapProvider ()); m_mac->SetLteUeCmacSapUser (m_rrc->GetLteUeCmacSapUser ()); m_rrc->SetLteMacSapProvider (m_mac->GetLteMacSapProvider ());