remove realtime public API.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 27 Oct 2008 12:47:33 +0100
changeset 3816 edd4928b2046
parent 3815 ffea4fa619db
child 3817 4ed410f69d36
remove realtime public API.
bindings/python/ns3_module_core.py
bindings/python/ns3_module_helper.py
bindings/python/ns3_module_node.py
bindings/python/ns3_module_simulator.py
bindings/python/ns3modulegen_generated.py
samples/main-ns2-mob.cc
samples/main-test-sync.cc
src/simulator/default-simulator-impl.cc
src/simulator/default-simulator-impl.h
src/simulator/realtime-simulator-impl.cc
src/simulator/realtime-simulator-impl.h
src/simulator/simulator-impl.h
src/simulator/simulator.cc
src/simulator/simulator.h
src/simulator/wallclock-simulator.h
src/simulator/wscript
--- a/bindings/python/ns3_module_core.py	Mon Oct 27 12:17:38 2008 +0100
+++ b/bindings/python/ns3_module_core.py	Mon Oct 27 12:47:33 2008 +0100
@@ -199,6 +199,9 @@
 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 @@
     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 @@
     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 @@
     cls.add_method('ConnectWithoutContext', 
                    'void', 
                    [param('ns3::CallbackBase const &', 'cb')])
-    ## traced-value.h: void ns3::TracedValue<unsigned int>::Connect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    ## traced-value.h: void ns3::TracedValue<unsigned int>::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 @@
     cls.add_method('DisconnectWithoutContext', 
                    'void', 
                    [param('ns3::CallbackBase const &', 'cb')])
-    ## traced-value.h: void ns3::TracedValue<unsigned int>::Disconnect(ns3::CallbackBase const & cb, std::basic_string<char,std::char_traits<char>,std::allocator<char> > path) [member function]
+    ## traced-value.h: void ns3::TracedValue<unsigned int>::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 @@
                    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<ns3::Ptr<ns3::Object>, std::allocator<ns3::Ptr<ns3::Object> > > const & objects, std::vector<std::string, std::allocator<std::string> > 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<const ns3::Ptr<ns3::Object>*,std::vector<ns3::Ptr<ns3::Object>, std::allocator<ns3::Ptr<ns3::Object> > > > 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<const ns3::Ptr<ns3::Object>*,std::vector<ns3::Ptr<ns3::Object>, std::allocator<ns3::Ptr<ns3::Object> > > > 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::Object> 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::AttributeChecker const> ns3::MakeBooleanChecker() [free function]
@@ -1910,7 +1981,7 @@
     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 @@
     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 @@
                         '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::AttributeChecker const> ns3::MakeStringChecker() [free function]
     module.add_function('MakeStringChecker', 
                         'ns3::Ptr< ns3::AttributeChecker const >', 
                         [])
-    ## enum.h: extern ns3::Ptr<ns3::AttributeChecker const> 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::AttributeChecker const> ns3::MakeTypeIdChecker() [free function]
-    module.add_function('MakeTypeIdChecker', 
-                        'ns3::Ptr< ns3::AttributeChecker const >', 
-                        [])
     ## ptr.h: extern ns3::Ptr<ns3::PointerValue> ns3::Create() [free function]
     module.add_function('Create', 
                         'ns3::Ptr< ns3::PointerValue >', 
@@ -1972,6 +2035,14 @@
                         '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::AttributeChecker const> ns3::MakeTypeIdChecker() [free function]
+    module.add_function('MakeTypeIdChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## object-factory.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeObjectFactoryChecker() [free function]
     module.add_function('MakeObjectFactoryChecker', 
                         'ns3::Ptr< ns3::AttributeChecker const >', 
@@ -1992,14 +2063,14 @@
     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::AttributeChecker const> 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 @@
     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 @@
     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 @@
     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):
--- a/bindings/python/ns3_module_helper.py	Mon Oct 27 12:17:38 2008 +0100
+++ b/bindings/python/ns3_module_helper.py	Mon Oct 27 12:47:33 2008 +0100
@@ -237,6 +237,10 @@
     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<ns3::Node> 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 @@
     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 @@
     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<ns3::Node> 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):
--- a/bindings/python/ns3_module_node.py	Mon Oct 27 12:17:38 2008 +0100
+++ b/bindings/python/ns3_module_node.py	Mon Oct 27 12:47:33 2008 +0100
@@ -2586,10 +2586,18 @@
 
 def register_functions(root_module):
     module = root_module
-    ## mac48-address.h: extern ns3::Ptr<ns3::AttributeChecker const> 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::AttributeChecker const> ns3::MakeIpv4AddressChecker() [free function]
     module.add_function('MakeIpv4AddressChecker', 
                         'ns3::Ptr< ns3::AttributeChecker const >', 
@@ -2614,18 +2622,10 @@
     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::AttributeChecker const> 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)
--- a/bindings/python/ns3_module_simulator.py	Mon Oct 27 12:17:38 2008 +0100
+++ b/bindings/python/ns3_module_simulator.py	Mon Oct 27 12:47:33 2008 +0100
@@ -27,8 +27,6 @@
     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 @@
     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 @@
                    'void', 
                    [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], 
                    is_static=True)
