diff --git a/bindings/python/ns3_module_core.py b/bindings/python/ns3_module_core.py index e8b412dff..5f2250b16 100644 --- a/bindings/python/ns3_module_core.py +++ b/bindings/python/ns3_module_core.py @@ -199,6 +199,9 @@ def register_types_ns3_TimeStepPrecision(module): def register_types_ns3_Config(module): root_module = module.get_root() + ## config.h: ns3::Config::MatchContainer [class] + module.add_class('MatchContainer') + module.add_container('std::vector< ns3::Ptr< ns3::Object > >', 'ns3::Ptr< ns3::Object >', container_type='vector') def register_types_ns3_olsr(module): root_module = module.get_root() @@ -272,6 +275,7 @@ def register_methods(root_module): register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue']) register_Ns3UintegerValue_methods(root_module, root_module['ns3::UintegerValue']) register_Ns3TracedValue__Unsigned_int_methods(root_module, root_module['ns3::TracedValue< unsigned int >']) + register_Ns3ConfigMatchContainer_methods(root_module, root_module['ns3::Config::MatchContainer']) return def register_Ns3AttributeList_methods(root_module, cls): @@ -736,6 +740,14 @@ def register_Ns3SystemThread_methods(root_module, cls): cls.add_method('Join', 'void', []) + ## system-thread.h: void ns3::SystemThread::Shutdown() [member function] + cls.add_method('Shutdown', + 'void', + []) + ## system-thread.h: bool ns3::SystemThread::Break() [member function] + cls.add_method('Break', + 'bool', + []) return def register_Ns3SystemWallClockMs_methods(root_module, cls): @@ -1867,7 +1879,7 @@ def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls): cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase const &', 'cb')]) - ## traced-value.h: void ns3::TracedValue::Connect(ns3::CallbackBase const & cb, std::basic_string,std::allocator > path) [member function] + ## traced-value.h: void ns3::TracedValue::Connect(ns3::CallbackBase const & cb, std::string path) [member function] cls.add_method('Connect', 'void', [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')]) @@ -1875,7 +1887,7 @@ def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls): cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase const &', 'cb')]) - ## traced-value.h: void ns3::TracedValue::Disconnect(ns3::CallbackBase const & cb, std::basic_string,std::allocator > path) [member function] + ## traced-value.h: void ns3::TracedValue::Disconnect(ns3::CallbackBase const & cb, std::string path) [member function] cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase const &', 'cb'), param('std::string', 'path')]) @@ -1890,6 +1902,65 @@ def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls): is_const=True) return +def register_Ns3ConfigMatchContainer_methods(root_module, cls): + ## config.h: ns3::Config::MatchContainer::MatchContainer(ns3::Config::MatchContainer const & arg0) [copy constructor] + cls.add_constructor([param('ns3::Config::MatchContainer const &', 'arg0')]) + ## config.h: ns3::Config::MatchContainer::MatchContainer() [constructor] + cls.add_constructor([]) + ## config.h: ns3::Config::MatchContainer::MatchContainer(std::vector, std::allocator > > const & objects, std::vector > const & contexts, std::string path) [constructor] + cls.add_constructor([param('std::vector< ns3::Ptr< ns3::Object > > const &', 'objects'), param('std::vector< std::string > const &', 'contexts'), param('std::string', 'path')]) + ## config.h: __gnu_cxx::__normal_iterator*,std::vector, std::allocator > > > ns3::Config::MatchContainer::Begin() const [member function] + cls.add_method('Begin', + '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Object > const, std::vector< ns3::Ptr< ns3::Object > > >', + [], + is_const=True) + ## config.h: __gnu_cxx::__normal_iterator*,std::vector, std::allocator > > > ns3::Config::MatchContainer::End() const [member function] + cls.add_method('End', + '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Object > const, std::vector< ns3::Ptr< ns3::Object > > >', + [], + is_const=True) + ## config.h: uint32_t ns3::Config::MatchContainer::GetN() const [member function] + cls.add_method('GetN', + 'uint32_t', + [], + is_const=True) + ## config.h: ns3::Ptr ns3::Config::MatchContainer::Get(uint32_t i) const [member function] + cls.add_method('Get', + 'ns3::Ptr< ns3::Object >', + [param('uint32_t', 'i')], + is_const=True) + ## config.h: std::string ns3::Config::MatchContainer::GetMatchedPath(uint32_t i) const [member function] + cls.add_method('GetMatchedPath', + 'std::string', + [param('uint32_t', 'i')], + is_const=True) + ## config.h: std::string ns3::Config::MatchContainer::GetPath() const [member function] + cls.add_method('GetPath', + 'std::string', + [], + is_const=True) + ## config.h: void ns3::Config::MatchContainer::Set(std::string name, ns3::AttributeValue const & value) [member function] + cls.add_method('Set', + 'void', + [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')]) + ## config.h: void ns3::Config::MatchContainer::Connect(std::string name, ns3::CallbackBase const & cb) [member function] + cls.add_method('Connect', + 'void', + [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')]) + ## config.h: void ns3::Config::MatchContainer::ConnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function] + cls.add_method('ConnectWithoutContext', + 'void', + [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')]) + ## config.h: void ns3::Config::MatchContainer::Disconnect(std::string name, ns3::CallbackBase const & cb) [member function] + cls.add_method('Disconnect', + 'void', + [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')]) + ## config.h: void ns3::Config::MatchContainer::DisconnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function] + cls.add_method('DisconnectWithoutContext', + 'void', + [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')]) + return + def register_functions(root_module): module = root_module ## boolean.h: extern ns3::Ptr ns3::MakeBooleanChecker() [free function] @@ -1910,7 +1981,7 @@ def register_functions(root_module): module.add_function('TypeNameGet', 'std::string', [], - template_parameters=['long']) + template_parameters=['long long']) ## type-name.h: extern std::string ns3::TypeNameGet() [free function] module.add_function('TypeNameGet', 'std::string', @@ -1930,7 +2001,7 @@ def register_functions(root_module): module.add_function('TypeNameGet', 'std::string', [], - template_parameters=['unsigned long']) + template_parameters=['unsigned long long']) ## type-name.h: extern std::string ns3::TypeNameGet() [free function] module.add_function('TypeNameGet', 'std::string', @@ -1946,22 +2017,14 @@ def register_functions(root_module): 'std::string', [], template_parameters=['unsigned char']) + ## log.h: extern void ns3::LogComponentDisable(char const * name, ns3::LogLevel level) [free function] + module.add_function('LogComponentDisable', + 'void', + [param('char const *', 'name'), param('ns3::LogLevel', 'level')]) ## string.h: extern ns3::Ptr ns3::MakeStringChecker() [free function] module.add_function('MakeStringChecker', 'ns3::Ptr< ns3::AttributeChecker const >', []) - ## enum.h: extern ns3::Ptr ns3::MakeEnumChecker(int v1, std::string n1, int v2=0, std::string n2="", int v3=0, std::string n3="", int v4=0, std::string n4="", int v5=0, std::string n5="", int v6=0, std::string n6="", int v7=0, std::string n7="", int v8=0, std::string n8="", int v9=0, std::string n9="", int v10=0, std::string n10="", int v11=0, std::string n11="", int v12=0, std::string n12="") [free function] - module.add_function('MakeEnumChecker', - 'ns3::Ptr< ns3::AttributeChecker const >', - [param('int', 'v1'), param('std::string', 'n1'), param('int', 'v2', default_value='0'), param('std::string', 'n2', default_value='""'), param('int', 'v3', default_value='0'), param('std::string', 'n3', default_value='""'), param('int', 'v4', default_value='0'), param('std::string', 'n4', default_value='""'), param('int', 'v5', default_value='0'), param('std::string', 'n5', default_value='""'), param('int', 'v6', default_value='0'), param('std::string', 'n6', default_value='""'), param('int', 'v7', default_value='0'), param('std::string', 'n7', default_value='""'), param('int', 'v8', default_value='0'), param('std::string', 'n8', default_value='""'), param('int', 'v9', default_value='0'), param('std::string', 'n9', default_value='""'), param('int', 'v10', default_value='0'), param('std::string', 'n10', default_value='""'), param('int', 'v11', default_value='0'), param('std::string', 'n11', default_value='""'), param('int', 'v12', default_value='0'), param('std::string', 'n12', default_value='""')]) - ## log.h: extern void ns3::LogComponentEnableAll(ns3::LogLevel level) [free function] - module.add_function('LogComponentEnableAll', - 'void', - [param('ns3::LogLevel', 'level')]) - ## type-id.h: extern ns3::Ptr ns3::MakeTypeIdChecker() [free function] - module.add_function('MakeTypeIdChecker', - 'ns3::Ptr< ns3::AttributeChecker const >', - []) ## ptr.h: extern ns3::Ptr ns3::Create() [free function] module.add_function('Create', 'ns3::Ptr< ns3::PointerValue >', @@ -1972,6 +2035,14 @@ def register_functions(root_module): 'ns3::Ptr< ns3::ObjectVectorValue >', [], template_parameters=['ns3::ObjectVectorValue']) + ## log.h: extern void ns3::LogComponentEnableAll(ns3::LogLevel level) [free function] + module.add_function('LogComponentEnableAll', + 'void', + [param('ns3::LogLevel', 'level')]) + ## type-id.h: extern ns3::Ptr ns3::MakeTypeIdChecker() [free function] + module.add_function('MakeTypeIdChecker', + 'ns3::Ptr< ns3::AttributeChecker const >', + []) ## object-factory.h: extern ns3::Ptr ns3::MakeObjectFactoryChecker() [free function] module.add_function('MakeObjectFactoryChecker', 'ns3::Ptr< ns3::AttributeChecker const >', @@ -1992,14 +2063,14 @@ def register_functions(root_module): module.add_function('MakeRandomVariableChecker', 'ns3::Ptr< ns3::AttributeChecker const >', []) - ## log.h: extern void ns3::LogComponentDisable(char const * name, ns3::LogLevel level) [free function] - module.add_function('LogComponentDisable', - 'void', - [param('char const *', 'name'), param('ns3::LogLevel', 'level')]) ## log.h: extern void ns3::LogComponentEnable(char const * name, ns3::LogLevel level) [free function] module.add_function('LogComponentEnable', 'void', [param('char const *', 'name'), param('ns3::LogLevel', 'level')]) + ## enum.h: extern ns3::Ptr ns3::MakeEnumChecker(int v1, std::string n1, int v2=0, std::string n2="", int v3=0, std::string n3="", int v4=0, std::string n4="", int v5=0, std::string n5="", int v6=0, std::string n6="", int v7=0, std::string n7="", int v8=0, std::string n8="", int v9=0, std::string n9="", int v10=0, std::string n10="", int v11=0, std::string n11="", int v12=0, std::string n12="") [free function] + module.add_function('MakeEnumChecker', + 'ns3::Ptr< ns3::AttributeChecker const >', + [param('int', 'v1'), param('std::string', 'n1'), param('int', 'v2', default_value='0'), param('std::string', 'n2', default_value='""'), param('int', 'v3', default_value='0'), param('std::string', 'n3', default_value='""'), param('int', 'v4', default_value='0'), param('std::string', 'n4', default_value='""'), param('int', 'v5', default_value='0'), param('std::string', 'n5', default_value='""'), param('int', 'v6', default_value='0'), param('std::string', 'n6', default_value='""'), param('int', 'v7', default_value='0'), param('std::string', 'n7', default_value='""'), param('int', 'v8', default_value='0'), param('std::string', 'n8', default_value='""'), param('int', 'v9', default_value='0'), param('std::string', 'n9', default_value='""'), param('int', 'v10', default_value='0'), param('std::string', 'n10', default_value='""'), param('int', 'v11', default_value='0'), param('std::string', 'n11', default_value='""'), param('int', 'v12', default_value='0'), param('std::string', 'n12', default_value='""')]) register_functions_ns3_internal(module.get_submodule('internal'), root_module) register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module) register_functions_ns3_Config(module.get_submodule('Config'), root_module) @@ -2037,6 +2108,10 @@ def register_functions_ns3_Config(module, root_module): module.add_function('SetDefault', 'void', [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')]) + ## config.h: extern ns3::Config::MatchContainer ns3::Config::LookupMatches(std::string path) [free function] + module.add_function('LookupMatches', + 'ns3::Config::MatchContainer', + [param('std::string', 'path')]) ## config.h: extern void ns3::Config::Connect(std::string path, ns3::CallbackBase const & cb) [free function] module.add_function('Connect', 'void', @@ -2057,6 +2132,10 @@ def register_functions_ns3_Config(module, root_module): module.add_function('SetGlobalFailSafe', 'bool', [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')]) + ## config.h: extern void ns3::Config::Disconnect(std::string path, ns3::CallbackBase const & cb) [free function] + module.add_function('Disconnect', + 'void', + [param('std::string', 'path'), param('ns3::CallbackBase const &', 'cb')]) ## config.h: extern uint32_t ns3::Config::GetRootNamespaceObjectN() [free function] module.add_function('GetRootNamespaceObjectN', 'uint32_t', @@ -2073,10 +2152,6 @@ def register_functions_ns3_Config(module, root_module): module.add_function('RegisterRootNamespaceObject', 'void', [param('ns3::Ptr< ns3::Object >', 'obj')]) - ## config.h: extern void ns3::Config::Disconnect(std::string path, ns3::CallbackBase const & cb) [free function] - module.add_function('Disconnect', - 'void', - [param('std::string', 'path'), param('ns3::CallbackBase const &', 'cb')]) return def register_functions_ns3_olsr(module, root_module): diff --git a/bindings/python/ns3_module_helper.py b/bindings/python/ns3_module_helper.py index b1096712c..c53ed9a1d 100644 --- a/bindings/python/ns3_module_helper.py +++ b/bindings/python/ns3_module_helper.py @@ -237,6 +237,10 @@ def register_Ns3CsmaHelper_methods(root_module, cls): cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::NodeContainer const &', 'c'), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')]) + ## csma-helper.h: void ns3::CsmaHelper::InstallStar(ns3::Ptr hub, ns3::NodeContainer spokes, ns3::NetDeviceContainer & hubDevices, ns3::NetDeviceContainer & spokeDevices) [member function] + cls.add_method('InstallStar', + 'void', + [param('ns3::Ptr< ns3::Node >', 'hub'), param('ns3::NodeContainer', 'spokes'), param('ns3::NetDeviceContainer &', 'hubDevices'), param('ns3::NetDeviceContainer &', 'spokeDevices')]) return def register_Ns3InternetStackHelper_methods(root_module, cls): @@ -287,6 +291,10 @@ def register_Ns3Ipv4InterfaceContainer_methods(root_module, cls): cls.add_constructor([param('ns3::Ipv4InterfaceContainer const &', 'arg0')]) ## ipv4-interface-container.h: ns3::Ipv4InterfaceContainer::Ipv4InterfaceContainer() [constructor] cls.add_constructor([]) + ## ipv4-interface-container.h: void ns3::Ipv4InterfaceContainer::Add(ns3::Ipv4InterfaceContainer other) [member function] + cls.add_method('Add', + 'void', + [param('ns3::Ipv4InterfaceContainer', 'other')]) ## ipv4-interface-container.h: uint32_t ns3::Ipv4InterfaceContainer::GetN() const [member function] cls.add_method('GetN', 'uint32_t', @@ -604,6 +612,10 @@ def register_Ns3PointToPointHelper_methods(root_module, cls): cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::Ptr< ns3::Node >', 'a'), param('ns3::Ptr< ns3::Node >', 'b')]) + ## point-to-point-helper.h: void ns3::PointToPointHelper::InstallStar(ns3::Ptr hub, ns3::NodeContainer spokes, ns3::NetDeviceContainer & hubDevices, ns3::NetDeviceContainer & spokeDevices) [member function] + cls.add_method('InstallStar', + 'void', + [param('ns3::Ptr< ns3::Node >', 'hub'), param('ns3::NodeContainer', 'spokes'), param('ns3::NetDeviceContainer &', 'hubDevices'), param('ns3::NetDeviceContainer &', 'spokeDevices')]) return def register_Ns3StaticMulticastRouteHelper_methods(root_module, cls): diff --git a/bindings/python/ns3_module_node.py b/bindings/python/ns3_module_node.py index ca8fb12b0..805e8747e 100644 --- a/bindings/python/ns3_module_node.py +++ b/bindings/python/ns3_module_node.py @@ -2586,10 +2586,18 @@ def register_Ns3SimpleNetDevice_methods(root_module, cls): def register_functions(root_module): module = root_module - ## mac48-address.h: extern ns3::Ptr ns3::MakeMac48AddressChecker() [free function] - module.add_function('MakeMac48AddressChecker', - 'ns3::Ptr< ns3::AttributeChecker const >', - []) + ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Mac48Address & ad) [free function] + module.add_function('ReadFrom', + 'void', + [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Mac48Address &', 'ad')]) + ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Address & ad, uint32_t len) [free function] + module.add_function('ReadFrom', + 'void', + [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Address &', 'ad'), param('uint32_t', 'len')]) + ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Ipv4Address & ad) [free function] + module.add_function('ReadFrom', + 'void', + [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Ipv4Address &', 'ad')]) ## ipv4-address.h: extern ns3::Ptr ns3::MakeIpv4AddressChecker() [free function] module.add_function('MakeIpv4AddressChecker', 'ns3::Ptr< ns3::AttributeChecker const >', @@ -2614,18 +2622,10 @@ def register_functions(root_module): module.add_function('MakeIpv4MaskChecker', 'ns3::Ptr< ns3::AttributeChecker const >', []) - ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Mac48Address & ad) [free function] - module.add_function('ReadFrom', - 'void', - [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Mac48Address &', 'ad')]) - ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Address & ad, uint32_t len) [free function] - module.add_function('ReadFrom', - 'void', - [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Address &', 'ad'), param('uint32_t', 'len')]) - ## address-utils.h: extern void ns3::ReadFrom(ns3::Buffer::Iterator & i, ns3::Ipv4Address & ad) [free function] - module.add_function('ReadFrom', - 'void', - [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Ipv4Address &', 'ad')]) + ## mac48-address.h: extern ns3::Ptr ns3::MakeMac48AddressChecker() [free function] + module.add_function('MakeMac48AddressChecker', + 'ns3::Ptr< ns3::AttributeChecker const >', + []) register_functions_ns3_internal(module.get_submodule('internal'), root_module) register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module) register_functions_ns3_Config(module.get_submodule('Config'), root_module) diff --git a/bindings/python/ns3_module_simulator.py b/bindings/python/ns3_module_simulator.py index 535d7ed5b..679733f08 100644 --- a/bindings/python/ns3_module_simulator.py +++ b/bindings/python/ns3_module_simulator.py @@ -27,8 +27,6 @@ def register_types(module): module.add_enum('State', ['RUNNING', 'EXPIRED', 'SUSPENDED'], outer_class=root_module['ns3::Timer']) ## timer-impl.h: ns3::TimerImpl [class] module.add_class('TimerImpl', allow_subclassing=True) - ## wallclock-simulator.h: ns3::WallclockSimulator [class] - module.add_class('WallclockSimulator', is_singleton=True) ## watchdog.h: ns3::Watchdog [class] module.add_class('Watchdog') ## scheduler.h: ns3::Scheduler [class] @@ -113,7 +111,6 @@ def register_methods(root_module): register_Ns3TimeSquare_methods(root_module, root_module['ns3::TimeSquare']) register_Ns3Timer_methods(root_module, root_module['ns3::Timer']) register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl']) - register_Ns3WallclockSimulator_methods(root_module, root_module['ns3::WallclockSimulator']) register_Ns3Watchdog_methods(root_module, root_module['ns3::Watchdog']) register_Ns3Scheduler_methods(root_module, root_module['ns3::Scheduler']) register_Ns3SchedulerEvent_methods(root_module, root_module['ns3::Scheduler::Event']) @@ -264,6 +261,11 @@ def register_Ns3Simulator_methods(root_module, cls): 'void', [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], is_static=True) + ## simulator.h: static ns3::Ptr ns3::Simulator::GetImplementation() [member function] + cls.add_method('GetImplementation', + 'ns3::Ptr< ns3::SimulatorImpl >', + [], + is_static=True) ## simulator.h: static void ns3::Simulator::SetScheduler(ns3::Ptr scheduler) [member function] cls.add_method('SetScheduler', 'void', @@ -665,21 +667,6 @@ def register_Ns3TimerImpl_methods(root_module, cls): is_pure_virtual=True, is_virtual=True) return -def register_Ns3WallclockSimulator_methods(root_module, cls): - ## wallclock-simulator.h: ns3::WallclockSimulator::WallclockSimulator(ns3::WallclockSimulator const & arg0) [copy constructor] - cls.add_constructor([param('ns3::WallclockSimulator const &', 'arg0')]) - ## wallclock-simulator.h: static void ns3::WallclockSimulator::Schedule(ns3::Time const & time, void (*)( ) * f) [member function] - cls.add_method('Schedule', - 'void', - [param('ns3::Time const &', 'time'), param('void ( * ) ( ) *', 'f')], - is_static=True) - ## wallclock-simulator.h: static void ns3::WallclockSimulator::ScheduleNow(void (*)( ) * f) [member function] - cls.add_method('ScheduleNow', - 'void', - [param('void ( * ) ( ) *', 'f')], - is_static=True) - return - def register_Ns3Watchdog_methods(root_module, cls): ## watchdog.h: ns3::Watchdog::Watchdog(ns3::Watchdog const & arg0) [copy constructor] cls.add_constructor([param('ns3::Watchdog const &', 'arg0')]) @@ -847,16 +834,6 @@ def register_Ns3SimulatorImpl_methods(root_module, cls): 'ns3::Ptr< ns3::Scheduler >', [], is_pure_virtual=True, is_const=True, is_virtual=True) - ## simulator-impl.h: void ns3::SimulatorImpl::ScheduleWallclock(ns3::Time const & time, ns3::EventImpl * event) [member function] - cls.add_method('ScheduleWallclock', - 'void', - [param('ns3::Time const &', 'time'), param('ns3::EventImpl *', 'event')], - is_pure_virtual=True, is_virtual=True) - ## simulator-impl.h: void ns3::SimulatorImpl::ScheduleWallclockNow(ns3::EventImpl * event) [member function] - cls.add_method('ScheduleWallclockNow', - 'void', - [param('ns3::EventImpl *', 'event')], - is_pure_virtual=True, is_virtual=True) return def register_Ns3Synchronizer_methods(root_module, cls): @@ -1194,16 +1171,6 @@ def register_Ns3DefaultSimulatorImpl_methods(root_module, cls): 'ns3::Ptr< ns3::Scheduler >', [], is_const=True, is_virtual=True) - ## default-simulator-impl.h: void ns3::DefaultSimulatorImpl::ScheduleWallclock(ns3::Time const & time, ns3::EventImpl * event) [member function] - cls.add_method('ScheduleWallclock', - 'void', - [param('ns3::Time const &', 'time'), param('ns3::EventImpl *', 'event')], - is_virtual=True) - ## default-simulator-impl.h: void ns3::DefaultSimulatorImpl::ScheduleWallclockNow(ns3::EventImpl * event) [member function] - cls.add_method('ScheduleWallclockNow', - 'void', - [param('ns3::EventImpl *', 'event')], - is_virtual=True) return def register_Ns3HeapScheduler_methods(root_module, cls): @@ -1402,16 +1369,14 @@ def register_Ns3RealtimeSimulatorImpl_methods(root_module, cls): 'ns3::Ptr< ns3::Scheduler >', [], is_const=True, is_virtual=True) - ## realtime-simulator-impl.h: void ns3::RealtimeSimulatorImpl::ScheduleWallclock(ns3::Time const & time, ns3::EventImpl * event) [member function] - cls.add_method('ScheduleWallclock', + ## realtime-simulator-impl.h: void ns3::RealtimeSimulatorImpl::ScheduleRealtime(ns3::Time const & time, ns3::EventImpl * event) [member function] + cls.add_method('ScheduleRealtime', 'void', - [param('ns3::Time const &', 'time'), param('ns3::EventImpl *', 'event')], - is_virtual=True) - ## realtime-simulator-impl.h: void ns3::RealtimeSimulatorImpl::ScheduleWallclockNow(ns3::EventImpl * event) [member function] - cls.add_method('ScheduleWallclockNow', + [param('ns3::Time const &', 'time'), param('ns3::EventImpl *', 'event')]) + ## realtime-simulator-impl.h: void ns3::RealtimeSimulatorImpl::ScheduleRealtimeNow(ns3::EventImpl * event) [member function] + cls.add_method('ScheduleRealtimeNow', 'void', - [param('ns3::EventImpl *', 'event')], - is_virtual=True) + [param('ns3::EventImpl *', 'event')]) ## realtime-simulator-impl.h: ns3::Time ns3::RealtimeSimulatorImpl::RealtimeNow() const [member function] cls.add_method('RealtimeNow', 'ns3::Time', diff --git a/bindings/python/ns3modulegen_generated.py b/bindings/python/ns3modulegen_generated.py index 2a6d55525..c2aad704d 100644 --- a/bindings/python/ns3modulegen_generated.py +++ b/bindings/python/ns3modulegen_generated.py @@ -274,6 +274,7 @@ def register_types_ns3_TimeStepPrecision(module): def register_types_ns3_Config(module): root_module = module.get_root() + module.add_container('std::vector< std::string >', 'std::string', container_type='vector') def register_types_ns3_olsr(module): root_module = module.get_root() diff --git a/samples/main-ns2-mob.cc b/samples/main-ns2-mob.cc index 349e42f79..1b4f827f2 100644 --- a/samples/main-ns2-mob.cc +++ b/samples/main-ns2-mob.cc @@ -4,6 +4,7 @@ #include "ns3/helper-module.h" #include "ns3/mobility-module.h" #include +#include using namespace ns3; diff --git a/samples/main-test-sync.cc b/samples/main-test-sync.cc index 401c01171..0db9f7151 100644 --- a/samples/main-test-sync.cc +++ b/samples/main-test-sync.cc @@ -1,13 +1,14 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ #include "ns3/simulator.h" -#include "ns3/wallclock-simulator.h" +#include "ns3/realtime-simulator-impl.h" #include "ns3/nstime.h" #include "ns3/log.h" #include "ns3/system-thread.h" #include "ns3/string.h" #include "ns3/config.h" #include "ns3/global-value.h" +#include "ns3/ptr.h" #include #include @@ -18,7 +19,7 @@ NS_LOG_COMPONENT_DEFINE ("TestSync"); bool gFirstRun = false; - void +void inserted_function (void) { NS_ASSERT (gFirstRun); @@ -26,7 +27,7 @@ inserted_function (void) Simulator::Now ().GetSeconds () << " s"); } - void +void background_function (void) { NS_ASSERT (gFirstRun); @@ -34,7 +35,7 @@ background_function (void) Simulator::Now ().GetSeconds () << " s"); } - void +void first_function (void) { NS_LOG_UNCOND ("first_function() called at " << @@ -46,8 +47,6 @@ class FakeNetDevice { public: FakeNetDevice (); - void Doit1 (void); - void Doit2 (void); void Doit3 (void); void Doit4 (void); }; @@ -57,37 +56,7 @@ FakeNetDevice::FakeNetDevice () NS_LOG_FUNCTION_NOARGS (); } - void -FakeNetDevice::Doit1 (void) -{ - NS_LOG_FUNCTION_NOARGS (); - sleep (1); - for (uint32_t i = 0.001; i < 10000; ++i) - { - // - // Exercise the relative now path - // - Simulator::ScheduleNow (&inserted_function); - usleep (1000); - } -} - - void -FakeNetDevice::Doit2 (void) -{ - NS_LOG_FUNCTION_NOARGS (); - sleep (1); - for (uint32_t i = 0.001; i < 10000; ++i) - { - // - // Exercise the relative schedule path - // - Simulator::Schedule (Seconds (0), &inserted_function); - usleep (1000); - } -} - - void +void FakeNetDevice::Doit3 (void) { NS_LOG_FUNCTION_NOARGS (); @@ -97,12 +66,12 @@ FakeNetDevice::Doit3 (void) // // Exercise the realtime relative now path // - WallclockSimulator::ScheduleNow (&inserted_function); + DynamicCast (Simulator::GetImplementation ())->ScheduleRealtimeNow (MakeEvent (&inserted_function)); usleep (1000); } } - void +void FakeNetDevice::Doit4 (void) { NS_LOG_FUNCTION_NOARGS (); @@ -112,12 +81,12 @@ FakeNetDevice::Doit4 (void) // // Exercise the realtime relative schedule path // - WallclockSimulator::Schedule (Seconds (0), &inserted_function); + DynamicCast (Simulator::GetImplementation ())->ScheduleRealtime (Seconds (0), MakeEvent (&inserted_function)); usleep (1000); } } - void +void test (void) { GlobalValue::Bind ("SimulatorImplementationType", @@ -128,7 +97,7 @@ test (void) // // Make sure ScheduleNow works when the system isn't running // - WallclockSimulator::ScheduleNow(&first_function); + DynamicCast (Simulator::GetImplementation ())->ScheduleRealtimeNow(MakeEvent (&first_function)); // // drive the progression of m_currentTs at a ten millisecond rate @@ -138,14 +107,6 @@ test (void) Simulator::Schedule (Seconds (d), &background_function); } - Ptr st1 = Create ( - MakeCallback (&FakeNetDevice::Doit1, &fnd)); - st1->Start (); - - Ptr st2 = Create ( - MakeCallback (&FakeNetDevice::Doit2, &fnd)); - st2->Start (); - Ptr st3 = Create ( MakeCallback (&FakeNetDevice::Doit3, &fnd)); st3->Start (); @@ -156,17 +117,15 @@ test (void) Simulator::Stop (Seconds (15.0)); Simulator::Run (); - st1->Join (); - st2->Join (); st3->Join (); st4->Join (); Simulator::Destroy (); } - int +int main (int argc, char *argv[]) { - for (;;) + while (true) { test (); } diff --git a/src/simulator/default-simulator-impl.cc b/src/simulator/default-simulator-impl.cc index 98771d99d..d5afd743a 100644 --- a/src/simulator/default-simulator-impl.cc +++ b/src/simulator/default-simulator-impl.cc @@ -316,17 +316,6 @@ DefaultSimulatorImpl::GetMaximumSimulationTime (void) const return TimeStep (0x7fffffffffffffffLL); } -void -DefaultSimulatorImpl::ScheduleWallclock (Time const &time, EventImpl *event) -{ - NS_FATAL_ERROR ("not implemented"); -} -void -DefaultSimulatorImpl::ScheduleWallclockNow (EventImpl *event) -{ - NS_FATAL_ERROR ("not implemented"); -} - } // namespace ns3 diff --git a/src/simulator/default-simulator-impl.h b/src/simulator/default-simulator-impl.h index 5b255bd1b..896977adb 100644 --- a/src/simulator/default-simulator-impl.h +++ b/src/simulator/default-simulator-impl.h @@ -59,8 +59,6 @@ public: virtual Time GetMaximumSimulationTime (void) const; virtual void SetScheduler (Ptr scheduler); virtual Ptr GetScheduler (void) const; - virtual void ScheduleWallclock (Time const &time, EventImpl *event); - virtual void ScheduleWallclockNow (EventImpl *event); private: void ProcessOneEvent (void); diff --git a/src/simulator/realtime-simulator-impl.cc b/src/simulator/realtime-simulator-impl.cc index e94fc7c5d..1acec20b3 100644 --- a/src/simulator/realtime-simulator-impl.cc +++ b/src/simulator/realtime-simulator-impl.cc @@ -632,7 +632,7 @@ RealtimeSimulatorImpl::Now (void) const // Schedule an event for a _relative_ time in the future. // void -RealtimeSimulatorImpl::ScheduleWallclock (Time const &time, EventImpl *impl) +RealtimeSimulatorImpl::ScheduleRealtime (Time const &time, EventImpl *impl) { NS_LOG_FUNCTION (time << impl); @@ -641,7 +641,7 @@ RealtimeSimulatorImpl::ScheduleWallclock (Time const &time, EventImpl *impl) CriticalSection cs (m_mutex); uint64_t ts = m_synchronizer->GetCurrentRealtime () + time.GetTimeStep (); - NS_ASSERT_MSG (ts >= m_currentTs, "RealtimeSimulatorImpl::ScheduleWallClock(): schedule for time < m_currentTs"); + NS_ASSERT_MSG (ts >= m_currentTs, "RealtimeSimulatorImpl::ScheduleRealtime(): schedule for time < m_currentTs"); Scheduler::Event ev; ev.impl = impl; ev.key.m_ts = ts; @@ -655,7 +655,7 @@ RealtimeSimulatorImpl::ScheduleWallclock (Time const &time, EventImpl *impl) } void -RealtimeSimulatorImpl::ScheduleWallclockNow (EventImpl *impl) +RealtimeSimulatorImpl::ScheduleRealtimeNow (EventImpl *impl) { NS_LOG_FUNCTION_NOARGS (); { @@ -666,7 +666,7 @@ RealtimeSimulatorImpl::ScheduleWallclockNow (EventImpl *impl) // realtime clock. If we're not, then m_currentTs is were we stopped. // uint64_t ts = m_running ? m_synchronizer->GetCurrentRealtime () : m_currentTs; - NS_ASSERT_MSG (ts >= m_currentTs, "RealtimeSimulatorImpl::ScheduleWallclockNow(): schedule for time < m_currentTs"); + NS_ASSERT_MSG (ts >= m_currentTs, "RealtimeSimulatorImpl::ScheduleRealtimeNow(): schedule for time < m_currentTs"); Scheduler::Event ev; ev.impl = impl; ev.key.m_ts = ts; diff --git a/src/simulator/realtime-simulator-impl.h b/src/simulator/realtime-simulator-impl.h index 46dbb9b3d..48484c8a6 100644 --- a/src/simulator/realtime-simulator-impl.h +++ b/src/simulator/realtime-simulator-impl.h @@ -69,9 +69,9 @@ public: virtual Time GetMaximumSimulationTime (void) const; virtual void SetScheduler (Ptr scheduler); virtual Ptr GetScheduler (void) const; - virtual void ScheduleWallclock (Time const &time, EventImpl *event); - virtual void ScheduleWallclockNow (EventImpl *event); + void ScheduleRealtime (Time const &time, EventImpl *event); + void ScheduleRealtimeNow (EventImpl *event); Time RealtimeNow (void) const; void SetSynchronizationMode (RealtimeSimulatorImpl::SynchronizationMode mode); diff --git a/src/simulator/simulator-impl.h b/src/simulator/simulator-impl.h index 08310f045..c84d82f83 100644 --- a/src/simulator/simulator-impl.h +++ b/src/simulator/simulator-impl.h @@ -52,8 +52,6 @@ public: virtual Time GetMaximumSimulationTime (void) const = 0; virtual void SetScheduler (Ptr scheduler) = 0; virtual Ptr GetScheduler (void) const = 0; - virtual void ScheduleWallclock (Time const &time, EventImpl *event) = 0; - virtual void ScheduleWallclockNow (EventImpl *event) = 0; }; } // namespace ns3 diff --git a/src/simulator/simulator.cc b/src/simulator/simulator.cc index 98c57e386..36d3f8854 100644 --- a/src/simulator/simulator.cc +++ b/src/simulator/simulator.cc @@ -19,7 +19,6 @@ */ #include "simulator.h" -#include "wallclock-simulator.h" #include "simulator-impl.h" #include "default-simulator-impl.h" #include "realtime-simulator-impl.h" @@ -286,35 +285,12 @@ Simulator::SetImplementation (Ptr impl) { NS_FATAL_ERROR ("TODO"); } - - -void -WallclockSimulator::Schedule (Time const &time, EventImpl *ev) +Ptr +Simulator::GetImplementation (void) { - NS_LOG_FUNCTION (time << ev); - return GetImpl ()->ScheduleWallclock (time, ev); + return GetImpl (); } -void -WallclockSimulator::ScheduleNow (EventImpl *ev) -{ - NS_LOG_FUNCTION (ev); - return GetImpl ()->ScheduleWallclockNow (ev); -} - -void -WallclockSimulator::Schedule (Time const &time, void (*f) (void)) -{ - NS_LOG_FUNCTION (time << f); - return WallclockSimulator::Schedule (time, MakeEvent (f)); -} - -void -WallclockSimulator::ScheduleNow (void (*f) (void)) -{ - NS_LOG_FUNCTION (f); - return WallclockSimulator::ScheduleNow (MakeEvent (f)); -} } // namespace ns3 diff --git a/src/simulator/simulator.h b/src/simulator/simulator.h index 2b22b181a..11a4a1a9d 100644 --- a/src/simulator/simulator.h +++ b/src/simulator/simulator.h @@ -71,6 +71,8 @@ public: */ static void SetImplementation (Ptr impl); + static Ptr GetImplementation (void); + /** * \param scheduler a new event scheduler * diff --git a/src/simulator/wallclock-simulator.h b/src/simulator/wallclock-simulator.h deleted file mode 100644 index 38da9a9ad..000000000 --- a/src/simulator/wallclock-simulator.h +++ /dev/null @@ -1,475 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -/* - * Copyright (c) 2008 University of Washington - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation; - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef WALLCLOCK_SIMULATOR_H -#define WALLCLOCK_SIMULATOR_H - -#include "simulator.h" -#include "make-event.h" - -namespace ns3 { - -/** - * \ingroup simulator - * - * \brief Extension class to control the scheduling of real-time simulation - * events. Intended to be used by threads driven by "external" system - * events and will schedule events using the current real-time instead of - * the current simulation time. - */ -class WallclockSimulator -{ -public: - /** - * Schedule an event to expire at the relative real-time "time" - * is reached. This can be thought of as scheduling an event - * for the current real-time plus the Time passed as a parameter - * - * When the event expires (when it becomes due to be run), the - * input method will be invoked on the input object. - * - * @param time the relative expiration time of the event. - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, MEM mem_ptr, OBJ obj); - - /** - * @param time the relative expiration time of the event. - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1); - - /** - * @param time the relative expiration time of the event. - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2); - - /** - * @param time the relative expiration time of the event. - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - * @param a3 the third argument to pass to the invoked method - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3); - - /** - * @param time the relative expiration time of the event. - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - * @param a3 the third argument to pass to the invoked method - * @param a4 the fourth argument to pass to the invoked method - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4); - - /** - * @param time the relative expiration time of the event. - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - * @param a3 the third argument to pass to the invoked method - * @param a4 the fourth argument to pass to the invoked method - * @param a5 the fifth argument to pass to the invoked method - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, MEM mem_ptr, OBJ obj, - T1 a1, T2 a2, T3 a3, T4 a4, T5 a5); - /** - * @param time the relative expiration time of the event. - * @param f the function to invoke - * @returns an id for the scheduled event. - */ - static void Schedule (Time const &time, void (*f) (void)); - - /** - * @param time the relative expiration time of the event. - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, void (*f) (U1), T1 a1); - - /** - * @param time the relative expiration time of the event. - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, void (*f) (U1,U2), T1 a1, T2 a2); - - /** - * @param time the relative expiration time of the event. - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - * @param a3 the third argument to pass to the function to invoke - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3); - - /** - * @param time the relative expiration time of the event. - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - * @param a3 the third argument to pass to the function to invoke - * @param a4 the fourth argument to pass to the function to invoke - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4); - - /** - * @param time the relative expiration time of the event. - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - * @param a3 the third argument to pass to the function to invoke - * @param a4 the fourth argument to pass to the function to invoke - * @param a5 the fifth argument to pass to the function to invoke - * @returns an id for the scheduled event. - */ - template - static void Schedule (Time const &time, void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5); - - /** - * Schedule an event to expire Now. All events scheduled to - * to expire "Now" are scheduled FIFO, after all normal events - * have expired. - * - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - */ - template - static void ScheduleNow (MEM mem_ptr, OBJ obj); - - /** - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - */ - template - static void ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1); - - /** - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - */ - template - static void ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2); - - /** - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - * @param a3 the third argument to pass to the invoked method - */ - template - static void ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3); - - /** - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - * @param a3 the third argument to pass to the invoked method - * @param a4 the fourth argument to pass to the invoked method - */ - template - static void ScheduleNow (MEM mem_ptr, OBJ obj, - T1 a1, T2 a2, T3 a3, T4 a4); - /** - * @param mem_ptr member method pointer to invoke - * @param obj the object on which to invoke the member method - * @param a1 the first argument to pass to the invoked method - * @param a2 the second argument to pass to the invoked method - * @param a3 the third argument to pass to the invoked method - * @param a4 the fourth argument to pass to the invoked method - * @param a5 the fifth argument to pass to the invoked method - */ - template - static void ScheduleNow (MEM mem_ptr, OBJ obj, - T1 a1, T2 a2, T3 a3, T4 a4, T5 a5); - /** - * @param f the function to invoke - */ - static void ScheduleNow (void (*f) (void)); - - /** - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - */ - template - static void ScheduleNow (void (*f) (U1), T1 a1); - - /** - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - */ - template - static void ScheduleNow (void (*f) (U1,U2), T1 a1, T2 a2); - - /** - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - * @param a3 the third argument to pass to the function to invoke - */ - template - static void ScheduleNow (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3); - - /** - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - * @param a3 the third argument to pass to the function to invoke - * @param a4 the fourth argument to pass to the function to invoke - */ - template - static void ScheduleNow (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4); - - /** - * @param f the function to invoke - * @param a1 the first argument to pass to the function to invoke - * @param a2 the second argument to pass to the function to invoke - * @param a3 the third argument to pass to the function to invoke - * @param a4 the fourth argument to pass to the function to invoke - * @param a5 the fifth argument to pass to the function to invoke - */ - template - static void ScheduleNow (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5); - -private: - WallclockSimulator (); - ~WallclockSimulator (); - static void Schedule (const Time &delay, EventImpl *impl); - static void ScheduleNow (EventImpl *impl); -}; - -template -void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj) -{ - return Schedule (time, MakeEvent (mem_ptr, obj)); -} - -template -void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1) -{ - return Schedule (time, MakeEvent (mem_ptr, obj, a1)); -} - -template -void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2) -{ - return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2)); -} - -template -void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) -{ - return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3)); -} - -template -void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4) -{ - return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4)); -} - -template -void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, - T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) -{ - return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5)); -} - -template -void WallclockSimulator::Schedule (Time const &time, void (*f) (U1), T1 a1) -{ - return Schedule (time, MakeEvent (f, a1)); -} - -template -void WallclockSimulator::Schedule (Time const &time, void (*f) (U1,U2), T1 a1, T2 a2) -{ - return Schedule (time, MakeEvent (f, a1, a2)); -} - -template -void WallclockSimulator::Schedule (Time const &time, void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3) -{ - return Schedule (time, MakeEvent (f, a1, a2, a3)); -} - -template -void WallclockSimulator::Schedule (Time const &time, void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4) -{ - return Schedule (time, MakeEvent (f, a1, a2, a3, a4)); -} - -template -void WallclockSimulator::Schedule (Time const &time, void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) -{ - return Schedule (time, MakeEvent (f, a1, a2, a3, a4, a5)); -} - -template -void -WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj) -{ - return ScheduleNow (MakeEvent (mem_ptr, obj)); -} - -template -void -WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1) -{ - return ScheduleNow (MakeEvent (mem_ptr, obj, a1)); -} - -template -void -WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2) -{ - return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2)); -} - -template -void -WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) -{ - return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3)); -} - -template -void -WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4) -{ - return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4)); -} - -template -void -WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, - T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) -{ - return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5)); -} - -template -void -WallclockSimulator::ScheduleNow (void (*f) (U1), T1 a1) -{ - return ScheduleNow (MakeEvent (f, a1)); -} - -template -void -WallclockSimulator::ScheduleNow (void (*f) (U1,U2), T1 a1, T2 a2) -{ - return ScheduleNow (MakeEvent (f, a1, a2)); -} - -template -void -WallclockSimulator::ScheduleNow (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3) -{ - return ScheduleNow (MakeEvent (f, a1, a2, a3)); -} - -template -void -WallclockSimulator::ScheduleNow (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4) -{ - return ScheduleNow (MakeEvent (f, a1, a2, a3, a4)); -} - -template -void -WallclockSimulator::ScheduleNow (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) -{ - return ScheduleNow (MakeEvent (f, a1, a2, a3, a4, a5)); -} - -} // namespace ns3 - -#endif /* WALLCLOCK_SIMULATOR_H */ diff --git a/src/simulator/wscript b/src/simulator/wscript index e1bf89d95..506119579 100644 --- a/src/simulator/wscript +++ b/src/simulator/wscript @@ -76,7 +76,6 @@ def build(bld): 'event-id.h', 'event-impl.h', 'simulator.h', - 'wallclock-simulator.h', 'simulator-impl.h', 'default-simulator-impl.h', 'scheduler.h',