From 976f16c4d9b7000a37b06690aca726e2a61fa82c Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Thu, 3 Jan 2008 08:34:31 +0100 Subject: [PATCH] get rid of MakeInterfaceId --- src/common/error-model.cc | 9 ++++-- src/core/component-manager.cc | 15 ++++++--- src/core/object.cc | 28 +++++------------ src/core/object.h | 31 ++++++------------- src/internet-node/arp-l3-protocol.cc | 3 +- src/internet-node/ipv4-l3-protocol.cc | 3 +- src/internet-node/ipv4-l4-demux.cc | 3 +- src/mobility/hierarchical-mobility-model.cc | 3 +- src/mobility/mobility-model-notifier.cc | 3 +- src/mobility/mobility-model.cc | 3 +- src/mobility/random-position.cc | 3 +- src/mobility/static-speed-mobility-model.cc | 3 +- src/node/channel.cc | 3 +- src/node/ipv4.cc | 3 +- src/node/net-device.cc | 3 +- src/node/node.cc | 3 +- src/node/packet-socket-factory.cc | 4 +-- src/node/queue.cc | 3 +- src/node/socket-factory.cc | 3 +- src/node/udp.cc | 3 +- .../global-routing/global-router-interface.cc | 3 +- src/routing/olsr/olsr-agent.cc | 3 +- 22 files changed, 70 insertions(+), 68 deletions(-) diff --git a/src/common/error-model.cc b/src/common/error-model.cc index 8aaf6faad..16f3768b7 100644 --- a/src/common/error-model.cc +++ b/src/common/error-model.cc @@ -39,7 +39,8 @@ static ClassIdDefaultValue g_classIdErrorModelDefaultValue ("ErrorModel", InterfaceId ErrorModel::iid (void) { - static InterfaceId iid = MakeInterfaceId ("ErrorModel", Object::iid ()); + static InterfaceId iid = InterfaceId ("ErrorModel") + .SetParent (); return iid; } @@ -125,7 +126,8 @@ static EnumDefaultValue InterfaceId RateErrorModel::iid (void) { - static InterfaceId iid = MakeInterfaceId ("RateErrorModel", ErrorModel::iid ()); + static InterfaceId iid = InterfaceId ("RateErrorModel") + .SetParent (); return iid; } @@ -246,7 +248,8 @@ const ClassId ListErrorModel::cid = InterfaceId ListErrorModel::iid (void) { - static InterfaceId iid = MakeInterfaceId ("ListErrorModel", ErrorModel::iid ()); + static InterfaceId iid = InterfaceId ("ListErrorModel") + .SetParent (); return iid; } diff --git a/src/core/component-manager.cc b/src/core/component-manager.cc index 9e81dfe36..b939a0919 100644 --- a/src/core/component-manager.cc +++ b/src/core/component-manager.cc @@ -235,7 +235,8 @@ class B : public ns3::Object { public: static ns3::InterfaceId iid (void) { - static ns3::InterfaceId iid = ns3::MakeInterfaceId ("B", Object::iid ()); + static ns3::InterfaceId iid = ns3::InterfaceId ("B") + .SetParent (); return iid; } @@ -254,7 +255,8 @@ public: static const ns3::ClassId cidOneUi32; static const ns3::ClassId cidOther; static ns3::InterfaceId iid (void) { - static ns3::InterfaceId iid = ns3::MakeInterfaceId ("A", Object::iid ()); + static ns3::InterfaceId iid = ns3::InterfaceId ("A") + .SetParent (); return iid; } @@ -308,7 +310,8 @@ class X : public A { public: static ns3::InterfaceId iid (void) { - static ns3::InterfaceId iid = ns3::MakeInterfaceId ("X", A::iid ()); + static ns3::InterfaceId iid = ns3::InterfaceId ("X") + .SetParent (); return iid; } @@ -317,7 +320,8 @@ class C : public X { public: static ns3::InterfaceId iid (void) { - static ns3::InterfaceId iid = ns3::MakeInterfaceId ("C", X::iid ()); + static ns3::InterfaceId iid = ns3::InterfaceId ("C") + .SetParent (); return iid; } }; @@ -325,7 +329,8 @@ class D : public C { public: static ns3::InterfaceId iid (void) { - static ns3::InterfaceId iid = ns3::MakeInterfaceId ("D", C::iid ()); + static ns3::InterfaceId iid = ns3::InterfaceId ("D") + .SetParent (); return iid; } static const ns3::ClassId cid; diff --git a/src/core/object.cc b/src/core/object.cc index 6a85acf89..6ea563dcb 100644 --- a/src/core/object.cc +++ b/src/core/object.cc @@ -303,34 +303,22 @@ bool operator != (InterfaceId a, InterfaceId b) return a.m_iid != b.m_iid; } -InterfaceId -MakeInterfaceId (std::string name, InterfaceId parent) -{ - uint16_t uid = Singleton::Get ()->AllocateUid (name); - NS_ASSERT (uid != 0); - Singleton::Get ()->SetParent (uid, parent.m_iid); - return InterfaceId (uid); -} - -InterfaceId -MakeObjectInterfaceId (void) -{ - uint16_t uid = Singleton::Get ()->AllocateUid ("Object"); - NS_ASSERT (uid == 1); - Singleton::Get ()->SetParent (uid, uid); - return InterfaceId (uid); -} - - /********************************************************************* * The Object implementation *********************************************************************/ +static InterfaceId +GetObjectIid (void) +{ + InterfaceId iid = InterfaceId ("Object"); + iid.SetParent (iid); + return iid; +} InterfaceId Object::iid (void) { - static InterfaceId iid = MakeObjectInterfaceId (); + static InterfaceId iid = GetObjectIid (); return iid; } diff --git a/src/core/object.h b/src/core/object.h index b40a58ca3..a27fcf573 100644 --- a/src/core/object.h +++ b/src/core/object.h @@ -37,10 +37,6 @@ class Object; /** * \brief a unique identifier for an interface. * - * Instances of this class can be created only through - * calls to ns3::MakeInterfaceId. - * - * Note: This class is quite similar to COM's UUIDs. */ class InterfaceId { @@ -56,8 +52,7 @@ public: static InterfaceId LookupByName (std::string name); /** * \param iid a unique id - * \returns the parent of the requested id, as registered - * by ns3::MakeInterfaceId. + * \returns the parent of the requested id * * This method cannot fail: it will crash if the input * id is not a valid interface id. @@ -72,6 +67,9 @@ public: InterfaceId (std::string); InterfaceId SetParent (InterfaceId iid); + template + InterfaceId SetParent (void); + template InterfaceId AddConstructor (void); template @@ -100,8 +98,6 @@ public: ~InterfaceId (); private: - friend InterfaceId MakeInterfaceId (std::string name, InterfaceId parent); - friend InterfaceId MakeObjectInterfaceId (void); friend bool operator == (InterfaceId a, InterfaceId b); friend bool operator != (InterfaceId a, InterfaceId b); @@ -112,19 +108,6 @@ private: uint16_t m_iid; }; -/** - * \param name of the new InterfaceId to create. - * \param parent the "parent" of the InterfaceId to create. - * \returns a new InterfaceId - * \relates InterfaceId - * - * Every InterfaceId is a child of another InterfaceId. The - * top-most InterfaceId is Object::iid and its parent is - * itself. - */ -InterfaceId -MakeInterfaceId (std::string name, InterfaceId parent); - /** * \brief a base class which provides memory management and object aggregation * @@ -282,6 +265,12 @@ Ptr CreateObject (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7); namespace ns3 { +template +InterfaceId +InterfaceId::SetParent (void) +{ + return SetParent (T::iid ()); +} template InterfaceId diff --git a/src/internet-node/arp-l3-protocol.cc b/src/internet-node/arp-l3-protocol.cc index ff7ec65c2..c34233f73 100644 --- a/src/internet-node/arp-l3-protocol.cc +++ b/src/internet-node/arp-l3-protocol.cc @@ -38,7 +38,8 @@ const uint16_t ArpL3Protocol::PROT_NUMBER = 0x0806; InterfaceId ArpL3Protocol::iid (void) { - static InterfaceId iid = MakeInterfaceId ("ArpL3Protocol", Object::iid ()); + static InterfaceId iid = InterfaceId ("ArpL3Protocol") + .SetParent (); return iid; } diff --git a/src/internet-node/ipv4-l3-protocol.cc b/src/internet-node/ipv4-l3-protocol.cc index f4e58215e..91e004160 100644 --- a/src/internet-node/ipv4-l3-protocol.cc +++ b/src/internet-node/ipv4-l3-protocol.cc @@ -45,7 +45,8 @@ const uint16_t Ipv4L3Protocol::PROT_NUMBER = 0x0800; InterfaceId Ipv4L3Protocol::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Ipv4L3Protocol", Object::iid ()); + static InterfaceId iid = InterfaceId ("Ipv4L3Protocol") + .SetParent (); return iid; } diff --git a/src/internet-node/ipv4-l4-demux.cc b/src/internet-node/ipv4-l4-demux.cc index 92cf166ae..a4ae9beaa 100644 --- a/src/internet-node/ipv4-l4-demux.cc +++ b/src/internet-node/ipv4-l4-demux.cc @@ -61,7 +61,8 @@ Ipv4L4ProtocolTraceContextElement::GetTypeName (void) const InterfaceId Ipv4L4Demux::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Ipv4L4Demux", Object::iid ()); + static InterfaceId iid = InterfaceId ("Ipv4L4Demux") + .SetParent (); return iid; } diff --git a/src/mobility/hierarchical-mobility-model.cc b/src/mobility/hierarchical-mobility-model.cc index c97f4bdd6..d0d3f19ad 100644 --- a/src/mobility/hierarchical-mobility-model.cc +++ b/src/mobility/hierarchical-mobility-model.cc @@ -25,7 +25,8 @@ namespace ns3 { InterfaceId HierarchicalMobilityModel::iid (void) { - static InterfaceId iid = MakeInterfaceId ("HierarchicalMobilityModel", MobilityModel::iid ()); + static InterfaceId iid = InterfaceId ("HierarchicalMobilityModel") + .SetParent (); return iid; } diff --git a/src/mobility/mobility-model-notifier.cc b/src/mobility/mobility-model-notifier.cc index f95fb1216..106896dd6 100644 --- a/src/mobility/mobility-model-notifier.cc +++ b/src/mobility/mobility-model-notifier.cc @@ -29,7 +29,8 @@ const ClassId MobilityModelNotifier::cid = InterfaceId MobilityModelNotifier::iid (void) { - static InterfaceId iid = MakeInterfaceId ("MobilityModelNotifier", Object::iid ()); + static InterfaceId iid = InterfaceId ("MobilityModelNotifier") + .SetParent (); return iid; } diff --git a/src/mobility/mobility-model.cc b/src/mobility/mobility-model.cc index 32110f81e..acf27bce4 100644 --- a/src/mobility/mobility-model.cc +++ b/src/mobility/mobility-model.cc @@ -26,7 +26,8 @@ namespace ns3 { InterfaceId MobilityModel::iid (void) { - static InterfaceId iid = MakeInterfaceId ("MobilityModel", Object::iid ()); + static InterfaceId iid = InterfaceId ("MobilityModel") + .SetParent (); return iid; } diff --git a/src/mobility/random-position.cc b/src/mobility/random-position.cc index a3b55c7e1..80bab1572 100644 --- a/src/mobility/random-position.cc +++ b/src/mobility/random-position.cc @@ -61,7 +61,8 @@ g_discY ("RandomDiscPositionY", InterfaceId RandomPosition::iid (void) { - static InterfaceId iid = MakeInterfaceId ("RandomPosition", Object::iid ()); + static InterfaceId iid = InterfaceId ("RandomPosition") + .SetParent (); return iid; } diff --git a/src/mobility/static-speed-mobility-model.cc b/src/mobility/static-speed-mobility-model.cc index f758ea430..002f6af4d 100644 --- a/src/mobility/static-speed-mobility-model.cc +++ b/src/mobility/static-speed-mobility-model.cc @@ -27,7 +27,8 @@ const ClassId StaticSpeedMobilityModel::cid = StaticSpeedMobilityModel::iid ()); InterfaceId StaticSpeedMobilityModel::iid (void) { - static InterfaceId iid = MakeInterfaceId ("StaticSpeedMobilityModel", MobilityModel::iid ()); + static InterfaceId iid = InterfaceId ("StaticSpeedMobilityModel") + .SetParent (); return iid; } diff --git a/src/node/channel.cc b/src/node/channel.cc index df73fa768..b931667bd 100644 --- a/src/node/channel.cc +++ b/src/node/channel.cc @@ -27,7 +27,8 @@ namespace ns3 { InterfaceId Channel::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Channel", Object::iid ()); + static InterfaceId iid = InterfaceId ("Channel") + .SetParent (); return iid; } diff --git a/src/node/ipv4.cc b/src/node/ipv4.cc index d3dd8b25c..76908dda4 100644 --- a/src/node/ipv4.cc +++ b/src/node/ipv4.cc @@ -28,7 +28,8 @@ namespace ns3 { InterfaceId Ipv4::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Ipv4", Object::iid ()); + static InterfaceId iid = InterfaceId ("Ipv4") + .SetParent (); return iid; } diff --git a/src/node/net-device.cc b/src/node/net-device.cc index 9f639360c..1e9e2adbf 100644 --- a/src/node/net-device.cc +++ b/src/node/net-device.cc @@ -35,7 +35,8 @@ namespace ns3 { InterfaceId NetDevice::iid (void) { - static InterfaceId iid = MakeInterfaceId ("NetDevice", Object::iid ()); + static InterfaceId iid = InterfaceId ("NetDevice") + .SetParent (); return iid; } diff --git a/src/node/node.cc b/src/node/node.cc index 03d6b08d1..b8fd96227 100644 --- a/src/node/node.cc +++ b/src/node/node.cc @@ -32,7 +32,8 @@ namespace ns3{ InterfaceId Node::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Node", Object::iid ()); + static InterfaceId iid = InterfaceId ("Node") + .SetParent (); return iid; } diff --git a/src/node/packet-socket-factory.cc b/src/node/packet-socket-factory.cc index 998de2c34..6a088c33a 100644 --- a/src/node/packet-socket-factory.cc +++ b/src/node/packet-socket-factory.cc @@ -27,8 +27,8 @@ namespace ns3 { InterfaceId PacketSocketFactory::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Packet", - SocketFactory::iid ()); + static InterfaceId iid = InterfaceId ("Packet") + .SetParent (); return iid; } diff --git a/src/node/queue.cc b/src/node/queue.cc index 8e463a6fc..2b69abee2 100644 --- a/src/node/queue.cc +++ b/src/node/queue.cc @@ -99,7 +99,8 @@ QueueTraceType::Print (std::ostream &os) const InterfaceId Queue::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Queue", Object::iid ()); + static InterfaceId iid = InterfaceId ("Queue") + .SetParent (); return iid; } diff --git a/src/node/socket-factory.cc b/src/node/socket-factory.cc index 6c8ad867f..537153f33 100644 --- a/src/node/socket-factory.cc +++ b/src/node/socket-factory.cc @@ -24,7 +24,8 @@ namespace ns3 { InterfaceId SocketFactory::iid (void) { - static InterfaceId iid = MakeInterfaceId ("SocketFactory", Object::iid ()); + static InterfaceId iid = InterfaceId ("SocketFactory") + .SetParent (); return iid; } diff --git a/src/node/udp.cc b/src/node/udp.cc index c43861963..5d58849be 100644 --- a/src/node/udp.cc +++ b/src/node/udp.cc @@ -24,7 +24,8 @@ namespace ns3 { InterfaceId Udp::iid (void) { - static InterfaceId iid = MakeInterfaceId ("Udp", SocketFactory::iid ()); + static InterfaceId iid = InterfaceId ("Udp") + .SetParent (); return iid; } diff --git a/src/routing/global-routing/global-router-interface.cc b/src/routing/global-routing/global-router-interface.cc index 11dd8375c..9e9806096 100644 --- a/src/routing/global-routing/global-router-interface.cc +++ b/src/routing/global-routing/global-router-interface.cc @@ -434,7 +434,8 @@ std::ostream& operator<< (std::ostream& os, GlobalRoutingLSA& lsa) InterfaceId GlobalRouter::iid (void) { - static InterfaceId iid = MakeInterfaceId ("GlobalRouter", Object::iid ()); + static InterfaceId iid = InterfaceId ("GlobalRouter") + .SetParent (); return iid; } diff --git a/src/routing/olsr/olsr-agent.cc b/src/routing/olsr/olsr-agent.cc index e62285b99..ad710bda3 100644 --- a/src/routing/olsr/olsr-agent.cc +++ b/src/routing/olsr/olsr-agent.cc @@ -29,7 +29,8 @@ const ClassId Agent::cid = MakeClassId< AgentImpl, Ptr > ("OlsrAgent", Age InterfaceId Agent::iid (void) { - static InterfaceId iid = MakeInterfaceId ("OlsrAgent", Object::iid ()); + static InterfaceId iid = InterfaceId ("OlsrAgent") + .SetParent (); return iid; }