+    ## simulator.h: static ns3::Ptr<ns3::SimulatorImpl> 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<ns3::Scheduler> scheduler) [member function]
     cls.add_method('SetScheduler', 
                    'void', 
@@ -665,21 +667,6 @@
                    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 @@
                    '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 @@
                    '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 @@
                    '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', 
--- a/bindings/python/ns3modulegen_generated.py	Mon Oct 27 12:17:38 2008 +0100
+++ b/bindings/python/ns3modulegen_generated.py	Mon Oct 27 12:47:33 2008 +0100
@@ -274,6 +274,7 @@
 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()
--- a/samples/main-ns2-mob.cc	Mon Oct 27 12:17:38 2008 +0100
+++ b/samples/main-ns2-mob.cc	Mon Oct 27 12:47:33 2008 +0100
@@ -4,6 +4,7 @@
 #include "ns3/helper-module.h"
 #include "ns3/mobility-module.h"
 #include <iostream>
+#include <fstream>
 
 using namespace ns3;
 
--- a/samples/main-test-sync.cc	Mon Oct 27 12:17:38 2008 +0100
+++ b/samples/main-test-sync.cc	Mon Oct 27 12:47:33 2008 +0100
@@ -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 <unistd.h>
 #include <sys/time.h>
@@ -18,7 +19,7 @@
 
 bool gFirstRun = false;
 
-  void 
+void 
 inserted_function (void)
 {
   NS_ASSERT (gFirstRun);
@@ -26,7 +27,7 @@
     Simulator::Now ().GetSeconds () << " s");
 }
 
-  void 
+void 
 background_function (void)
 {
   NS_ASSERT (gFirstRun);
@@ -34,7 +35,7 @@
     Simulator::Now ().GetSeconds () << " s");
 }
 
-  void 
+void 
 first_function (void)
 {
   NS_LOG_UNCOND ("first_function() called at " << 
@@ -46,8 +47,6 @@
 {
 public:
   FakeNetDevice ();
-  void Doit1 (void);
-  void Doit2 (void);
   void Doit3 (void);
   void Doit4 (void);
 };
@@ -57,37 +56,7 @@
   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 @@
       //
       // Exercise the realtime relative now path
       //
-      WallclockSimulator::ScheduleNow (&inserted_function);
+      DynamicCast<RealtimeSimulatorImpl> (Simulator::GetImplementation ())->ScheduleRealtimeNow (MakeEvent (&inserted_function));
       usleep (1000);
     }
 }
 
-  void
+void
 FakeNetDevice::Doit4 (void)
 {
   NS_LOG_FUNCTION_NOARGS ();
@@ -112,12 +81,12 @@
       //
       // Exercise the realtime relative schedule path
       //
-      WallclockSimulator::Schedule (Seconds (0), &inserted_function);
+      DynamicCast<RealtimeSimulatorImpl> (Simulator::GetImplementation ())->ScheduleRealtime (Seconds (0), MakeEvent (&inserted_function));
       usleep (1000);
     }
 }
 
-  void 
+void 
 test (void)
 {
   GlobalValue::Bind ("SimulatorImplementationType", 
@@ -128,7 +97,7 @@
   // 
   // Make sure ScheduleNow works when the system isn't running
   //
-  WallclockSimulator::ScheduleNow(&first_function);
+  DynamicCast<RealtimeSimulatorImpl> (Simulator::GetImplementation ())->ScheduleRealtimeNow(MakeEvent (&first_function));
 
   // 
   // drive the progression of m_currentTs at a ten millisecond rate
@@ -138,14 +107,6 @@
       Simulator::Schedule (Seconds (d), &background_function);
     }
 
-  Ptr<SystemThread> st1 = Create<SystemThread> (
-    MakeCallback (&FakeNetDevice::Doit1, &fnd));
-  st1->Start ();
-
-  Ptr<SystemThread> st2 = Create<SystemThread> (
-    MakeCallback (&FakeNetDevice::Doit2, &fnd));
-  st2->Start ();
-
   Ptr<SystemThread> st3 = Create<SystemThread> (
     MakeCallback (&FakeNetDevice::Doit3, &fnd));
   st3->Start ();
@@ -156,17 +117,15 @@
 
   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 ();
     }
--- a/src/simulator/default-simulator-impl.cc	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/default-simulator-impl.cc	Mon Oct 27 12:47:33 2008 +0100
@@ -316,17 +316,6 @@
   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
 
 
--- a/src/simulator/default-simulator-impl.h	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/default-simulator-impl.h	Mon Oct 27 12:47:33 2008 +0100
@@ -59,8 +59,6 @@
   virtual Time GetMaximumSimulationTime (void) const;
   virtual void SetScheduler (Ptr<Scheduler> scheduler);
   virtual Ptr<Scheduler> GetScheduler (void) const;
-  virtual void ScheduleWallclock (Time const &time, EventImpl *event);
-  virtual void ScheduleWallclockNow (EventImpl *event);
 
 private:
   void ProcessOneEvent (void);
--- a/src/simulator/realtime-simulator-impl.cc	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/realtime-simulator-impl.cc	Mon Oct 27 12:47:33 2008 +0100
@@ -632,7 +632,7 @@
 // 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 @@
     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 @@
 }
 
 void
-RealtimeSimulatorImpl::ScheduleWallclockNow (EventImpl *impl)
+RealtimeSimulatorImpl::ScheduleRealtimeNow (EventImpl *impl)
 {
   NS_LOG_FUNCTION_NOARGS ();
   {
@@ -666,7 +666,7 @@
     // 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;
--- a/src/simulator/realtime-simulator-impl.h	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/realtime-simulator-impl.h	Mon Oct 27 12:47:33 2008 +0100
@@ -69,9 +69,9 @@
   virtual Time GetMaximumSimulationTime (void) const;
   virtual void SetScheduler (Ptr<Scheduler> scheduler);
   virtual Ptr<Scheduler> 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);
--- a/src/simulator/simulator-impl.h	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/simulator-impl.h	Mon Oct 27 12:47:33 2008 +0100
@@ -52,8 +52,6 @@
   virtual Time GetMaximumSimulationTime (void) const = 0;
   virtual void SetScheduler (Ptr<Scheduler> scheduler) = 0;
   virtual Ptr<Scheduler> GetScheduler (void) const = 0;
-  virtual void ScheduleWallclock (Time const &time, EventImpl *event) = 0;
-  virtual void ScheduleWallclockNow (EventImpl *event) = 0;
 };
 
 } // namespace ns3
--- a/src/simulator/simulator.cc	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/simulator.cc	Mon Oct 27 12:47:33 2008 +0100
@@ -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 @@
 {
   NS_FATAL_ERROR ("TODO");
 }
-
-
-void
-WallclockSimulator::Schedule (Time const &time, EventImpl *ev)
+Ptr<SimulatorImpl>
+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
--- a/src/simulator/simulator.h	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/simulator.h	Mon Oct 27 12:47:33 2008 +0100
@@ -71,6 +71,8 @@
    */
   static void SetImplementation (Ptr<SimulatorImpl> impl);
 
+  static Ptr<SimulatorImpl> GetImplementation (void);
+
   /**
    * \param scheduler a new event scheduler
    *
--- a/src/simulator/wallclock-simulator.h	Mon Oct 27 12:17:38 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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 <typename MEM, typename OBJ>
-  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 <typename MEM, typename OBJ, typename T1>
-  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 <typename MEM, typename OBJ, typename T1, typename T2>
-  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 <typename MEM, typename OBJ, 
-            typename T1, typename T2, typename T3>
-  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 <typename MEM, typename OBJ, 
-            typename T1, typename T2, typename T3, typename T4>
-  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 <typename MEM, typename OBJ, 
-            typename T1, typename T2, typename T3, typename T4, typename T5>
-  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 <typename U1, typename T1>
-  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 <typename U1, typename U2, typename T1, typename T2>
-  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 <typename U1, typename U2, typename U3, typename T1, typename T2, typename T3>
-  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 <typename U1, typename U2, typename U3, typename U4, 
-            typename T1, typename T2, typename T3, typename T4>
-  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 <typename U1, typename U2, typename U3, typename U4, typename U5,
-            typename T1, typename T2, typename T3, typename T4, typename T5>
-  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 <typename MEM, typename OBJ>
-  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 <typename MEM, typename OBJ, 
-            typename T1>
-  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 <typename MEM, typename OBJ, 
-            typename T1, typename T2>
-  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 <typename MEM, typename OBJ, 
-            typename T1, typename T2, typename T3>
-  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 <typename MEM, typename OBJ, 
-            typename T1, typename T2, typename T3, typename T4>
-  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 <typename MEM, typename OBJ, 
-            typename T1, typename T2, typename T3, typename T4, typename T5>
-  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 <typename U1,
-            typename T1>
-  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 <typename U1, typename U2,
-            typename T1, typename T2>
-  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 <typename U1, typename U2, typename U3,
-            typename T1, typename T2, typename T3>
-  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 <typename U1, typename U2, typename U3, typename U4,
-            typename T1, typename T2, typename T3, typename T4>
-  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 <typename U1, typename U2, typename U3, typename U4, typename U5,
-            typename T1, typename T2, typename T3, typename T4, typename T5>
-  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 <typename MEM, typename OBJ>
-void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj) 
-{
-  return Schedule (time, MakeEvent (mem_ptr, obj));
-}
-
-template <typename MEM, typename OBJ,
-          typename T1>
-void WallclockSimulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1) 
-{
-  return Schedule (time, MakeEvent (mem_ptr, obj, a1));
-}
-
-template <typename MEM, typename OBJ, 
-          typename T1, typename T2>
-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 <typename MEM, typename OBJ,
-          typename T1, typename T2, typename T3>
-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 <typename MEM, typename OBJ, 
-          typename T1, typename T2, typename T3, typename T4>
-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 <typename MEM, typename OBJ, 
-          typename T1, typename T2, typename T3, typename T4, typename T5>
-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 <typename U1, typename T1>
-void WallclockSimulator::Schedule (Time const &time, void (*f) (U1), T1 a1) 
-{
-  return Schedule (time, MakeEvent (f, a1));
-}
-
-template <typename U1, typename U2, 
-          typename T1, typename T2>
-void WallclockSimulator::Schedule (Time const &time, void (*f) (U1,U2), T1 a1, T2 a2) 
-{
-  return Schedule (time, MakeEvent (f, a1, a2));
-}
-
-template <typename U1, typename U2, typename U3,
-          typename T1, typename T2, typename T3>
-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 <typename U1, typename U2, typename U3, typename U4,
-          typename T1, typename T2, typename T3, typename T4>
-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 <typename U1, typename U2, typename U3, typename U4, typename U5,
-          typename T1, typename T2, typename T3, typename T4, typename T5>
-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 <typename MEM, typename OBJ>
-void
-WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj) 
-{
-  return ScheduleNow (MakeEvent (mem_ptr, obj));
-}
-
-template <typename MEM, typename OBJ, 
-          typename T1>
-void
-WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1) 
-{
-  return ScheduleNow (MakeEvent (mem_ptr, obj, a1));
-}
-
-template <typename MEM, typename OBJ, 
-          typename T1, typename T2>
-void
-WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2) 
-{
-  return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2));
-}
-
-template <typename MEM, typename OBJ, 
-          typename T1, typename T2, typename T3>
-void
-WallclockSimulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) 
-{
-  return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3));
-}
-
-template <typename MEM, typename OBJ, 
-          typename T1, typename T2, typename T3, typename T4>
-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 <typename MEM, typename OBJ, 
-          typename T1, typename T2, typename T3, typename T4, typename T5>
-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 <typename U1,
-          typename T1>
-void
-WallclockSimulator::ScheduleNow (void (*f) (U1), T1 a1) 
-{
-  return ScheduleNow (MakeEvent (f, a1));
-}
-
-template <typename U1, typename U2,
-          typename T1, typename T2>
-void
-WallclockSimulator::ScheduleNow (void (*f) (U1,U2), T1 a1, T2 a2) 
-{
-  return ScheduleNow (MakeEvent (f, a1, a2));
-}
-
-template <typename U1, typename U2, typename U3,
-          typename T1, typename T2, typename T3>
-void
-WallclockSimulator::ScheduleNow (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3)
-{
-  return ScheduleNow (MakeEvent (f, a1, a2, a3));
-}
-
-template <typename U1, typename U2, typename U3, typename U4,
-          typename T1, typename T2, typename T3, typename T4>
-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 <typename U1, typename U2, typename U3, typename U4, typename U5,
-          typename T1, typename T2, typename T3, typename T4, typename T5>
-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 */
--- a/src/simulator/wscript	Mon Oct 27 12:17:38 2008 +0100
+++ b/src/simulator/wscript	Mon Oct 27 12:47:33 2008 +0100
@@ -76,7 +76,6 @@
         'event-id.h',
         'event-impl.h',
         'simulator.h',
-        'wallclock-simulator.h',
         'simulator-impl.h',
         'default-simulator-impl.h',
         'scheduler.h',