branch merge
authorCraig Dowell <craigdo@ee.washington.edu>
Mon, 21 Jul 2008 15:53:03 -0700
changeset 3472 190ce8107098
parent 3471 0896bd4a38dd (current diff)
parent 3468 0bb5275704fc (diff)
child 3473 6bce86ea4778
branch merge
RELEASE_NOTES
--- a/RELEASE_NOTES	Fri Jul 18 21:59:43 2008 -0700
+++ b/RELEASE_NOTES	Mon Jul 21 15:53:03 2008 -0700
@@ -3,8 +3,13 @@
 
 This file contains ns-3 release notes (most recent releases first).
 
-Next Release (in ns-3-dev)
-==========================
+Release 3.2 (pending)
+=====================
+
+New functionality added
+-----------------------
+- Add learning bridge (IEEE 802.1D) implementation: BridgeNetDevice;
+- Python bindings added
 - Kernel thread support (class SystemThread) added;
 - Kernel mutual exclusion support (class SystemMutex) added;
 - Kernel critical section RAII support (class CriticalSection) added;
@@ -15,6 +20,44 @@
   implementation a replaceable component via the 
   "SimulatorImplementationType" global value.
   Hint:  try ./waf --run "udp-echo --PrintGlobals"
+- implement Packet::PeekHeader and Packet::PeekTrailer to avoid evil workarounds when receiving tcp packets. 
+
+Bugs fixed
+----------
+- add optional support for TCP and UDP checksum (bug 236)
+- close socket upon PacketSink::StopApplication (bug 243)
+- fix build failure with gcc 4.3.x (bug 245)
+
+API changes from 3.1 to 3.2
+---------------------------
+- several helper APIs related to attribute setting (changeset d5f8e5fae1c6, 
+  bug 234); old variants are currently deprecated API and will be removed
+  in a future release
+- remove references to Parameter in helper APIs (changeset 3cdd9d60f7c7,
+  bug 232); old variants are currently deprecated API and will be removed
+  in a future release
+- New NetDevice APIs: SendFrom and SetPromiscRxCallback;
+
+In order to support the learning bridge, some API changes in Node and
+NetDevice were made.
+
+In NetDevice, devices may optionally implement the virtual methods
+SendFrom, SupportsPromiscuous, and SetPromiscReceiveCallback.  If
+these new methods are not implemented, the code still compiles and
+works, except if they are used in a BridgeNetDevice.
+
+In Node, the signature for protocol handler callbacks (used in
+AddProtocolHandler) has changed.  Now it looks like:
+
+  void ReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet> packet, 
+    uint16_t protocol, Address const &source, Address const &destination, 
+    PacketType packetType);
+
+The extra parameters 'destination' and 'packetType' are present for
+all protocol handlers, but only have valid values for promiscuous
+protocol handlers.  Protocol handlers are non-promiscuous by default,
+so no action is needed to adapt existing code besides updating the
+callback signature.
 
 Release 3.1 (2008/06/30)
 ========================
--- a/bindings/python/callbacks_list.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/callbacks_list.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,12 +1,13 @@
 callback_classes = [
     ['void', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
-    ['bool', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet>', 'unsigned short', 'ns3::Address const&', 'ns3::empty', 'ns3::empty'],
     ['void', 'ns3::Ptr<ns3::Socket>', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['void', 'ns3::Ptr<ns3::Socket>', 'unsigned int', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['void', 'ns3::Ptr<ns3::Socket>', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['bool', 'ns3::Ptr<ns3::Socket>', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['void', 'ns3::Ptr<ns3::Packet>', 'ns3::Mac48Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
-    ['void', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet>', 'unsigned short', 'ns3::Address const&', 'ns3::empty', 'ns3::empty'],
+    ['bool', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet>', 'unsigned short', 'ns3::Address const&', 'ns3::Address const&', 'ns3::NetDevice::PacketType'],
+    ['bool', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet>', 'unsigned short', 'ns3::Address const&', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::Ptr<ns3::NetDevice>', 'ns3::Ptr<ns3::Packet>', 'unsigned short', 'ns3::Address const&', 'ns3::Address const&', 'ns3::NetDevice::PacketType'],
     ['void', 'ns3::Ptr<ns3::Packet>', 'double', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['void', 'ns3::Ptr<ns3::Packet>', 'double', 'ns3::WifiMode', 'ns3::WifiPreamble', 'ns3::empty', 'ns3::empty'],
 ]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bindings/python/ns3_module_bridge.py	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,263 @@
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
+
+def register_types(module):
+    root_module = module.get_root()
+    
+    ## bridge-net-device.h: ns3::BridgeNetDevice [class]
+    module.add_class('BridgeNetDevice', parent=root_module['ns3::NetDevice'])
+    ## bridge-channel.h: ns3::BridgeChannel [class]
+    module.add_class('BridgeChannel', parent=root_module['ns3::Channel'])
+    
+    ## Register a nested module for the namespace internal
+    
+    nested_module = module.add_cpp_namespace('internal')
+    register_types_ns3_internal(nested_module)
+    
+    
+    ## Register a nested module for the namespace TimeStepPrecision
+    
+    nested_module = module.add_cpp_namespace('TimeStepPrecision')
+    register_types_ns3_TimeStepPrecision(nested_module)
+    
+    
+    ## Register a nested module for the namespace Config
+    
+    nested_module = module.add_cpp_namespace('Config')
+    register_types_ns3_Config(nested_module)
+    
+    
+    ## Register a nested module for the namespace olsr
+    
+    nested_module = module.add_cpp_namespace('olsr')
+    register_types_ns3_olsr(nested_module)
+    
+
+def register_types_ns3_internal(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_TimeStepPrecision(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_Config(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_olsr(module):
+    root_module = module.get_root()
+    
+
+def register_methods(root_module):
+    register_Ns3BridgeNetDevice_methods(root_module, root_module['ns3::BridgeNetDevice'])
+    register_Ns3BridgeChannel_methods(root_module, root_module['ns3::BridgeChannel'])
+    return
+
+def register_Ns3BridgeNetDevice_methods(root_module, cls):
+    ## bridge-net-device.h: static ns3::TypeId ns3::BridgeNetDevice::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## bridge-net-device.h: ns3::BridgeNetDevice::BridgeNetDevice() [constructor]
+    cls.add_constructor([])
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::AddBridgePort(ns3::Ptr<ns3::NetDevice> bridgePort) [member function]
+    cls.add_method('AddBridgePort', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'bridgePort')])
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::SetName(std::string const name) [member function]
+    cls.add_method('SetName', 
+                   'void', 
+                   [param('std::string', 'name', is_const=True)], 
+                   is_virtual=True)
+    ## bridge-net-device.h: std::string ns3::BridgeNetDevice::GetName() const [member function]
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::SetIfIndex(uint32_t const index) [member function]
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t', 'index', is_const=True)], 
+                   is_virtual=True)
+    ## bridge-net-device.h: uint32_t ns3::BridgeNetDevice::GetIfIndex() const [member function]
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: ns3::Ptr<ns3::Channel> ns3::BridgeNetDevice::GetChannel() const [member function]
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: ns3::Address ns3::BridgeNetDevice::GetAddress() const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::SetMtu(uint16_t const mtu) [member function]
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t', 'mtu', is_const=True)], 
+                   is_virtual=True)
+    ## bridge-net-device.h: uint16_t ns3::BridgeNetDevice::GetMtu() const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::IsLinkUp() const [member function]
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::SetLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
+    cls.add_method('SetLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::IsBroadcast() const [member function]
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: ns3::Address ns3::BridgeNetDevice::GetBroadcast() const [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::IsMulticast() const [member function]
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: ns3::Address ns3::BridgeNetDevice::GetMulticast() const [member function]
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: ns3::Address ns3::BridgeNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
+    cls.add_method('MakeMulticastAddress', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::IsPointToPoint() const [member function]
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'source', is_const=True), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## bridge-net-device.h: ns3::Ptr<ns3::Node> ns3::BridgeNetDevice::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::NeedsArp() const [member function]
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> cb) [member function]
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::SetPromiscReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType> cb) [member function]
+    cls.add_method('SetPromiscReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType >', 'cb')], 
+                   is_virtual=True)
+    ## bridge-net-device.h: bool ns3::BridgeNetDevice::SupportsPromiscuous() const [member function]
+    cls.add_method('SupportsPromiscuous', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::ReceiveFromDevice(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<ns3::Packet> packet, uint16_t protocol, ns3::Address const & source, ns3::Address const & destination, ns3::NetDevice::PacketType packetType) [member function]
+    cls.add_method('ReceiveFromDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::Packet >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Address&', 'source', is_const=True), param('ns3::Address&', 'destination', is_const=True), param('ns3::NetDevice::PacketType', 'packetType')], 
+                   visibility='protected')
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::ForwardUnicast(ns3::Ptr<ns3::NetDevice> incomingPort, ns3::Ptr<ns3::Packet> packet, uint16_t protocol, ns3::Mac48Address src, ns3::Mac48Address dst) [member function]
+    cls.add_method('ForwardUnicast', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'incomingPort'), param('ns3::Ptr< ns3::Packet >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'src'), param('ns3::Mac48Address', 'dst')], 
+                   visibility='protected')
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::ForwardBroadcast(ns3::Ptr<ns3::NetDevice> incomingPort, ns3::Ptr<ns3::Packet> packet, uint16_t protocol, ns3::Mac48Address src, ns3::Mac48Address dst) [member function]
+    cls.add_method('ForwardBroadcast', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'incomingPort'), param('ns3::Ptr< ns3::Packet >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'src'), param('ns3::Mac48Address', 'dst')], 
+                   visibility='protected')
+    ## bridge-net-device.h: void ns3::BridgeNetDevice::Learn(ns3::Mac48Address source, ns3::Ptr<ns3::NetDevice> port) [member function]
+    cls.add_method('Learn', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'source'), param('ns3::Ptr< ns3::NetDevice >', 'port')], 
+                   visibility='protected')
+    ## bridge-net-device.h: ns3::Ptr<ns3::NetDevice> ns3::BridgeNetDevice::GetLearnedState(ns3::Mac48Address source) [member function]
+    cls.add_method('GetLearnedState', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('ns3::Mac48Address', 'source')], 
+                   visibility='protected')
+    return
+
+def register_Ns3BridgeChannel_methods(root_module, cls):
+    ## bridge-channel.h: static ns3::TypeId ns3::BridgeChannel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## bridge-channel.h: ns3::BridgeChannel::BridgeChannel() [constructor]
+    cls.add_constructor([])
+    ## bridge-channel.h: void ns3::BridgeChannel::AddChannel(ns3::Ptr<ns3::Channel> bridgedChannel) [member function]
+    cls.add_method('AddChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Channel >', 'bridgedChannel')])
+    ## bridge-channel.h: uint32_t ns3::BridgeChannel::GetNDevices() const [member function]
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## bridge-channel.h: ns3::Ptr<ns3::NetDevice> ns3::BridgeChannel::GetDevice(uint32_t i) const [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    return
+
+def register_functions(root_module):
+    module = root_module
+    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)
+    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
+    return
+
+def register_functions_ns3_internal(module, root_module):
+    return
+
+def register_functions_ns3_TimeStepPrecision(module, root_module):
+    return
+
+def register_functions_ns3_Config(module, root_module):
+    return
+
+def register_functions_ns3_olsr(module, root_module):
+    return
+
--- a/bindings/python/ns3_module_common.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_common.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -6,7 +6,7 @@
     ## error-model.h: ns3::ErrorUnit [enumeration]
     module.add_enum('ErrorUnit', ['EU_BIT', 'EU_BYTE', 'EU_PKT'])
     ## packet.h: ns3::Packet [class]
-    module.add_class('Packet', incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount')
+    module.add_class('Packet', memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## packet.h: ns3::TagIterator [class]
     module.add_class('TagIterator')
     ## packet.h: ns3::TagIterator::Item [class]
@@ -24,27 +24,27 @@
     ## buffer.h: ns3::Buffer::Iterator [class]
     module.add_class('Iterator', outer_class=root_module['ns3::Buffer'])
     ## chunk.h: ns3::Chunk [class]
-    module.add_class('Chunk', allow_subclassing=True, parent=root_module['ns3::ObjectBase'])
+    module.add_class('Chunk', parent=root_module['ns3::ObjectBase'])
     ## data-rate.h: ns3::DataRate [class]
     module.add_class('DataRate')
     ## tag.h: ns3::Tag [class]
-    module.add_class('Tag', allow_subclassing=True, parent=root_module['ns3::ObjectBase'])
+    module.add_class('Tag', parent=root_module['ns3::ObjectBase'])
     ## pcap-writer.h: ns3::PcapWriter [class]
     module.add_class('PcapWriter', parent=root_module['ns3::RefCountBase'])
     ## data-rate.h: ns3::DataRateChecker [class]
     module.add_class('DataRateChecker', parent=root_module['ns3::AttributeChecker'])
     ## error-model.h: ns3::ErrorModel [class]
-    module.add_class('ErrorModel', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('ErrorModel', parent=root_module['ns3::Object'])
     ## header.h: ns3::Header [class]
-    module.add_class('Header', allow_subclassing=True, parent=root_module['ns3::Chunk'])
+    module.add_class('Header', parent=root_module['ns3::Chunk'])
     ## trailer.h: ns3::Trailer [class]
-    module.add_class('Trailer', allow_subclassing=True, parent=root_module['ns3::Chunk'])
+    module.add_class('Trailer', parent=root_module['ns3::Chunk'])
     ## error-model.h: ns3::ListErrorModel [class]
-    module.add_class('ListErrorModel', allow_subclassing=True, parent=root_module['ns3::ErrorModel'])
+    module.add_class('ListErrorModel', parent=root_module['ns3::ErrorModel'])
     ## data-rate.h: ns3::DataRateValue [class]
-    module.add_class('DataRateValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('DataRateValue', parent=root_module['ns3::AttributeValue'])
     ## error-model.h: ns3::RateErrorModel [class]
-    module.add_class('RateErrorModel', allow_subclassing=True, parent=root_module['ns3::ErrorModel'])
+    module.add_class('RateErrorModel', parent=root_module['ns3::ErrorModel'])
     
     ## Register a nested module for the namespace internal
     
@@ -111,110 +111,211 @@
 
 def register_Ns3Packet_methods(root_module, cls):
     ## packet.h: ns3::Packet::Packet() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## packet.h: ns3::Packet::Packet(ns3::Packet const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Packet&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Packet&', 'o', is_const=True)])
     ## packet.h: ns3::Packet::Packet(uint32_t size) [constructor]
-    cls.add_constructor([param('uint32_t', 'size')], visibility='public')
+    cls.add_constructor([param('uint32_t', 'size')])
     ## packet.h: ns3::Packet::Packet(uint8_t const * buffer, uint32_t size) [constructor]
-    cls.add_constructor([param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint32_t', 'size')], visibility='public')
+    cls.add_constructor([param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint32_t', 'size')])
     ## packet.h: void ns3::Packet::AddAtEnd(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('AddAtEnd', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet')])
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')])
     ## packet.h: void ns3::Packet::AddHeader(ns3::Header const & header) [member function]
-    cls.add_method('AddHeader', 'void', [param('ns3::Header&', 'header', is_const=True)])
+    cls.add_method('AddHeader', 
+                   'void', 
+                   [param('ns3::Header&', 'header', is_const=True)])
     ## packet.h: void ns3::Packet::AddPaddingAtEnd(uint32_t size) [member function]
-    cls.add_method('AddPaddingAtEnd', 'void', [param('uint32_t', 'size')])
+    cls.add_method('AddPaddingAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'size')])
     ## packet.h: void ns3::Packet::AddTag(ns3::Tag const & tag) const [member function]
-    cls.add_method('AddTag', 'void', [param('ns3::Tag&', 'tag', is_const=True)], is_const=True)
+    cls.add_method('AddTag', 
+                   'void', 
+                   [param('ns3::Tag&', 'tag', is_const=True)], 
+                   is_const=True)
     ## packet.h: void ns3::Packet::AddTrailer(ns3::Trailer const & trailer) [member function]
-    cls.add_method('AddTrailer', 'void', [param('ns3::Trailer&', 'trailer', is_const=True)])
+    cls.add_method('AddTrailer', 
+                   'void', 
+                   [param('ns3::Trailer&', 'trailer', is_const=True)])
     ## packet.h: ns3::PacketMetadata::ItemIterator ns3::Packet::BeginItem() const [member function]
-    cls.add_method('BeginItem', 'ns3::PacketMetadata::ItemIterator', [], is_const=True)
+    cls.add_method('BeginItem', 
+                   'ns3::PacketMetadata::ItemIterator', 
+                   [], 
+                   is_const=True)
     ## packet.h: ns3::Ptr<ns3::Packet> ns3::Packet::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::Packet >', [], is_const=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_const=True)
     ## packet.h: ns3::Ptr<ns3::Packet> ns3::Packet::CreateFragment(uint32_t start, uint32_t length) const [member function]
-    cls.add_method('CreateFragment', 'ns3::Ptr< ns3::Packet >', [param('uint32_t', 'start'), param('uint32_t', 'length')], is_const=True)
+    cls.add_method('CreateFragment', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
+                   is_const=True)
     ## packet.h: void ns3::Packet::Deserialize(ns3::Buffer buffer) [member function]
-    cls.add_method('Deserialize', 'void', [param('ns3::Buffer', 'buffer')])
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::Buffer', 'buffer')])
     ## packet.h: static void ns3::Packet::EnableMetadata() [member function]
-    cls.add_method('EnableMetadata', 'void', [], is_static=True)
+    cls.add_method('EnableMetadata', 
+                   'void', 
+                   [], 
+                   is_static=True)
     ## packet.h: bool ns3::Packet::FindFirstMatchingTag(ns3::Tag & tag) const [member function]
-    cls.add_method('FindFirstMatchingTag', 'bool', [param('ns3::Tag&', 'tag')], is_const=True)
+    cls.add_method('FindFirstMatchingTag', 
+                   'bool', 
+                   [param('ns3::Tag&', 'tag')], 
+                   is_const=True)
     ## packet.h: uint32_t ns3::Packet::GetSize() const [member function]
-    cls.add_method('GetSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## packet.h: ns3::TagIterator ns3::Packet::GetTagIterator() const [member function]
-    cls.add_method('GetTagIterator', 'ns3::TagIterator', [], is_const=True)
+    cls.add_method('GetTagIterator', 
+                   'ns3::TagIterator', 
+                   [], 
+                   is_const=True)
     ## packet.h: uint32_t ns3::Packet::GetUid() const [member function]
-    cls.add_method('GetUid', 'uint32_t', [], is_const=True)
+    cls.add_method('GetUid', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## packet.h: uint8_t const * ns3::Packet::PeekData() const [member function]
-    cls.add_method('PeekData', retval('uint8_t *', is_const=True, caller_owns_return=False), [], is_const=True)
+    cls.add_method('PeekData', 
+                   retval('uint8_t *', is_const=True, caller_owns_return=False), 
+                   [], 
+                   is_const=True)
     ## packet.h: uint32_t ns3::Packet::PeekHeader(ns3::Header & header) [member function]
-    cls.add_method('PeekHeader', 'uint32_t', [param('ns3::Header&', 'header')])
+    cls.add_method('PeekHeader', 
+                   'uint32_t', 
+                   [param('ns3::Header&', 'header')])
     ## packet.h: uint32_t ns3::Packet::PeekTrailer(ns3::Trailer & trailer) [member function]
-    cls.add_method('PeekTrailer', 'uint32_t', [param('ns3::Trailer&', 'trailer')])
+    cls.add_method('PeekTrailer', 
+                   'uint32_t', 
+                   [param('ns3::Trailer&', 'trailer')])
     ## packet.h: void ns3::Packet::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## packet.h: void ns3::Packet::PrintTags(std::ostream & os) const [member function]
-    cls.add_method('PrintTags', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('PrintTags', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## packet.h: void ns3::Packet::RemoveAllTags() [member function]
-    cls.add_method('RemoveAllTags', 'void', [])
+    cls.add_method('RemoveAllTags', 
+                   'void', 
+                   [])
     ## packet.h: void ns3::Packet::RemoveAtEnd(uint32_t size) [member function]
-    cls.add_method('RemoveAtEnd', 'void', [param('uint32_t', 'size')])
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'size')])
     ## packet.h: void ns3::Packet::RemoveAtStart(uint32_t size) [member function]
-    cls.add_method('RemoveAtStart', 'void', [param('uint32_t', 'size')])
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'size')])
     ## packet.h: uint32_t ns3::Packet::RemoveHeader(ns3::Header & header) [member function]
-    cls.add_method('RemoveHeader', 'uint32_t', [param('ns3::Header&', 'header')])
+    cls.add_method('RemoveHeader', 
+                   'uint32_t', 
+                   [param('ns3::Header&', 'header')])
     ## packet.h: uint32_t ns3::Packet::RemoveTrailer(ns3::Trailer & trailer) [member function]
-    cls.add_method('RemoveTrailer', 'uint32_t', [param('ns3::Trailer&', 'trailer')])
+    cls.add_method('RemoveTrailer', 
+                   'uint32_t', 
+                   [param('ns3::Trailer&', 'trailer')])
     ## packet.h: ns3::Buffer ns3::Packet::Serialize() const [member function]
-    cls.add_method('Serialize', 'ns3::Buffer', [], is_const=True)
+    cls.add_method('Serialize', 
+                   'ns3::Buffer', 
+                   [], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3TagIterator_methods(root_module, cls):
     ## packet.h: bool ns3::TagIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 'bool', [], is_const=True)
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## packet.h: ns3::TagIterator::Item ns3::TagIterator::Next() [member function]
-    cls.add_method('Next', 'ns3::TagIterator::Item', [])
+    cls.add_method('Next', 
+                   'ns3::TagIterator::Item', 
+                   [])
     return
 
 def register_Ns3TagIteratorItem_methods(root_module, cls):
     ## packet.h: ns3::TypeId ns3::TagIterator::Item::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_const=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
     ## packet.h: uint32_t ns3::TagIterator::Item::GetStart() const [member function]
-    cls.add_method('GetStart', 'uint32_t', [], is_const=True)
+    cls.add_method('GetStart', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## packet.h: uint32_t ns3::TagIterator::Item::GetEnd() const [member function]
-    cls.add_method('GetEnd', 'uint32_t', [], is_const=True)
+    cls.add_method('GetEnd', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## packet.h: void ns3::TagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
-    cls.add_method('GetTag', 'void', [param('ns3::Tag&', 'tag')], is_const=True)
+    cls.add_method('GetTag', 
+                   'void', 
+                   [param('ns3::Tag&', 'tag')], 
+                   is_const=True)
     return
 
 def register_Ns3TagList_methods(root_module, cls):
     ## tag-list.h: ns3::TagList::TagList() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## tag-list.h: ns3::TagList::TagList(ns3::TagList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::TagList&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::TagList&', 'o', is_const=True)])
     ## tag-list.h: ns3::TagBuffer ns3::TagList::Add(ns3::TypeId tid, uint32_t bufferSize, int32_t start, int32_t end) [member function]
-    cls.add_method('Add', 'ns3::TagBuffer', [param('ns3::TypeId', 'tid'), param('uint32_t', 'bufferSize'), param('int32_t', 'start'), param('int32_t', 'end')])
+    cls.add_method('Add', 
+                   'ns3::TagBuffer', 
+                   [param('ns3::TypeId', 'tid'), param('uint32_t', 'bufferSize'), param('int32_t', 'start'), param('int32_t', 'end')])
     ## tag-list.h: void ns3::TagList::Add(ns3::TagList const & o) [member function]
-    cls.add_method('Add', 'void', [param('ns3::TagList&', 'o', is_const=True)])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::TagList&', 'o', is_const=True)])
     ## tag-list.h: void ns3::TagList::RemoveAll() [member function]
-    cls.add_method('RemoveAll', 'void', [])
+    cls.add_method('RemoveAll', 
+                   'void', 
+                   [])
     ## tag-list.h: ns3::TagList::Iterator ns3::TagList::Begin(int32_t offsetStart, int32_t offsetEnd) const [member function]
-    cls.add_method('Begin', 'ns3::TagList::Iterator', [param('int32_t', 'offsetStart'), param('int32_t', 'offsetEnd')], is_const=True)
+    cls.add_method('Begin', 
+                   'ns3::TagList::Iterator', 
+                   [param('int32_t', 'offsetStart'), param('int32_t', 'offsetEnd')], 
+                   is_const=True)
     ## tag-list.h: void ns3::TagList::AddAtEnd(int32_t adjustment, int32_t appendOffset) [member function]
-    cls.add_method('AddAtEnd', 'void', [param('int32_t', 'adjustment'), param('int32_t', 'appendOffset')])
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('int32_t', 'adjustment'), param('int32_t', 'appendOffset')])
     ## tag-list.h: void ns3::TagList::AddAtStart(int32_t adjustment, int32_t prependOffset) [member function]
-    cls.add_method('AddAtStart', 'void', [param('int32_t', 'adjustment'), param('int32_t', 'prependOffset')])
+    cls.add_method('AddAtStart', 
+                   'void', 
+                   [param('int32_t', 'adjustment'), param('int32_t', 'prependOffset')])
     return
 
 def register_Ns3TagListIterator_methods(root_module, cls):
     ## tag-list.h: bool ns3::TagList::Iterator::HasNext() const [member function]
-    cls.add_method('HasNext', 'bool', [], is_const=True)
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## tag-list.h: ns3::TagList::Iterator::Item ns3::TagList::Iterator::Next() [member function]
-    cls.add_method('Next', 'ns3::TagList::Iterator::Item', [])
+    cls.add_method('Next', 
+                   'ns3::TagList::Iterator::Item', 
+                   [])
     ## tag-list.h: uint32_t ns3::TagList::Iterator::GetOffsetStart() const [member function]
-    cls.add_method('GetOffsetStart', 'uint32_t', [], is_const=True)
+    cls.add_method('GetOffsetStart', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     return
 
 def register_Ns3TagListIteratorItem_methods(root_module, cls):
@@ -229,208 +330,384 @@
     ## tag-list.h: ns3::TagList::Iterator::Item::buf [variable]
     cls.add_instance_attribute('buf', 'ns3::TagBuffer', is_const=False)
     ## tag-list.h: ns3::TagList::Iterator::Item::Item(ns3::TagBuffer buf) [constructor]
-    cls.add_constructor([param('ns3::TagBuffer', 'buf')], visibility='public')
+    cls.add_constructor([param('ns3::TagBuffer', 'buf')])
     return
 
 def register_Ns3TagBuffer_methods(root_module, cls):
     ## tag-buffer.h: ns3::TagBuffer::TagBuffer(uint8_t * start, uint8_t * end) [constructor]
-    cls.add_constructor([param('uint8_t *', 'start'), param('uint8_t *', 'end')], visibility='public')
+    cls.add_constructor([param('uint8_t *', 'start'), param('uint8_t *', 'end')])
     ## tag-buffer.h: void ns3::TagBuffer::TrimAtEnd(uint32_t trim) [member function]
-    cls.add_method('TrimAtEnd', 'void', [param('uint32_t', 'trim')])
+    cls.add_method('TrimAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'trim')])
     ## tag-buffer.h: void ns3::TagBuffer::CopyFrom(ns3::TagBuffer o) [member function]
-    cls.add_method('CopyFrom', 'void', [param('ns3::TagBuffer', 'o')])
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'o')])
     ## tag-buffer.h: void ns3::TagBuffer::WriteU8(uint8_t v) [member function]
-    cls.add_method('WriteU8', 'void', [param('uint8_t', 'v')])
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'v')])
     ## tag-buffer.h: void ns3::TagBuffer::WriteU16(uint16_t data) [member function]
-    cls.add_method('WriteU16', 'void', [param('uint16_t', 'data')])
+    cls.add_method('WriteU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
     ## tag-buffer.h: void ns3::TagBuffer::WriteU32(uint32_t data) [member function]
-    cls.add_method('WriteU32', 'void', [param('uint32_t', 'data')])
+    cls.add_method('WriteU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
     ## tag-buffer.h: void ns3::TagBuffer::WriteU64(uint64_t v) [member function]
-    cls.add_method('WriteU64', 'void', [param('uint64_t', 'v')])
+    cls.add_method('WriteU64', 
+                   'void', 
+                   [param('uint64_t', 'v')])
     ## tag-buffer.h: void ns3::TagBuffer::WriteDouble(double v) [member function]
-    cls.add_method('WriteDouble', 'void', [param('double', 'v')])
+    cls.add_method('WriteDouble', 
+                   'void', 
+                   [param('double', 'v')])
     ## tag-buffer.h: void ns3::TagBuffer::Write(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Write', 'void', [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint32_t', 'size')])
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint32_t', 'size')])
     ## tag-buffer.h: uint8_t ns3::TagBuffer::ReadU8() [member function]
-    cls.add_method('ReadU8', 'uint8_t', [])
+    cls.add_method('ReadU8', 
+                   'uint8_t', 
+                   [])
     ## tag-buffer.h: uint16_t ns3::TagBuffer::ReadU16() [member function]
-    cls.add_method('ReadU16', 'uint16_t', [])
+    cls.add_method('ReadU16', 
+                   'uint16_t', 
+                   [])
     ## tag-buffer.h: uint32_t ns3::TagBuffer::ReadU32() [member function]
-    cls.add_method('ReadU32', 'uint32_t', [])
+    cls.add_method('ReadU32', 
+                   'uint32_t', 
+                   [])
     ## tag-buffer.h: uint64_t ns3::TagBuffer::ReadU64() [member function]
-    cls.add_method('ReadU64', 'uint64_t', [])
+    cls.add_method('ReadU64', 
+                   'uint64_t', 
+                   [])
     ## tag-buffer.h: double ns3::TagBuffer::ReadDouble() [member function]
-    cls.add_method('ReadDouble', 'double', [])
+    cls.add_method('ReadDouble', 
+                   'double', 
+                   [])
     ## tag-buffer.h: void ns3::TagBuffer::Read(uint8_t * buffer, uint32_t size) [member function]
-    cls.add_method('Read', 'void', [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
     return
 
 def register_Ns3Buffer_methods(root_module, cls):
     ## buffer.h: uint32_t ns3::Buffer::GetSize() const [member function]
-    cls.add_method('GetSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## buffer.h: uint8_t const * ns3::Buffer::PeekData() const [member function]
-    cls.add_method('PeekData', retval('uint8_t *', is_const=True, caller_owns_return=False), [], is_const=True)
+    cls.add_method('PeekData', 
+                   retval('uint8_t *', is_const=True, caller_owns_return=False), 
+                   [], 
+                   is_const=True)
     ## buffer.h: bool ns3::Buffer::AddAtStart(uint32_t start) [member function]
-    cls.add_method('AddAtStart', 'bool', [param('uint32_t', 'start')])
+    cls.add_method('AddAtStart', 
+                   'bool', 
+                   [param('uint32_t', 'start')])
     ## buffer.h: bool ns3::Buffer::AddAtEnd(uint32_t end) [member function]
-    cls.add_method('AddAtEnd', 'bool', [param('uint32_t', 'end')])
+    cls.add_method('AddAtEnd', 
+                   'bool', 
+                   [param('uint32_t', 'end')])
     ## buffer.h: void ns3::Buffer::AddAtEnd(ns3::Buffer const & o) [member function]
-    cls.add_method('AddAtEnd', 'void', [param('ns3::Buffer&', 'o', is_const=True)])
+    cls.add_method('AddAtEnd', 
+                   'void', 
+                   [param('ns3::Buffer&', 'o', is_const=True)])
     ## buffer.h: void ns3::Buffer::RemoveAtStart(uint32_t start) [member function]
-    cls.add_method('RemoveAtStart', 'void', [param('uint32_t', 'start')])
+    cls.add_method('RemoveAtStart', 
+                   'void', 
+                   [param('uint32_t', 'start')])
     ## buffer.h: void ns3::Buffer::RemoveAtEnd(uint32_t end) [member function]
-    cls.add_method('RemoveAtEnd', 'void', [param('uint32_t', 'end')])
+    cls.add_method('RemoveAtEnd', 
+                   'void', 
+                   [param('uint32_t', 'end')])
     ## buffer.h: ns3::Buffer ns3::Buffer::CreateFragment(uint32_t start, uint32_t length) const [member function]
-    cls.add_method('CreateFragment', 'ns3::Buffer', [param('uint32_t', 'start'), param('uint32_t', 'length')], is_const=True)
+    cls.add_method('CreateFragment', 
+                   'ns3::Buffer', 
+                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
+                   is_const=True)
     ## buffer.h: ns3::Buffer::Iterator ns3::Buffer::Begin() const [member function]
-    cls.add_method('Begin', 'ns3::Buffer::Iterator', [], is_const=True)
+    cls.add_method('Begin', 
+                   'ns3::Buffer::Iterator', 
+                   [], 
+                   is_const=True)
     ## buffer.h: ns3::Buffer::Iterator ns3::Buffer::End() const [member function]
-    cls.add_method('End', 'ns3::Buffer::Iterator', [], is_const=True)
+    cls.add_method('End', 
+                   'ns3::Buffer::Iterator', 
+                   [], 
+                   is_const=True)
     ## buffer.h: ns3::Buffer ns3::Buffer::CreateFullCopy() const [member function]
-    cls.add_method('CreateFullCopy', 'ns3::Buffer', [], is_const=True)
+    cls.add_method('CreateFullCopy', 
+                   'ns3::Buffer', 
+                   [], 
+                   is_const=True)
     ## buffer.h: int32_t ns3::Buffer::GetCurrentStartOffset() const [member function]
-    cls.add_method('GetCurrentStartOffset', 'int32_t', [], is_const=True)
+    cls.add_method('GetCurrentStartOffset', 
+                   'int32_t', 
+                   [], 
+                   is_const=True)
     ## buffer.h: int32_t ns3::Buffer::GetCurrentEndOffset() const [member function]
-    cls.add_method('GetCurrentEndOffset', 'int32_t', [], is_const=True)
+    cls.add_method('GetCurrentEndOffset', 
+                   'int32_t', 
+                   [], 
+                   is_const=True)
     ## buffer.h: ns3::Buffer::Buffer(ns3::Buffer const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Buffer&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Buffer&', 'o', is_const=True)])
     ## buffer.h: ns3::Buffer::Buffer() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## buffer.h: ns3::Buffer::Buffer(uint32_t dataSize) [constructor]
-    cls.add_constructor([param('uint32_t', 'dataSize')], visibility='public')
+    cls.add_constructor([param('uint32_t', 'dataSize')])
     return
 
 def register_Ns3BufferIterator_methods(root_module, cls):
     ## buffer.h: ns3::Buffer::Iterator::Iterator() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## buffer.h: void ns3::Buffer::Iterator::Next() [member function]
-    cls.add_method('Next', 'void', [])
+    cls.add_method('Next', 
+                   'void', 
+                   [])
     ## buffer.h: void ns3::Buffer::Iterator::Prev() [member function]
-    cls.add_method('Prev', 'void', [])
+    cls.add_method('Prev', 
+                   'void', 
+                   [])
     ## buffer.h: void ns3::Buffer::Iterator::Next(uint32_t delta) [member function]
-    cls.add_method('Next', 'void', [param('uint32_t', 'delta')])
+    cls.add_method('Next', 
+                   'void', 
+                   [param('uint32_t', 'delta')])
     ## buffer.h: void ns3::Buffer::Iterator::Prev(uint32_t delta) [member function]
-    cls.add_method('Prev', 'void', [param('uint32_t', 'delta')])
+    cls.add_method('Prev', 
+                   'void', 
+                   [param('uint32_t', 'delta')])
     ## buffer.h: uint32_t ns3::Buffer::Iterator::GetDistanceFrom(ns3::Buffer::Iterator const & o) const [member function]
-    cls.add_method('GetDistanceFrom', 'uint32_t', [param('ns3::Buffer::Iterator&', 'o', is_const=True)], is_const=True)
+    cls.add_method('GetDistanceFrom', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator&', 'o', is_const=True)], 
+                   is_const=True)
     ## buffer.h: bool ns3::Buffer::Iterator::IsEnd() const [member function]
-    cls.add_method('IsEnd', 'bool', [], is_const=True)
+    cls.add_method('IsEnd', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## buffer.h: bool ns3::Buffer::Iterator::IsStart() const [member function]
-    cls.add_method('IsStart', 'bool', [], is_const=True)
+    cls.add_method('IsStart', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## buffer.h: void ns3::Buffer::Iterator::WriteU8(uint8_t data) [member function]
-    cls.add_method('WriteU8', 'void', [param('uint8_t', 'data')])
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteU8(uint8_t data, uint32_t len) [member function]
-    cls.add_method('WriteU8', 'void', [param('uint8_t', 'data'), param('uint32_t', 'len')])
+    cls.add_method('WriteU8', 
+                   'void', 
+                   [param('uint8_t', 'data'), param('uint32_t', 'len')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteU16(uint16_t data) [member function]
-    cls.add_method('WriteU16', 'void', [param('uint16_t', 'data')])
+    cls.add_method('WriteU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteU32(uint32_t data) [member function]
-    cls.add_method('WriteU32', 'void', [param('uint32_t', 'data')])
+    cls.add_method('WriteU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteU64(uint64_t data) [member function]
-    cls.add_method('WriteU64', 'void', [param('uint64_t', 'data')])
+    cls.add_method('WriteU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteHtolsbU16(uint16_t data) [member function]
-    cls.add_method('WriteHtolsbU16', 'void', [param('uint16_t', 'data')])
+    cls.add_method('WriteHtolsbU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteHtolsbU32(uint32_t data) [member function]
-    cls.add_method('WriteHtolsbU32', 'void', [param('uint32_t', 'data')])
+    cls.add_method('WriteHtolsbU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteHtolsbU64(uint64_t data) [member function]
-    cls.add_method('WriteHtolsbU64', 'void', [param('uint64_t', 'data')])
+    cls.add_method('WriteHtolsbU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteHtonU16(uint16_t data) [member function]
-    cls.add_method('WriteHtonU16', 'void', [param('uint16_t', 'data')])
+    cls.add_method('WriteHtonU16', 
+                   'void', 
+                   [param('uint16_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteHtonU32(uint32_t data) [member function]
-    cls.add_method('WriteHtonU32', 'void', [param('uint32_t', 'data')])
+    cls.add_method('WriteHtonU32', 
+                   'void', 
+                   [param('uint32_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::WriteHtonU64(uint64_t data) [member function]
-    cls.add_method('WriteHtonU64', 'void', [param('uint64_t', 'data')])
+    cls.add_method('WriteHtonU64', 
+                   'void', 
+                   [param('uint64_t', 'data')])
     ## buffer.h: void ns3::Buffer::Iterator::Write(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Write', 'void', [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint32_t', 'size')])
+    cls.add_method('Write', 
+                   'void', 
+                   [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint32_t', 'size')])
     ## buffer.h: void ns3::Buffer::Iterator::Write(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
-    cls.add_method('Write', 'void', [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')])
+    cls.add_method('Write', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')])
     ## buffer.h: uint8_t ns3::Buffer::Iterator::ReadU8() [member function]
-    cls.add_method('ReadU8', 'uint8_t', [])
+    cls.add_method('ReadU8', 
+                   'uint8_t', 
+                   [])
     ## buffer.h: uint16_t ns3::Buffer::Iterator::ReadU16() [member function]
-    cls.add_method('ReadU16', 'uint16_t', [])
+    cls.add_method('ReadU16', 
+                   'uint16_t', 
+                   [])
     ## buffer.h: uint32_t ns3::Buffer::Iterator::ReadU32() [member function]
-    cls.add_method('ReadU32', 'uint32_t', [])
+    cls.add_method('ReadU32', 
+                   'uint32_t', 
+                   [])
     ## buffer.h: uint64_t ns3::Buffer::Iterator::ReadU64() [member function]
-    cls.add_method('ReadU64', 'uint64_t', [])
+    cls.add_method('ReadU64', 
+                   'uint64_t', 
+                   [])
     ## buffer.h: uint16_t ns3::Buffer::Iterator::ReadNtohU16() [member function]
-    cls.add_method('ReadNtohU16', 'uint16_t', [])
+    cls.add_method('ReadNtohU16', 
+                   'uint16_t', 
+                   [])
     ## buffer.h: uint32_t ns3::Buffer::Iterator::ReadNtohU32() [member function]
-    cls.add_method('ReadNtohU32', 'uint32_t', [])
+    cls.add_method('ReadNtohU32', 
+                   'uint32_t', 
+                   [])
     ## buffer.h: uint64_t ns3::Buffer::Iterator::ReadNtohU64() [member function]
-    cls.add_method('ReadNtohU64', 'uint64_t', [])
+    cls.add_method('ReadNtohU64', 
+                   'uint64_t', 
+                   [])
     ## buffer.h: uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
-    cls.add_method('ReadLsbtohU16', 'uint16_t', [])
+    cls.add_method('ReadLsbtohU16', 
+                   'uint16_t', 
+                   [])
     ## buffer.h: uint32_t ns3::Buffer::Iterator::ReadLsbtohU32() [member function]
-    cls.add_method('ReadLsbtohU32', 'uint32_t', [])
+    cls.add_method('ReadLsbtohU32', 
+                   'uint32_t', 
+                   [])
     ## buffer.h: uint64_t ns3::Buffer::Iterator::ReadLsbtohU64() [member function]
-    cls.add_method('ReadLsbtohU64', 'uint64_t', [])
+    cls.add_method('ReadLsbtohU64', 
+                   'uint64_t', 
+                   [])
     ## buffer.h: void ns3::Buffer::Iterator::Read(uint8_t * buffer, uint32_t size) [member function]
-    cls.add_method('Read', 'void', [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    cls.add_method('Read', 
+                   'void', 
+                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
     ## buffer.h: uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size) [member function]
-    cls.add_method('CalculateIpChecksum', 'uint16_t', [param('uint16_t', 'size')])
+    cls.add_method('CalculateIpChecksum', 
+                   'uint16_t', 
+                   [param('uint16_t', 'size')])
     ## buffer.h: uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size, uint32_t initialChecksum) [member function]
-    cls.add_method('CalculateIpChecksum', 'uint16_t', [param('uint16_t', 'size'), param('uint32_t', 'initialChecksum')])
+    cls.add_method('CalculateIpChecksum', 
+                   'uint16_t', 
+                   [param('uint16_t', 'size'), param('uint32_t', 'initialChecksum')])
     ## buffer.h: uint32_t ns3::Buffer::Iterator::GetSize() const [member function]
-    cls.add_method('GetSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
     ## chunk.h: ns3::Chunk::Chunk() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## chunk.h: ns3::Chunk::Chunk(ns3::Chunk const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Chunk&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Chunk&', 'arg0', is_const=True)])
     ## chunk.h: static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## chunk.h: uint32_t ns3::Chunk::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## chunk.h: void ns3::Chunk::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
 def register_Ns3DataRate_methods(root_module, cls):
     ## data-rate.h: ns3::DataRate::DataRate(ns3::DataRate const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::DataRate&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::DataRate&', 'arg0', is_const=True)])
     ## data-rate.h: ns3::DataRate::DataRate() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## data-rate.h: ns3::DataRate::DataRate(uint64_t bps) [constructor]
-    cls.add_constructor([param('uint64_t', 'bps')], visibility='public')
+    cls.add_constructor([param('uint64_t', 'bps')])
     ## data-rate.h: ns3::DataRate::DataRate(std::string rate) [constructor]
-    cls.add_constructor([param('std::string', 'rate')], visibility='public')
+    cls.add_constructor([param('std::string', 'rate')])
     ## data-rate.h: double ns3::DataRate::CalculateTxTime(uint32_t bytes) const [member function]
-    cls.add_method('CalculateTxTime', 'double', [param('uint32_t', 'bytes')], is_const=True)
+    cls.add_method('CalculateTxTime', 
+                   'double', 
+                   [param('uint32_t', 'bytes')], 
+                   is_const=True)
     ## data-rate.h: uint64_t ns3::DataRate::GetBitRate() const [member function]
-    cls.add_method('GetBitRate', 'uint64_t', [], is_const=True)
+    cls.add_method('GetBitRate', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Tag_methods(root_module, cls):
     ## tag.h: static ns3::TypeId ns3::Tag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## tag.h: uint32_t ns3::Tag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## tag.h: void ns3::Tag::Serialize(ns3::TagBuffer i) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::TagBuffer', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## tag.h: void ns3::Tag::Deserialize(ns3::TagBuffer i) [member function]
-    cls.add_method('Deserialize', 'void', [param('ns3::TagBuffer', 'i')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## tag.h: void ns3::Tag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3PcapWriter_methods(root_module, cls):
     ## pcap-writer.h: ns3::PcapWriter::PcapWriter() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## pcap-writer.h: void ns3::PcapWriter::Open(std::string const & name) [member function]
-    cls.add_method('Open', 'void', [param('std::string&', 'name', is_const=True)])
+    cls.add_method('Open', 
+                   'void', 
+                   [param('std::string&', 'name', is_const=True)])
     ## pcap-writer.h: void ns3::PcapWriter::WriteEthernetHeader() [member function]
-    cls.add_method('WriteEthernetHeader', 'void', [])
+    cls.add_method('WriteEthernetHeader', 
+                   'void', 
+                   [])
     ## pcap-writer.h: void ns3::PcapWriter::WriteIpHeader() [member function]
-    cls.add_method('WriteIpHeader', 'void', [])
+    cls.add_method('WriteIpHeader', 
+                   'void', 
+                   [])
     ## pcap-writer.h: void ns3::PcapWriter::WriteWifiHeader() [member function]
-    cls.add_method('WriteWifiHeader', 'void', [])
+    cls.add_method('WriteWifiHeader', 
+                   'void', 
+                   [])
     ## pcap-writer.h: void ns3::PcapWriter::WritePppHeader() [member function]
-    cls.add_method('WritePppHeader', 'void', [])
+    cls.add_method('WritePppHeader', 
+                   'void', 
+                   [])
     ## pcap-writer.h: void ns3::PcapWriter::WritePacket(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('WritePacket', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet')])
+    cls.add_method('WritePacket', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')])
     return
 
 def register_Ns3DataRateChecker_methods(root_module, cls):
@@ -439,124 +716,234 @@
 
 def register_Ns3ErrorModel_methods(root_module, cls):
     ## error-model.h: static ns3::TypeId ns3::ErrorModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## error-model.h: ns3::ErrorModel::ErrorModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## error-model.h: bool ns3::ErrorModel::IsCorrupt(ns3::Ptr<ns3::Packet> pkt) [member function]
-    cls.add_method('IsCorrupt', 'bool', [param('ns3::Ptr< ns3::Packet >', 'pkt')])
+    cls.add_method('IsCorrupt', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'pkt')])
     ## error-model.h: void ns3::ErrorModel::Reset() [member function]
-    cls.add_method('Reset', 'void', [])
+    cls.add_method('Reset', 
+                   'void', 
+                   [])
     ## error-model.h: void ns3::ErrorModel::Enable() [member function]
-    cls.add_method('Enable', 'void', [])
+    cls.add_method('Enable', 
+                   'void', 
+                   [])
     ## error-model.h: void ns3::ErrorModel::Disable() [member function]
-    cls.add_method('Disable', 'void', [])
+    cls.add_method('Disable', 
+                   'void', 
+                   [])
     ## error-model.h: bool ns3::ErrorModel::IsEnabled() const [member function]
-    cls.add_method('IsEnabled', 'bool', [], is_const=True)
+    cls.add_method('IsEnabled', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## error-model.h: bool ns3::ErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> arg0) [member function]
-    cls.add_method('DoCorrupt', 'bool', [param('ns3::Ptr< ns3::Packet >', 'arg0')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('DoCorrupt', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'arg0')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## error-model.h: void ns3::ErrorModel::DoReset() [member function]
-    cls.add_method('DoReset', 'void', [], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('DoReset', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3Header_methods(root_module, cls):
     ## header.h: ns3::Header::Header() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## header.h: ns3::Header::Header(ns3::Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Header&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Header&', 'arg0', is_const=True)])
     ## header.h: uint32_t ns3::Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## header.h: uint32_t ns3::Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## header.h: static ns3::TypeId ns3::Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## header.h: void ns3::Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## header.h: void ns3::Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Trailer_methods(root_module, cls):
     ## trailer.h: ns3::Trailer::Trailer() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## trailer.h: ns3::Trailer::Trailer(ns3::Trailer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Trailer&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Trailer&', 'arg0', is_const=True)])
     ## trailer.h: uint32_t ns3::Trailer::Deserialize(ns3::Buffer::Iterator end) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'end')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'end')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## trailer.h: uint32_t ns3::Trailer::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## trailer.h: static ns3::TypeId ns3::Trailer::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## trailer.h: void ns3::Trailer::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## trailer.h: void ns3::Trailer::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3ListErrorModel_methods(root_module, cls):
     ## error-model.h: static ns3::TypeId ns3::ListErrorModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## error-model.h: ns3::ListErrorModel::ListErrorModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## error-model.h: std::list<unsigned int, std::allocator<unsigned int> > ns3::ListErrorModel::GetList() const [member function]
-    cls.add_method('GetList', 'std::list< unsigned int, std::allocator< unsigned int > >', [], is_const=True)
+    cls.add_method('GetList', 
+                   'std::list< unsigned int, std::allocator< unsigned int > >', 
+                   [], 
+                   is_const=True)
     ## error-model.h: void ns3::ListErrorModel::SetList(std::list<unsigned int, std::allocator<unsigned int> > const & packetlist) [member function]
-    cls.add_method('SetList', 'void', [param('std::list< unsigned int, std::allocator< unsigned int > >&', 'packetlist', is_const=True)])
+    cls.add_method('SetList', 
+                   'void', 
+                   [param('std::list< unsigned int, std::allocator< unsigned int > >&', 'packetlist', is_const=True)])
     ## error-model.h: bool ns3::ListErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('DoCorrupt', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], visibility='private', is_virtual=True)
+    cls.add_method('DoCorrupt', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
     ## error-model.h: void ns3::ListErrorModel::DoReset() [member function]
-    cls.add_method('DoReset', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoReset', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3DataRateValue_methods(root_module, cls):
     ## data-rate.h: ns3::DataRateValue::DataRateValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## data-rate.h: ns3::DataRateValue::DataRateValue(ns3::DataRate const & value) [constructor]
-    cls.add_constructor([param('ns3::DataRate&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::DataRate&', 'value', is_const=True)])
     ## data-rate.h: void ns3::DataRateValue::Set(ns3::DataRate const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::DataRate&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::DataRate&', 'value', is_const=True)])
     ## data-rate.h: ns3::DataRate ns3::DataRateValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::DataRate', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::DataRate', 
+                   [], 
+                   is_const=True)
     ## data-rate.h: ns3::Ptr<ns3::AttributeValue> ns3::DataRateValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## data-rate.h: std::string ns3::DataRateValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## data-rate.h: bool ns3::DataRateValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3RateErrorModel_methods(root_module, cls):
     ## error-model.h: static ns3::TypeId ns3::RateErrorModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## error-model.h: ns3::RateErrorModel::RateErrorModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## error-model.h: ns3::ErrorUnit ns3::RateErrorModel::GetUnit() const [member function]
-    cls.add_method('GetUnit', 'ns3::ErrorUnit', [], is_const=True)
+    cls.add_method('GetUnit', 
+                   'ns3::ErrorUnit', 
+                   [], 
+                   is_const=True)
     ## error-model.h: void ns3::RateErrorModel::SetUnit(ns3::ErrorUnit error_unit) [member function]
-    cls.add_method('SetUnit', 'void', [param('ns3::ErrorUnit', 'error_unit')])
+    cls.add_method('SetUnit', 
+                   'void', 
+                   [param('ns3::ErrorUnit', 'error_unit')])
     ## error-model.h: double ns3::RateErrorModel::GetRate() const [member function]
-    cls.add_method('GetRate', 'double', [], is_const=True)
+    cls.add_method('GetRate', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## error-model.h: void ns3::RateErrorModel::SetRate(double rate) [member function]
-    cls.add_method('SetRate', 'void', [param('double', 'rate')])
+    cls.add_method('SetRate', 
+                   'void', 
+                   [param('double', 'rate')])
     ## error-model.h: void ns3::RateErrorModel::SetRandomVariable(ns3::RandomVariable const & ranvar) [member function]
-    cls.add_method('SetRandomVariable', 'void', [param('ns3::RandomVariable&', 'ranvar', is_const=True)])
+    cls.add_method('SetRandomVariable', 
+                   'void', 
+                   [param('ns3::RandomVariable&', 'ranvar', is_const=True)])
     ## error-model.h: bool ns3::RateErrorModel::DoCorrupt(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('DoCorrupt', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], visibility='private', is_virtual=True)
+    cls.add_method('DoCorrupt', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
     ## error-model.h: bool ns3::RateErrorModel::DoCorruptPkt(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('DoCorruptPkt', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], visibility='private', is_virtual=True)
+    cls.add_method('DoCorruptPkt', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
     ## error-model.h: bool ns3::RateErrorModel::DoCorruptByte(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('DoCorruptByte', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], visibility='private', is_virtual=True)
+    cls.add_method('DoCorruptByte', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
     ## error-model.h: bool ns3::RateErrorModel::DoCorruptBit(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('DoCorruptBit', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], visibility='private', is_virtual=True)
+    cls.add_method('DoCorruptBit', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
     ## error-model.h: void ns3::RateErrorModel::DoReset() [member function]
-    cls.add_method('DoReset', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoReset', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
     module = root_module
     ## data-rate.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeDataRateChecker() [free function]
-    module.add_function('MakeDataRateChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeDataRateChecker', 
+                        '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_contrib.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_contrib.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -16,7 +16,7 @@
     ## gtk-config-store.h: ns3::GtkConfigStore [class]
     module.add_class('GtkConfigStore')
     ## config-store.h: ns3::ConfigStore [class]
-    module.add_class('ConfigStore', allow_subclassing=True, parent=root_module['ns3::ObjectBase'])
+    module.add_class('ConfigStore', parent=root_module['ns3::ObjectBase'])
     ## delay-jitter-estimation.h: ns3::DelayJitterEstimation [class]
     module.add_class('DelayJitterEstimation')
     
@@ -71,66 +71,103 @@
 
 def register_Ns3Gnuplot_methods(root_module, cls):
     ## gnuplot.h: ns3::Gnuplot::Gnuplot(std::string pngFilename) [constructor]
-    cls.add_constructor([param('std::string', 'pngFilename')], visibility='public')
+    cls.add_constructor([param('std::string', 'pngFilename')])
     ## gnuplot.h: void ns3::Gnuplot::SetLegend(std::string xLegend, std::string yLegend) [member function]
-    cls.add_method('SetLegend', 'void', [param('std::string', 'xLegend'), param('std::string', 'yLegend')])
+    cls.add_method('SetLegend', 
+                   'void', 
+                   [param('std::string', 'xLegend'), param('std::string', 'yLegend')])
     ## gnuplot.h: void ns3::Gnuplot::AddDataset(ns3::GnuplotDataset const & dataset) [member function]
-    cls.add_method('AddDataset', 'void', [param('ns3::GnuplotDataset&', 'dataset', is_const=True)])
+    cls.add_method('AddDataset', 
+                   'void', 
+                   [param('ns3::GnuplotDataset&', 'dataset', is_const=True)])
     ## gnuplot.h: void ns3::Gnuplot::GenerateOutput(std::ostream & os) [member function]
-    cls.add_method('GenerateOutput', 'void', [param('std::ostream&', 'os')])
+    cls.add_method('GenerateOutput', 
+                   'void', 
+                   [param('std::ostream&', 'os')])
     return
 
 def register_Ns3EventGarbageCollector_methods(root_module, cls):
     ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## event-garbage-collector.h: void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
-    cls.add_method('Track', 'void', [param('ns3::EventId', 'event')])
+    cls.add_method('Track', 
+                   'void', 
+                   [param('ns3::EventId', 'event')])
     return
 
 def register_Ns3GnuplotDataset_methods(root_module, cls):
     ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(std::string title) [constructor]
-    cls.add_constructor([param('std::string', 'title')], visibility='public')
+    cls.add_constructor([param('std::string', 'title')])
     ## gnuplot.h: void ns3::GnuplotDataset::SetStyle(ns3::GnuplotDataset::Style style) [member function]
-    cls.add_method('SetStyle', 'void', [param('ns3::GnuplotDataset::Style', 'style')])
+    cls.add_method('SetStyle', 
+                   'void', 
+                   [param('ns3::GnuplotDataset::Style', 'style')])
     ## gnuplot.h: void ns3::GnuplotDataset::SetErrorBars(ns3::GnuplotDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetErrorBars', 'void', [param('ns3::GnuplotDataset::ErrorBars', 'errorBars')])
+    cls.add_method('SetErrorBars', 
+                   'void', 
+                   [param('ns3::GnuplotDataset::ErrorBars', 'errorBars')])
     ## gnuplot.h: void ns3::GnuplotDataset::Add(double x, double y) [member function]
-    cls.add_method('Add', 'void', [param('double', 'x'), param('double', 'y')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y')])
     ## gnuplot.h: void ns3::GnuplotDataset::Add(double x, double y, double errorDelta) [member function]
-    cls.add_method('Add', 'void', [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
     return
 
 def register_Ns3GtkConfigStore_methods(root_module, cls):
     ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## gtk-config-store.h: void ns3::GtkConfigStore::Configure() [member function]
-    cls.add_method('Configure', 'void', [])
+    cls.add_method('Configure', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3ConfigStore_methods(root_module, cls):
     ## config-store.h: static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## config-store.h: ns3::TypeId ns3::ConfigStore::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## config-store.h: ns3::ConfigStore::ConfigStore() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## config-store.h: void ns3::ConfigStore::Configure() [member function]
-    cls.add_method('Configure', 'void', [])
+    cls.add_method('Configure', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3DelayJitterEstimation_methods(root_module, cls):
     ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('PrepareTx', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet')], is_static=True)
+    cls.add_method('PrepareTx', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')], 
+                   is_static=True)
     ## delay-jitter-estimation.h: void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('RecordRx', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet')])
+    cls.add_method('RecordRx', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')])
     ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastDelay() const [member function]
-    cls.add_method('GetLastDelay', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetLastDelay', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastJitter() const [member function]
-    cls.add_method('GetLastJitter', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetLastJitter', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_core.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_core.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -10,7 +10,7 @@
     ## global-value.h: ns3::GlobalValue [class]
     module.add_class('GlobalValue')
     ## ref-count-base.h: ns3::RefCountBase [class]
-    module.add_class('RefCountBase', incref_method='Ref', automatic_type_narrowing=True, decref_method='Unref', peekref_method='GetReferenceCount')
+    module.add_class('RefCountBase', automatic_type_narrowing=True, memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## type-id.h: ns3::TypeId [class]
     module.add_class('TypeId')
     ## type-id.h: ns3::TypeId::AttributeFlag [enumeration]
@@ -20,27 +20,33 @@
     ## system-wall-clock-ms.h: ns3::SystemWallClockMs [class]
     module.add_class('SystemWallClockMs')
     ## callback.h: ns3::CallbackImplBase [class]
-    module.add_class('CallbackImplBase', incref_method='Ref', allow_subclassing=True, decref_method='Unref', peekref_method='GetReferenceCount')
+    module.add_class('CallbackImplBase', allow_subclassing=True, memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## system-mutex.h: ns3::CriticalSection [class]
+    module.add_class('CriticalSection')
     ## trace-source-accessor.h: ns3::TraceSourceAccessor [class]
     module.add_class('TraceSourceAccessor', allow_subclassing=True)
     ## attribute.h: ns3::AttributeChecker [class]
-    module.add_class('AttributeChecker', incref_method='Ref', allow_subclassing=False, automatic_type_narrowing=True, decref_method='Unref', parent=root_module['ns3::RefCountBase'])
+    module.add_class('AttributeChecker', allow_subclassing=False, automatic_type_narrowing=True, parent=root_module['ns3::RefCountBase'])
     ## random-variable.h: ns3::RandomVariableChecker [class]
     module.add_class('RandomVariableChecker', parent=root_module['ns3::AttributeChecker'])
+    ## system-mutex.h: ns3::SystemMutex [class]
+    module.add_class('SystemMutex')
     ## random-variable.h: ns3::NormalVariable [class]
     module.add_class('NormalVariable', parent=root_module['ns3::RandomVariable'])
     ## object-factory.h: ns3::ObjectFactory [class]
     module.add_class('ObjectFactory')
     ## attribute.h: ns3::AttributeAccessor [class]
-    module.add_class('AttributeAccessor', allow_subclassing=True, parent=root_module['ns3::RefCountBase'])
+    module.add_class('AttributeAccessor', parent=root_module['ns3::RefCountBase'])
     ## random-variable.h: ns3::ParetoVariable [class]
     module.add_class('ParetoVariable', parent=root_module['ns3::RandomVariable'])
     ## random-variable.h: ns3::ConstantVariable [class]
     module.add_class('ConstantVariable', parent=root_module['ns3::RandomVariable'])
+    ## system-thread.h: ns3::SystemThread [class]
+    module.add_class('SystemThread')
     ## random-variable.h: ns3::EmpiricalVariable [class]
     module.add_class('EmpiricalVariable', parent=root_module['ns3::RandomVariable'])
     ## enum.h: ns3::EnumChecker [class]
-    module.add_class('EnumChecker', allow_subclassing=True, parent=root_module['ns3::AttributeChecker'])
+    module.add_class('EnumChecker', parent=root_module['ns3::AttributeChecker'])
     ## empty.h: ns3::empty [class]
     module.add_class('empty')
     ## object-base.h: ns3::ObjectBase [class]
@@ -82,7 +88,7 @@
     ## random-variable.h: ns3::IntEmpiricalVariable [class]
     module.add_class('IntEmpiricalVariable', parent=root_module['ns3::EmpiricalVariable'])
     ## pointer.h: ns3::PointerChecker [class]
-    module.add_class('PointerChecker', allow_subclassing=True, parent=root_module['ns3::AttributeChecker'])
+    module.add_class('PointerChecker', parent=root_module['ns3::AttributeChecker'])
     ## random-variable.h: ns3::WeibullVariable [class]
     module.add_class('WeibullVariable', parent=root_module['ns3::RandomVariable'])
     ## callback.h: ns3::CallbackBase [class]
@@ -114,51 +120,53 @@
     ## attribute-list.h: ns3::AttributeList [class]
     module.add_class('AttributeList')
     ## attribute.h: ns3::AttributeValue [class]
-    module.add_class('AttributeValue', incref_method='Ref', allow_subclassing=False, automatic_type_narrowing=True, decref_method='Unref', parent=root_module['ns3::RefCountBase'])
+    module.add_class('AttributeValue', allow_subclassing=False, automatic_type_narrowing=True, parent=root_module['ns3::RefCountBase'])
     ## random-variable.h: ns3::UniformVariable [class]
     module.add_class('UniformVariable', parent=root_module['ns3::RandomVariable'])
     ## object.h: ns3::Object [class]
-    module.add_class('Object', peekref_method='GetReferenceCount', parent=root_module['ns3::ObjectBase'], incref_method='Ref', decref_method='Unref', allow_subclassing=True, automatic_type_narrowing=True)
+    module.add_class('Object', automatic_type_narrowing=True, parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## object.h: ns3::Object::AggregateIterator [class]
     module.add_class('AggregateIterator', outer_class=root_module['ns3::Object'])
+    ## system-condition.h: ns3::SystemCondition [class]
+    module.add_class('SystemCondition')
     ## random-variable.h: ns3::SequentialVariable [class]
     module.add_class('SequentialVariable', parent=root_module['ns3::RandomVariable'])
     ## object-vector.h: ns3::ObjectVectorChecker [class]
-    module.add_class('ObjectVectorChecker', allow_subclassing=True, parent=root_module['ns3::AttributeChecker'])
+    module.add_class('ObjectVectorChecker', parent=root_module['ns3::AttributeChecker'])
     ## string.h: ns3::StringChecker [class]
     module.add_class('StringChecker', parent=root_module['ns3::AttributeChecker'])
     ## object-vector.h: ns3::ObjectVectorValue [class]
-    module.add_class('ObjectVectorValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('ObjectVectorValue', parent=root_module['ns3::AttributeValue'])
     ## boolean.h: ns3::BooleanChecker [class]
     module.add_class('BooleanChecker', parent=root_module['ns3::AttributeChecker'])
     ## uinteger.h: ns3::UintegerValue [class]
-    module.add_class('UintegerValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('UintegerValue', parent=root_module['ns3::AttributeValue'])
     ## object-vector.h: ns3::ObjectVectorAccessor [class]
-    module.add_class('ObjectVectorAccessor', allow_subclassing=True, parent=root_module['ns3::AttributeAccessor'])
+    module.add_class('ObjectVectorAccessor', parent=root_module['ns3::AttributeAccessor'])
     ## pointer.h: ns3::PointerValue [class]
-    module.add_class('PointerValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('PointerValue', parent=root_module['ns3::AttributeValue'])
     ## object-factory.h: ns3::ObjectFactoryChecker [class]
     module.add_class('ObjectFactoryChecker', parent=root_module['ns3::AttributeChecker'])
     ## type-id.h: ns3::TypeIdChecker [class]
     module.add_class('TypeIdChecker', parent=root_module['ns3::AttributeChecker'])
     ## double.h: ns3::DoubleValue [class]
-    module.add_class('DoubleValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
-    ## string.h: ns3::StringValue [class]
-    module.add_class('StringValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('DoubleValue', parent=root_module['ns3::AttributeValue'])
     ## type-id.h: ns3::TypeIdValue [class]
-    module.add_class('TypeIdValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('TypeIdValue', parent=root_module['ns3::AttributeValue'])
     ## enum.h: ns3::EnumValue [class]
-    module.add_class('EnumValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('EnumValue', parent=root_module['ns3::AttributeValue'])
     ## random-variable.h: ns3::RandomVariableValue [class]
-    module.add_class('RandomVariableValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('RandomVariableValue', parent=root_module['ns3::AttributeValue'])
     ## object-factory.h: ns3::ObjectFactoryValue [class]
-    module.add_class('ObjectFactoryValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('ObjectFactoryValue', parent=root_module['ns3::AttributeValue'])
     ## integer.h: ns3::IntegerValue [class]
-    module.add_class('IntegerValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('IntegerValue', parent=root_module['ns3::AttributeValue'])
+    ## boolean.h: ns3::BooleanValue [class]
+    module.add_class('BooleanValue', parent=root_module['ns3::AttributeValue'])
+    ## string.h: ns3::StringValue [class]
+    module.add_class('StringValue', parent=root_module['ns3::AttributeValue'])
     ## attribute.h: ns3::EmptyAttributeValue [class]
-    module.add_class('EmptyAttributeValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
-    ## boolean.h: ns3::BooleanValue [class]
-    module.add_class('BooleanValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('EmptyAttributeValue', parent=root_module['ns3::AttributeValue'])
     ## traced-value.h: ns3::TracedValue<unsigned int> [class]
     module.add_class('TracedValue', template_parameters=['unsigned int'])
     ## traced-value.h: ns3::TracedValue<unsigned int> [class]
@@ -219,14 +227,17 @@
     register_Ns3TypeIdAttributeInfo_methods(root_module, root_module['ns3::TypeId::AttributeInfo'])
     register_Ns3SystemWallClockMs_methods(root_module, root_module['ns3::SystemWallClockMs'])
     register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
+    register_Ns3CriticalSection_methods(root_module, root_module['ns3::CriticalSection'])
     register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
     register_Ns3AttributeChecker_methods(root_module, root_module['ns3::AttributeChecker'])
     register_Ns3RandomVariableChecker_methods(root_module, root_module['ns3::RandomVariableChecker'])
+    register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
     register_Ns3NormalVariable_methods(root_module, root_module['ns3::NormalVariable'])
     register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
     register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
     register_Ns3ParetoVariable_methods(root_module, root_module['ns3::ParetoVariable'])
     register_Ns3ConstantVariable_methods(root_module, root_module['ns3::ConstantVariable'])
+    register_Ns3SystemThread_methods(root_module, root_module['ns3::SystemThread'])
     register_Ns3EmpiricalVariable_methods(root_module, root_module['ns3::EmpiricalVariable'])
     register_Ns3EnumChecker_methods(root_module, root_module['ns3::EnumChecker'])
     register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
@@ -262,6 +273,7 @@
     register_Ns3UniformVariable_methods(root_module, root_module['ns3::UniformVariable'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
     register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
+    register_Ns3SystemCondition_methods(root_module, root_module['ns3::SystemCondition'])
     register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
     register_Ns3ObjectVectorChecker_methods(root_module, root_module['ns3::ObjectVectorChecker'])
     register_Ns3StringChecker_methods(root_module, root_module['ns3::StringChecker'])
@@ -273,151 +285,293 @@
     register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
     register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
     register_Ns3DoubleValue_methods(root_module, root_module['ns3::DoubleValue'])
-    register_Ns3StringValue_methods(root_module, root_module['ns3::StringValue'])
     register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
     register_Ns3EnumValue_methods(root_module, root_module['ns3::EnumValue'])
     register_Ns3RandomVariableValue_methods(root_module, root_module['ns3::RandomVariableValue'])
     register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
     register_Ns3IntegerValue_methods(root_module, root_module['ns3::IntegerValue'])
+    register_Ns3BooleanValue_methods(root_module, root_module['ns3::BooleanValue'])
+    register_Ns3StringValue_methods(root_module, root_module['ns3::StringValue'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
-    register_Ns3BooleanValue_methods(root_module, root_module['ns3::BooleanValue'])
     register_Ns3TracedValue__Unsigned_int_methods(root_module, root_module['ns3::TracedValue< unsigned int >'])
     return
 
 def register_Ns3RandomVariable_methods(root_module, cls):
     ## random-variable.h: ns3::RandomVariable::RandomVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::RandomVariable::RandomVariable(ns3::RandomVariable const & o) [copy constructor]
-    cls.add_constructor([param('ns3::RandomVariable&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::RandomVariable&', 'o', is_const=True)])
     ## random-variable.h: uint32_t ns3::RandomVariable::GetInteger() const [member function]
-    cls.add_method('GetInteger', 'uint32_t', [], is_const=True)
+    cls.add_method('GetInteger', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## random-variable.h: void ns3::RandomVariable::GetSeed(uint32_t * seed) const [member function]
-    cls.add_method('GetSeed', 'void', [param('uint32_t *', 'seed', direction=2, array_length=6)], is_const=True)
+    cls.add_method('GetSeed', 
+                   'void', 
+                   [param('uint32_t *', 'seed', direction=2, array_length=6)], 
+                   is_const=True)
     ## random-variable.h: double ns3::RandomVariable::GetValue() const [member function]
-    cls.add_method('GetValue', 'double', [], is_const=True)
+    cls.add_method('GetValue', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## random-variable.h: static void ns3::RandomVariable::SetRunNumber(uint32_t n) [member function]
-    cls.add_method('SetRunNumber', 'void', [param('uint32_t', 'n')], is_static=True)
+    cls.add_method('SetRunNumber', 
+                   'void', 
+                   [param('uint32_t', 'n')], 
+                   is_static=True)
     ## random-variable.h: static void ns3::RandomVariable::UseDevRandom(bool udr=true) [member function]
-    cls.add_method('UseDevRandom', 'void', [param('bool', 'udr', default_value='true')], is_static=True)
+    cls.add_method('UseDevRandom', 
+                   'void', 
+                   [param('bool', 'udr', default_value='true')], 
+                   is_static=True)
     ## random-variable.h: static void ns3::RandomVariable::UseGlobalSeed(uint32_t s0, uint32_t s1, uint32_t s2, uint32_t s3, uint32_t s4, uint32_t s5) [member function]
-    cls.add_method('UseGlobalSeed', 'void', [param('uint32_t', 's0'), param('uint32_t', 's1'), param('uint32_t', 's2'), param('uint32_t', 's3'), param('uint32_t', 's4'), param('uint32_t', 's5')], is_static=True)
+    cls.add_method('UseGlobalSeed', 
+                   'void', 
+                   [param('uint32_t', 's0'), param('uint32_t', 's1'), param('uint32_t', 's2'), param('uint32_t', 's3'), param('uint32_t', 's4'), param('uint32_t', 's5')], 
+                   is_static=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3TriangularVariable_methods(root_module, cls):
     ## random-variable.h: ns3::TriangularVariable::TriangularVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::TriangularVariable::TriangularVariable(double s, double l, double mean) [constructor]
-    cls.add_constructor([param('double', 's'), param('double', 'l'), param('double', 'mean')], visibility='public')
+    cls.add_constructor([param('double', 's'), param('double', 'l'), param('double', 'mean')])
     ## random-variable.h: static double ns3::TriangularVariable::GetSingleValue(double s, double l, double mean) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 's'), param('double', 'l'), param('double', 'mean')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 's'), param('double', 'l'), param('double', 'mean')], 
+                   is_static=True)
     return
 
 def register_Ns3GlobalValue_methods(root_module, cls):
     ## global-value.h: ns3::GlobalValue::GlobalValue(std::string name, std::string help, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeChecker const> checker) [constructor]
-    cls.add_constructor([param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue&', 'initialValue', is_const=True), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], visibility='public')
+    cls.add_constructor([param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue&', 'initialValue', is_const=True), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
     ## global-value.h: std::string ns3::GlobalValue::GetName() const [member function]
-    cls.add_method('GetName', 'std::string', [], is_const=True)
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## global-value.h: std::string ns3::GlobalValue::GetHelp() const [member function]
-    cls.add_method('GetHelp', 'std::string', [], is_const=True)
+    cls.add_method('GetHelp', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## global-value.h: void ns3::GlobalValue::GetValue(ns3::AttributeValue & value) const [member function]
-    cls.add_method('GetValue', 'void', [param('ns3::AttributeValue&', 'value')], is_const=True)
+    cls.add_method('GetValue', 
+                   'void', 
+                   [param('ns3::AttributeValue&', 'value')], 
+                   is_const=True)
     ## global-value.h: ns3::Ptr<ns3::AttributeChecker const> ns3::GlobalValue::GetChecker() const [member function]
-    cls.add_method('GetChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [], is_const=True)
+    cls.add_method('GetChecker', 
+                   'ns3::Ptr< ns3::AttributeChecker const >', 
+                   [], 
+                   is_const=True)
     ## global-value.h: bool ns3::GlobalValue::SetValue(ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetValue', 'bool', [param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetValue', 
+                   'bool', 
+                   [param('ns3::AttributeValue&', 'value', is_const=True)])
     ## global-value.h: static void ns3::GlobalValue::Bind(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Bind', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)], is_static=True)
+    cls.add_method('Bind', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   is_static=True)
     ## global-value.h: static bool ns3::GlobalValue::BindFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('BindFailSafe', 'bool', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)], is_static=True)
+    cls.add_method('BindFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   is_static=True)
     ## global-value.h: static __gnu_cxx::__normal_iterator<ns3::GlobalValue* const*,std::vector<ns3::GlobalValue*, std::allocator<ns3::GlobalValue*> > > ns3::GlobalValue::Begin() [member function]
-    cls.add_method('Begin', '__gnu_cxx::__normal_iterator< ns3::GlobalValue* const*, std::vector< ns3::GlobalValue*, std::allocator< ns3::GlobalValue* > > >', [], is_static=True)
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< ns3::GlobalValue* const*, std::vector< ns3::GlobalValue*, std::allocator< ns3::GlobalValue* > > >', 
+                   [], 
+                   is_static=True)
     ## global-value.h: static __gnu_cxx::__normal_iterator<ns3::GlobalValue* const*,std::vector<ns3::GlobalValue*, std::allocator<ns3::GlobalValue*> > > ns3::GlobalValue::End() [member function]
-    cls.add_method('End', '__gnu_cxx::__normal_iterator< ns3::GlobalValue* const*, std::vector< ns3::GlobalValue*, std::allocator< ns3::GlobalValue* > > >', [], is_static=True)
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< ns3::GlobalValue* const*, std::vector< ns3::GlobalValue*, std::allocator< ns3::GlobalValue* > > >', 
+                   [], 
+                   is_static=True)
     return
 
 def register_Ns3RefCountBase_methods(root_module, cls):
     ## ref-count-base.h: ns3::RefCountBase::RefCountBase() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ref-count-base.h: ns3::RefCountBase::RefCountBase(ns3::RefCountBase const & o) [copy constructor]
-    cls.add_constructor([param('ns3::RefCountBase&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::RefCountBase&', 'o', is_const=True)])
     return
 
 def register_Ns3TypeId_methods(root_module, cls):
     ## type-id.h: ns3::TypeId::TypeId(ns3::TypeId const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TypeId&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::TypeId&', 'arg0', is_const=True)])
     ## type-id.h: ns3::TypeId::TypeId(char const * name) [constructor]
-    cls.add_constructor([param('char *', 'name', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('char *', 'name', transfer_ownership=False, is_const=True)])
     ## type-id.h: ns3::TypeId::TypeId() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## type-id.h: ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('AddAttribute', 'ns3::TypeId', [param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue&', 'initialValue', is_const=True), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
+    cls.add_method('AddAttribute', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue&', 'initialValue', is_const=True), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
     ## type-id.h: ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, uint32_t flags, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('AddAttribute', 'ns3::TypeId', [param('std::string', 'name'), param('std::string', 'help'), param('uint32_t', 'flags'), param('ns3::AttributeValue&', 'initialValue', is_const=True), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
+    cls.add_method('AddAttribute', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('uint32_t', 'flags'), param('ns3::AttributeValue&', 'initialValue', is_const=True), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
     ## type-id.h: ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr<ns3::TraceSourceAccessor const> accessor) [member function]
-    cls.add_method('AddTraceSource', 'ns3::TypeId', [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
+    cls.add_method('AddTraceSource', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
     ## type-id.h: ns3::Ptr<ns3::AttributeAccessor const> ns3::TypeId::GetAttributeAccessor(uint32_t i) const [member function]
-    cls.add_method('GetAttributeAccessor', 'ns3::Ptr< ns3::AttributeAccessor const >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAttributeAccessor', 
+                   'ns3::Ptr< ns3::AttributeAccessor const >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: ns3::Ptr<ns3::AttributeChecker const> ns3::TypeId::GetAttributeChecker(uint32_t i) const [member function]
-    cls.add_method('GetAttributeChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAttributeChecker', 
+                   'ns3::Ptr< ns3::AttributeChecker const >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: uint32_t ns3::TypeId::GetAttributeFlags(uint32_t i) const [member function]
-    cls.add_method('GetAttributeFlags', 'uint32_t', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAttributeFlags', 
+                   'uint32_t', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: std::string ns3::TypeId::GetAttributeFullName(uint32_t i) const [member function]
-    cls.add_method('GetAttributeFullName', 'std::string', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAttributeFullName', 
+                   'std::string', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: std::string ns3::TypeId::GetAttributeHelp(uint32_t i) const [member function]
-    cls.add_method('GetAttributeHelp', 'std::string', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAttributeHelp', 
+                   'std::string', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: ns3::Ptr<ns3::AttributeValue const> ns3::TypeId::GetAttributeInitialValue(uint32_t i) const [member function]
-    cls.add_method('GetAttributeInitialValue', 'ns3::Ptr< ns3::AttributeValue const >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAttributeInitialValue', 
+                   'ns3::Ptr< ns3::AttributeValue const >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: uint32_t ns3::TypeId::GetAttributeN() const [member function]
-    cls.add_method('GetAttributeN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetAttributeN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## type-id.h: std::string ns3::TypeId::GetAttributeName(uint32_t i) const [member function]
-    cls.add_method('GetAttributeName', 'std::string', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAttributeName', 
+                   'std::string', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: ns3::Callback<ns3::ObjectBase*,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::TypeId::GetConstructor() const [member function]
-    cls.add_method('GetConstructor', 'ns3::Callback< ns3::ObjectBase*, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', [], is_const=True)
+    cls.add_method('GetConstructor', 
+                   'ns3::Callback< ns3::ObjectBase*, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
+                   [], 
+                   is_const=True)
     ## type-id.h: std::string ns3::TypeId::GetGroupName() const [member function]
-    cls.add_method('GetGroupName', 'std::string', [], is_const=True)
+    cls.add_method('GetGroupName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## type-id.h: std::string ns3::TypeId::GetName() const [member function]
-    cls.add_method('GetName', 'std::string', [], is_const=True)
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## type-id.h: ns3::TypeId ns3::TypeId::GetParent() const [member function]
-    cls.add_method('GetParent', 'ns3::TypeId', [], is_const=True)
+    cls.add_method('GetParent', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
     ## type-id.h: static ns3::TypeId ns3::TypeId::GetRegistered(uint32_t i) [member function]
-    cls.add_method('GetRegistered', 'ns3::TypeId', [param('uint32_t', 'i')], is_static=True)
+    cls.add_method('GetRegistered', 
+                   'ns3::TypeId', 
+                   [param('uint32_t', 'i')], 
+                   is_static=True)
     ## type-id.h: static uint32_t ns3::TypeId::GetRegisteredN() [member function]
-    cls.add_method('GetRegisteredN', 'uint32_t', [], is_static=True)
+    cls.add_method('GetRegisteredN', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
     ## type-id.h: ns3::Ptr<ns3::TraceSourceAccessor const> ns3::TypeId::GetTraceSourceAccessor(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceAccessor', 'ns3::Ptr< ns3::TraceSourceAccessor const >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetTraceSourceAccessor', 
+                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: std::string ns3::TypeId::GetTraceSourceHelp(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceHelp', 'std::string', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetTraceSourceHelp', 
+                   'std::string', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: uint32_t ns3::TypeId::GetTraceSourceN() const [member function]
-    cls.add_method('GetTraceSourceN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetTraceSourceN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## type-id.h: std::string ns3::TypeId::GetTraceSourceName(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceName', 'std::string', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetTraceSourceName', 
+                   'std::string', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## type-id.h: uint16_t ns3::TypeId::GetUid() const [member function]
-    cls.add_method('GetUid', 'uint16_t', [], is_const=True)
+    cls.add_method('GetUid', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## type-id.h: bool ns3::TypeId::HasConstructor() const [member function]
-    cls.add_method('HasConstructor', 'bool', [], is_const=True)
+    cls.add_method('HasConstructor', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## type-id.h: bool ns3::TypeId::HasParent() const [member function]
-    cls.add_method('HasParent', 'bool', [], is_const=True)
+    cls.add_method('HasParent', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## type-id.h: ns3::TypeId ns3::TypeId::HideFromDocumentation() [member function]
-    cls.add_method('HideFromDocumentation', 'ns3::TypeId', [])
+    cls.add_method('HideFromDocumentation', 
+                   'ns3::TypeId', 
+                   [])
     ## type-id.h: bool ns3::TypeId::IsChildOf(ns3::TypeId other) const [member function]
-    cls.add_method('IsChildOf', 'bool', [param('ns3::TypeId', 'other')], is_const=True)
+    cls.add_method('IsChildOf', 
+                   'bool', 
+                   [param('ns3::TypeId', 'other')], 
+                   is_const=True)
     ## type-id.h: bool ns3::TypeId::LookupAttributeByName(std::string name, ns3::TypeId::AttributeInfo * info) const [member function]
-    cls.add_method('LookupAttributeByName', 'bool', [param('std::string', 'name'), param('ns3::TypeId::AttributeInfo *', 'info', transfer_ownership=False)], is_const=True)
+    cls.add_method('LookupAttributeByName', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::TypeId::AttributeInfo *', 'info', transfer_ownership=False)], 
+                   is_const=True)
     ## type-id.h: static ns3::TypeId ns3::TypeId::LookupByName(std::string name) [member function]
-    cls.add_method('LookupByName', 'ns3::TypeId', [param('std::string', 'name')], is_static=True)
+    cls.add_method('LookupByName', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'name')], 
+                   is_static=True)
     ## type-id.h: static bool ns3::TypeId::LookupByNameFailSafe(std::string name, ns3::TypeId * tid) [member function]
-    cls.add_method('LookupByNameFailSafe', 'bool', [param('std::string', 'name'), param('ns3::TypeId *', 'tid', transfer_ownership=False)], is_static=True)
+    cls.add_method('LookupByNameFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::TypeId *', 'tid', transfer_ownership=False)], 
+                   is_static=True)
     ## type-id.h: ns3::Ptr<ns3::TraceSourceAccessor const> ns3::TypeId::LookupTraceSourceByName(std::string name) const [member function]
-    cls.add_method('LookupTraceSourceByName', 'ns3::Ptr< ns3::TraceSourceAccessor const >', [param('std::string', 'name')], is_const=True)
+    cls.add_method('LookupTraceSourceByName', 
+                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
+                   [param('std::string', 'name')], 
+                   is_const=True)
     ## type-id.h: bool ns3::TypeId::MustHideFromDocumentation() const [member function]
-    cls.add_method('MustHideFromDocumentation', 'bool', [], is_const=True)
+    cls.add_method('MustHideFromDocumentation', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## type-id.h: ns3::TypeId ns3::TypeId::SetGroupName(std::string groupName) [member function]
-    cls.add_method('SetGroupName', 'ns3::TypeId', [param('std::string', 'groupName')])
+    cls.add_method('SetGroupName', 
+                   'ns3::TypeId', 
+                   [param('std::string', 'groupName')])
     ## type-id.h: ns3::TypeId ns3::TypeId::SetParent(ns3::TypeId tid) [member function]
-    cls.add_method('SetParent', 'ns3::TypeId', [param('ns3::TypeId', 'tid')])
+    cls.add_method('SetParent', 
+                   'ns3::TypeId', 
+                   [param('ns3::TypeId', 'tid')])
     ## type-id.h: void ns3::TypeId::SetUid(uint16_t tid) [member function]
-    cls.add_method('SetUid', 'void', [param('uint16_t', 'tid')])
+    cls.add_method('SetUid', 
+                   'void', 
+                   [param('uint16_t', 'tid')])
     cls.add_output_stream_operator()
     return
 
@@ -435,152 +589,297 @@
 
 def register_Ns3SystemWallClockMs_methods(root_module, cls):
     ## system-wall-clock-ms.h: ns3::SystemWallClockMs::SystemWallClockMs() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## system-wall-clock-ms.h: void ns3::SystemWallClockMs::Start() [member function]
-    cls.add_method('Start', 'void', [])
+    cls.add_method('Start', 
+                   'void', 
+                   [])
     ## system-wall-clock-ms.h: long long unsigned int ns3::SystemWallClockMs::End() [member function]
-    cls.add_method('End', 'long long unsigned int', [])
+    cls.add_method('End', 
+                   'long long unsigned int', 
+                   [])
     return
 
 def register_Ns3CallbackImplBase_methods(root_module, cls):
     ## callback.h: ns3::CallbackImplBase::CallbackImplBase() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## callback.h: bool ns3::CallbackImplBase::IsEqual(ns3::Ptr<ns3::CallbackImplBase const> other) const [member function]
-    cls.add_method('IsEqual', 'bool', [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    return
+
+def register_Ns3CriticalSection_methods(root_module, cls):
+    ## system-mutex.h: ns3::CriticalSection::CriticalSection(ns3::SystemMutex & mutex) [constructor]
+    cls.add_constructor([param('ns3::SystemMutex&', 'mutex')])
     return
 
 def register_Ns3TraceSourceAccessor_methods(root_module, cls):
     ## trace-source-accessor.h: ns3::TraceSourceAccessor::TraceSourceAccessor() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## trace-source-accessor.h: void ns3::TraceSourceAccessor::Ref() const [member function]
-    cls.add_method('Ref', 'void', [], is_const=True)
+    cls.add_method('Ref', 
+                   'void', 
+                   [], 
+                   is_const=True)
     ## trace-source-accessor.h: void ns3::TraceSourceAccessor::Unref() const [member function]
-    cls.add_method('Unref', 'void', [], is_const=True)
+    cls.add_method('Unref', 
+                   'void', 
+                   [], 
+                   is_const=True)
     ## trace-source-accessor.h: bool ns3::TraceSourceAccessor::ConnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]
-    cls.add_method('ConnectWithoutContext', 'bool', [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase&', 'cb', is_const=True)], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('ConnectWithoutContext', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase&', 'cb', is_const=True)], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## trace-source-accessor.h: bool ns3::TraceSourceAccessor::Connect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]
-    cls.add_method('Connect', 'bool', [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Connect', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## trace-source-accessor.h: bool ns3::TraceSourceAccessor::DisconnectWithoutContext(ns3::ObjectBase * obj, ns3::CallbackBase const & cb) const [member function]
-    cls.add_method('DisconnectWithoutContext', 'bool', [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase&', 'cb', is_const=True)], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('DisconnectWithoutContext', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('ns3::CallbackBase&', 'cb', is_const=True)], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## trace-source-accessor.h: bool ns3::TraceSourceAccessor::Disconnect(ns3::ObjectBase * obj, std::string context, ns3::CallbackBase const & cb) const [member function]
-    cls.add_method('Disconnect', 'bool', [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Disconnect', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
 def register_Ns3AttributeChecker_methods(root_module, cls):
     ## attribute.h: ns3::AttributeChecker::AttributeChecker() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## attribute.h: bool ns3::AttributeChecker::Check(ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Check', 'bool', [param('ns3::AttributeValue&', 'value', is_const=True)], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Check', 
+                   'bool', 
+                   [param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: std::string ns3::AttributeChecker::GetValueTypeName() const [member function]
-    cls.add_method('GetValueTypeName', 'std::string', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetValueTypeName', 
+                   'std::string', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: bool ns3::AttributeChecker::HasUnderlyingTypeInformation() const [member function]
-    cls.add_method('HasUnderlyingTypeInformation', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('HasUnderlyingTypeInformation', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: std::string ns3::AttributeChecker::GetUnderlyingTypeInformation() const [member function]
-    cls.add_method('GetUnderlyingTypeInformation', 'std::string', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetUnderlyingTypeInformation', 
+                   'std::string', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: ns3::Ptr<ns3::AttributeValue> ns3::AttributeChecker::Create() const [member function]
-    cls.add_method('Create', 'ns3::Ptr< ns3::AttributeValue >', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: bool ns3::AttributeChecker::Copy(ns3::AttributeValue const & source, ns3::AttributeValue & destination) const [member function]
-    cls.add_method('Copy', 'bool', [param('ns3::AttributeValue&', 'source', is_const=True), param('ns3::AttributeValue&', 'destination')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'bool', 
+                   [param('ns3::AttributeValue&', 'source', is_const=True), param('ns3::AttributeValue&', 'destination')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
 def register_Ns3RandomVariableChecker_methods(root_module, cls):
     cls.add_constructor([])
     return
 
+def register_Ns3SystemMutex_methods(root_module, cls):
+    ## system-mutex.h: ns3::SystemMutex::SystemMutex() [constructor]
+    cls.add_constructor([])
+    ## system-mutex.h: void ns3::SystemMutex::Lock() [member function]
+    cls.add_method('Lock', 
+                   'void', 
+                   [])
+    ## system-mutex.h: void ns3::SystemMutex::Unlock() [member function]
+    cls.add_method('Unlock', 
+                   'void', 
+                   [])
+    return
+
 def register_Ns3NormalVariable_methods(root_module, cls):
     ## random-variable.h: ns3::NormalVariable::NormalVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::NormalVariable::NormalVariable(double m, double v) [constructor]
-    cls.add_constructor([param('double', 'm'), param('double', 'v')], visibility='public')
+    cls.add_constructor([param('double', 'm'), param('double', 'v')])
     ## random-variable.h: ns3::NormalVariable::NormalVariable(double m, double v, double b) [constructor]
-    cls.add_constructor([param('double', 'm'), param('double', 'v'), param('double', 'b')], visibility='public')
+    cls.add_constructor([param('double', 'm'), param('double', 'v'), param('double', 'b')])
     ## random-variable.h: static double ns3::NormalVariable::GetSingleValue(double m, double v) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 'm'), param('double', 'v')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 'm'), param('double', 'v')], 
+                   is_static=True)
     ## random-variable.h: static double ns3::NormalVariable::GetSingleValue(double m, double v, double b) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 'm'), param('double', 'v'), param('double', 'b')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 'm'), param('double', 'v'), param('double', 'b')], 
+                   is_static=True)
     return
 
 def register_Ns3ObjectFactory_methods(root_module, cls):
     ## object-factory.h: ns3::ObjectFactory::ObjectFactory(ns3::ObjectFactory const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactory&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::ObjectFactory&', 'arg0', is_const=True)])
     ## object-factory.h: ns3::ObjectFactory::ObjectFactory() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## object-factory.h: ns3::Ptr<ns3::Object> ns3::ObjectFactory::Create() const [member function]
-    cls.add_method('Create', 'ns3::Ptr< ns3::Object >', [], is_const=True)
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::Object >', 
+                   [], 
+                   is_const=True)
     ## object-factory.h: ns3::TypeId ns3::ObjectFactory::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_const=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
     ## object-factory.h: void ns3::ObjectFactory::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## object-factory.h: void ns3::ObjectFactory::SetTypeId(ns3::TypeId tid) [member function]
-    cls.add_method('SetTypeId', 'void', [param('ns3::TypeId', 'tid')])
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('ns3::TypeId', 'tid')])
     ## object-factory.h: void ns3::ObjectFactory::SetTypeId(char const * tid) [member function]
-    cls.add_method('SetTypeId', 'void', [param('char *', 'tid', transfer_ownership=False, is_const=True)])
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('char *', 'tid', transfer_ownership=False, is_const=True)])
     ## object-factory.h: void ns3::ObjectFactory::SetTypeId(std::string tid) [member function]
-    cls.add_method('SetTypeId', 'void', [param('std::string', 'tid')])
+    cls.add_method('SetTypeId', 
+                   'void', 
+                   [param('std::string', 'tid')])
     cls.add_output_stream_operator()
     return
 
 def register_Ns3AttributeAccessor_methods(root_module, cls):
     ## attribute.h: ns3::AttributeAccessor::AttributeAccessor() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## attribute.h: bool ns3::AttributeAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Set', 'bool', [param('ns3::ObjectBase *', 'object', transfer_ownership=False), param('ns3::AttributeValue&', 'value', is_const=True)], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Set', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False), param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: bool ns3::AttributeAccessor::Get(ns3::ObjectBase const * object, ns3::AttributeValue & attribute) const [member function]
-    cls.add_method('Get', 'bool', [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('ns3::AttributeValue&', 'attribute')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Get', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('ns3::AttributeValue&', 'attribute')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: bool ns3::AttributeAccessor::HasGetter() const [member function]
-    cls.add_method('HasGetter', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('HasGetter', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: bool ns3::AttributeAccessor::HasSetter() const [member function]
-    cls.add_method('HasSetter', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('HasSetter', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
 def register_Ns3ParetoVariable_methods(root_module, cls):
     ## random-variable.h: ns3::ParetoVariable::ParetoVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::ParetoVariable::ParetoVariable(double m) [constructor]
-    cls.add_constructor([param('double', 'm')], visibility='public')
+    cls.add_constructor([param('double', 'm')])
     ## random-variable.h: ns3::ParetoVariable::ParetoVariable(double m, double s) [constructor]
-    cls.add_constructor([param('double', 'm'), param('double', 's')], visibility='public')
+    cls.add_constructor([param('double', 'm'), param('double', 's')])
     ## random-variable.h: ns3::ParetoVariable::ParetoVariable(double m, double s, double b) [constructor]
-    cls.add_constructor([param('double', 'm'), param('double', 's'), param('double', 'b')], visibility='public')
+    cls.add_constructor([param('double', 'm'), param('double', 's'), param('double', 'b')])
     ## random-variable.h: static double ns3::ParetoVariable::GetSingleValue(double m, double s, double b=0) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], 
+                   is_static=True)
     return
 
 def register_Ns3ConstantVariable_methods(root_module, cls):
     ## random-variable.h: ns3::ConstantVariable::ConstantVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::ConstantVariable::ConstantVariable(double c) [constructor]
-    cls.add_constructor([param('double', 'c')], visibility='public')
+    cls.add_constructor([param('double', 'c')])
     ## random-variable.h: void ns3::ConstantVariable::SetConstant(double c) [member function]
-    cls.add_method('SetConstant', 'void', [param('double', 'c')])
+    cls.add_method('SetConstant', 
+                   'void', 
+                   [param('double', 'c')])
+    return
+
+def register_Ns3SystemThread_methods(root_module, cls):
+    ## system-thread.h: ns3::SystemThread::SystemThread(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [constructor]
+    cls.add_constructor([param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    ## system-thread.h: void ns3::SystemThread::Ref() const [member function]
+    cls.add_method('Ref', 
+                   'void', 
+                   [], 
+                   is_const=True)
+    ## system-thread.h: void ns3::SystemThread::Unref() const [member function]
+    cls.add_method('Unref', 
+                   'void', 
+                   [], 
+                   is_const=True)
+    ## system-thread.h: void ns3::SystemThread::Start() [member function]
+    cls.add_method('Start', 
+                   'void', 
+                   [])
+    ## system-thread.h: void ns3::SystemThread::Join() [member function]
+    cls.add_method('Join', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3EmpiricalVariable_methods(root_module, cls):
     ## random-variable.h: ns3::EmpiricalVariable::EmpiricalVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: void ns3::EmpiricalVariable::CDF(double v, double c) [member function]
-    cls.add_method('CDF', 'void', [param('double', 'v'), param('double', 'c')])
+    cls.add_method('CDF', 
+                   'void', 
+                   [param('double', 'v'), param('double', 'c')])
     return
 
 def register_Ns3EnumChecker_methods(root_module, cls):
     ## enum.h: ns3::EnumChecker::EnumChecker() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## enum.h: void ns3::EnumChecker::AddDefault(int v, std::string name) [member function]
-    cls.add_method('AddDefault', 'void', [param('int', 'v'), param('std::string', 'name')])
+    cls.add_method('AddDefault', 
+                   'void', 
+                   [param('int', 'v'), param('std::string', 'name')])
     ## enum.h: void ns3::EnumChecker::Add(int v, std::string name) [member function]
-    cls.add_method('Add', 'void', [param('int', 'v'), param('std::string', 'name')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('int', 'v'), param('std::string', 'name')])
     ## enum.h: bool ns3::EnumChecker::Check(ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Check', 'bool', [param('ns3::AttributeValue&', 'value', is_const=True)], is_const=True, is_virtual=True)
+    cls.add_method('Check', 
+                   'bool', 
+                   [param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   is_const=True, is_virtual=True)
     ## enum.h: std::string ns3::EnumChecker::GetValueTypeName() const [member function]
-    cls.add_method('GetValueTypeName', 'std::string', [], is_const=True, is_virtual=True)
+    cls.add_method('GetValueTypeName', 
+                   'std::string', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## enum.h: bool ns3::EnumChecker::HasUnderlyingTypeInformation() const [member function]
-    cls.add_method('HasUnderlyingTypeInformation', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('HasUnderlyingTypeInformation', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## enum.h: std::string ns3::EnumChecker::GetUnderlyingTypeInformation() const [member function]
-    cls.add_method('GetUnderlyingTypeInformation', 'std::string', [], is_const=True, is_virtual=True)
+    cls.add_method('GetUnderlyingTypeInformation', 
+                   'std::string', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## enum.h: ns3::Ptr<ns3::AttributeValue> ns3::EnumChecker::Create() const [member function]
-    cls.add_method('Create', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Create', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## enum.h: bool ns3::EnumChecker::Copy(ns3::AttributeValue const & src, ns3::AttributeValue & dst) const [member function]
-    cls.add_method('Copy', 'bool', [param('ns3::AttributeValue&', 'src', is_const=True), param('ns3::AttributeValue&', 'dst')], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'bool', 
+                   [param('ns3::AttributeValue&', 'src', is_const=True), param('ns3::AttributeValue&', 'dst')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3Empty_methods(root_module, cls):
@@ -589,33 +888,63 @@
 
 def register_Ns3ObjectBase_methods(root_module, cls):
     ## object-base.h: ns3::ObjectBase::ObjectBase() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## object-base.h: ns3::ObjectBase::ObjectBase(ns3::ObjectBase const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectBase&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::ObjectBase&', 'arg0', is_const=True)])
     ## object-base.h: static ns3::TypeId ns3::ObjectBase::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## object-base.h: ns3::TypeId ns3::ObjectBase::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## object-base.h: void ns3::ObjectBase::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## object-base.h: bool ns3::ObjectBase::SetAttributeFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttributeFailSafe', 'bool', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetAttributeFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## object-base.h: void ns3::ObjectBase::GetAttribute(std::string name, ns3::AttributeValue & value) const [member function]
-    cls.add_method('GetAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value')], is_const=True)
+    cls.add_method('GetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value')], 
+                   is_const=True)
     ## object-base.h: bool ns3::ObjectBase::GetAttributeFailSafe(std::string name, ns3::AttributeValue & attribute) const [member function]
-    cls.add_method('GetAttributeFailSafe', 'bool', [param('std::string', 'name'), param('ns3::AttributeValue&', 'attribute')], is_const=True)
+    cls.add_method('GetAttributeFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'attribute')], 
+                   is_const=True)
     ## object-base.h: bool ns3::ObjectBase::TraceConnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceConnect', 'bool', [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)])
+    cls.add_method('TraceConnect', 
+                   'bool', 
+                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## object-base.h: bool ns3::ObjectBase::TraceConnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceConnectWithoutContext', 'bool', [param('std::string', 'name'), param('ns3::CallbackBase&', 'cb', is_const=True)])
+    cls.add_method('TraceConnectWithoutContext', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## object-base.h: bool ns3::ObjectBase::TraceDisconnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceDisconnect', 'bool', [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)])
+    cls.add_method('TraceDisconnect', 
+                   'bool', 
+                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## object-base.h: bool ns3::ObjectBase::TraceDisconnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceDisconnectWithoutContext', 'bool', [param('std::string', 'name'), param('ns3::CallbackBase&', 'cb', is_const=True)])
+    cls.add_method('TraceDisconnectWithoutContext', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## object-base.h: void ns3::ObjectBase::NotifyConstructionCompleted() [member function]
-    cls.add_method('NotifyConstructionCompleted', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('NotifyConstructionCompleted', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## object-base.h: void ns3::ObjectBase::ConstructSelf(ns3::AttributeList const & attributes) [member function]
-    cls.add_method('ConstructSelf', 'void', [param('ns3::AttributeList&', 'attributes', is_const=True)], visibility='protected')
+    cls.add_method('ConstructSelf', 
+                   'void', 
+                   [param('ns3::AttributeList&', 'attributes', is_const=True)], 
+                   visibility='protected')
     return
 
 def register_Ns3CommandLine_methods(root_module, cls):
@@ -652,308 +981,520 @@
 
 def register_Ns3RngStream_methods(root_module, cls):
     ## rng-stream.h: ns3::RngStream::RngStream() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## rng-stream.h: ns3::RngStream::RngStream(ns3::RngStream const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::RngStream&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::RngStream&', 'arg0', is_const=True)])
     ## rng-stream.h: void ns3::RngStream::InitializeStream() [member function]
-    cls.add_method('InitializeStream', 'void', [])
+    cls.add_method('InitializeStream', 
+                   'void', 
+                   [])
     ## rng-stream.h: void ns3::RngStream::ResetStartStream() [member function]
-    cls.add_method('ResetStartStream', 'void', [])
+    cls.add_method('ResetStartStream', 
+                   'void', 
+                   [])
     ## rng-stream.h: void ns3::RngStream::ResetStartSubstream() [member function]
-    cls.add_method('ResetStartSubstream', 'void', [])
+    cls.add_method('ResetStartSubstream', 
+                   'void', 
+                   [])
     ## rng-stream.h: void ns3::RngStream::ResetNextSubstream() [member function]
-    cls.add_method('ResetNextSubstream', 'void', [])
+    cls.add_method('ResetNextSubstream', 
+                   'void', 
+                   [])
     ## rng-stream.h: void ns3::RngStream::ResetNthSubstream(uint32_t N) [member function]
-    cls.add_method('ResetNthSubstream', 'void', [param('uint32_t', 'N')])
+    cls.add_method('ResetNthSubstream', 
+                   'void', 
+                   [param('uint32_t', 'N')])
     ## rng-stream.h: void ns3::RngStream::SetAntithetic(bool a) [member function]
-    cls.add_method('SetAntithetic', 'void', [param('bool', 'a')])
+    cls.add_method('SetAntithetic', 
+                   'void', 
+                   [param('bool', 'a')])
     ## rng-stream.h: void ns3::RngStream::IncreasedPrecis(bool incp) [member function]
-    cls.add_method('IncreasedPrecis', 'void', [param('bool', 'incp')])
+    cls.add_method('IncreasedPrecis', 
+                   'void', 
+                   [param('bool', 'incp')])
     ## rng-stream.h: bool ns3::RngStream::SetSeeds(uint32_t const * seed) [member function]
-    cls.add_method('SetSeeds', 'bool', [param('uint32_t *', 'seed', transfer_ownership=False, is_const=True)])
+    cls.add_method('SetSeeds', 
+                   'bool', 
+                   [param('uint32_t *', 'seed', transfer_ownership=False, is_const=True)])
     ## rng-stream.h: void ns3::RngStream::AdvanceState(int32_t e, int32_t c) [member function]
-    cls.add_method('AdvanceState', 'void', [param('int32_t', 'e'), param('int32_t', 'c')])
+    cls.add_method('AdvanceState', 
+                   'void', 
+                   [param('int32_t', 'e'), param('int32_t', 'c')])
     ## rng-stream.h: void ns3::RngStream::GetState(uint32_t * seed) const [member function]
-    cls.add_method('GetState', 'void', [param('uint32_t *', 'seed')], is_const=True)
+    cls.add_method('GetState', 
+                   'void', 
+                   [param('uint32_t *', 'seed')], 
+                   is_const=True)
     ## rng-stream.h: double ns3::RngStream::RandU01() [member function]
-    cls.add_method('RandU01', 'double', [])
+    cls.add_method('RandU01', 
+                   'double', 
+                   [])
     ## rng-stream.h: int32_t ns3::RngStream::RandInt(int32_t i, int32_t j) [member function]
-    cls.add_method('RandInt', 'int32_t', [param('int32_t', 'i'), param('int32_t', 'j')])
+    cls.add_method('RandInt', 
+                   'int32_t', 
+                   [param('int32_t', 'i'), param('int32_t', 'j')])
     ## rng-stream.h: static bool ns3::RngStream::SetPackageSeed(uint32_t const * seed) [member function]
-    cls.add_method('SetPackageSeed', 'bool', [param('uint32_t *', 'seed', transfer_ownership=False, is_const=True)], is_static=True)
+    cls.add_method('SetPackageSeed', 
+                   'bool', 
+                   [param('uint32_t *', 'seed', transfer_ownership=False, is_const=True)], 
+                   is_static=True)
     ## rng-stream.h: static bool ns3::RngStream::CheckSeed(uint32_t const * seed) [member function]
-    cls.add_method('CheckSeed', 'bool', [param('uint32_t *', 'seed', transfer_ownership=False, is_const=True)], is_static=True)
+    cls.add_method('CheckSeed', 
+                   'bool', 
+                   [param('uint32_t *', 'seed', transfer_ownership=False, is_const=True)], 
+                   is_static=True)
     return
 
 def register_Ns3LogNormalVariable_methods(root_module, cls):
     ## random-variable.h: ns3::LogNormalVariable::LogNormalVariable(double mu, double sigma) [constructor]
-    cls.add_constructor([param('double', 'mu'), param('double', 'sigma')], visibility='public')
+    cls.add_constructor([param('double', 'mu'), param('double', 'sigma')])
     ## random-variable.h: static double ns3::LogNormalVariable::GetSingleValue(double mu, double sigma) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 'mu'), param('double', 'sigma')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 'mu'), param('double', 'sigma')], 
+                   is_static=True)
     return
 
 def register_Ns3IntEmpiricalVariable_methods(root_module, cls):
     ## random-variable.h: ns3::IntEmpiricalVariable::IntEmpiricalVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     return
 
 def register_Ns3PointerChecker_methods(root_module, cls):
     ## pointer.h: ns3::TypeId ns3::PointerChecker::GetPointeeTypeId() const [member function]
-    cls.add_method('GetPointeeTypeId', 'ns3::TypeId', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetPointeeTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3WeibullVariable_methods(root_module, cls):
     ## random-variable.h: ns3::WeibullVariable::WeibullVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::WeibullVariable::WeibullVariable(double m) [constructor]
-    cls.add_constructor([param('double', 'm')], visibility='public')
+    cls.add_constructor([param('double', 'm')])
     ## random-variable.h: ns3::WeibullVariable::WeibullVariable(double m, double s) [constructor]
-    cls.add_constructor([param('double', 'm'), param('double', 's')], visibility='public')
+    cls.add_constructor([param('double', 'm'), param('double', 's')])
     ## random-variable.h: ns3::WeibullVariable::WeibullVariable(double m, double s, double b) [constructor]
-    cls.add_constructor([param('double', 'm'), param('double', 's'), param('double', 'b')], visibility='public')
+    cls.add_constructor([param('double', 'm'), param('double', 's'), param('double', 'b')])
     ## random-variable.h: static double ns3::WeibullVariable::GetSingleValue(double m, double s, double b=0) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], 
+                   is_static=True)
     return
 
 def register_Ns3CallbackBase_methods(root_module, cls):
     ## callback.h: ns3::CallbackBase::CallbackBase() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## callback.h: ns3::Ptr<ns3::CallbackImplBase> ns3::CallbackBase::GetImpl() const [member function]
-    cls.add_method('GetImpl', 'ns3::Ptr< ns3::CallbackImplBase >', [], is_const=True)
+    cls.add_method('GetImpl', 
+                   'ns3::Ptr< ns3::CallbackImplBase >', 
+                   [], 
+                   is_const=True)
     ## callback.h: ns3::CallbackBase::CallbackBase(ns3::Ptr<ns3::CallbackImplBase> impl) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], visibility='protected')
+    cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], 
+                        visibility='protected')
     return
 
 def register_Ns3ExponentialVariable_methods(root_module, cls):
     ## random-variable.h: ns3::ExponentialVariable::ExponentialVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::ExponentialVariable::ExponentialVariable(double m) [constructor]
-    cls.add_constructor([param('double', 'm')], visibility='public')
+    cls.add_constructor([param('double', 'm')])
     ## random-variable.h: ns3::ExponentialVariable::ExponentialVariable(double m, double b) [constructor]
-    cls.add_constructor([param('double', 'm'), param('double', 'b')], visibility='public')
+    cls.add_constructor([param('double', 'm'), param('double', 'b')])
     ## random-variable.h: static double ns3::ExponentialVariable::GetSingleValue(double m, double b=0) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 'm'), param('double', 'b', default_value='0')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 'm'), param('double', 'b', default_value='0')], 
+                   is_static=True)
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3Packet_const__gt___Ns3Mac48Address_Ns3Empty_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Mac48Address, ns3::empty, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Mac48Address, ns3::empty, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Mac48Address, ns3::empty, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Mac48Address, ns3::empty, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Mac48Address, ns3::empty, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3Packet_const__gt___Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::empty, ns3::empty, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::empty, ns3::empty, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::empty, ns3::empty, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::empty, ns3::empty, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::empty, ns3::empty, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3Packet_const__gt___Ns3Address_const__amp___Ns3Empty_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Address const&, ns3::empty, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Address const&, ns3::empty, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Address const&, ns3::empty, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Address const&, ns3::empty, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::Address const&, ns3::empty, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3Packet_const__gt___Unsigned_int_Ns3Empty_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, unsigned int, ns3::empty, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, unsigned int, ns3::empty, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, unsigned int, ns3::empty, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, unsigned int, ns3::empty, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, unsigned int, ns3::empty, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3MobilityModel_const__gt___Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::MobilityModel const>, ns3::empty, ns3::empty, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::MobilityModel const>, ns3::empty, ns3::empty, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::MobilityModel const>, ns3::empty, ns3::empty, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::MobilityModel const>, ns3::empty, ns3::empty, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::MobilityModel const>, ns3::empty, ns3::empty, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3TimeUnit__lt__1__gt___Ns3TimeUnit__lt__1__gt___Ns3WifiPhyState_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::TimeUnit<1>, ns3::TimeUnit<1>, ns3::WifiPhy::State, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::TimeUnit<1>, ns3::TimeUnit<1>, ns3::WifiPhy::State, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::TimeUnit<1>, ns3::TimeUnit<1>, ns3::WifiPhy::State, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::TimeUnit<1>, ns3::TimeUnit<1>, ns3::WifiPhy::State, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::TimeUnit<1>, ns3::TimeUnit<1>, ns3::WifiPhy::State, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3Packet_const__gt___Ns3WifiMode_Ns3WifiPreamble_Unsigned_char_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::WifiMode, ns3::WifiPreamble, unsigned char>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::WifiMode, ns3::WifiPreamble, unsigned char>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::WifiMode, ns3::WifiPreamble, unsigned char>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::WifiMode, ns3::WifiPreamble, unsigned char>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, ns3::WifiMode, ns3::WifiPreamble, unsigned char>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3Packet_const__gt___Double_Ns3Empty_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::empty, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::empty, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::empty, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::empty, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::empty, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Ns3Ptr__lt__ns3Packet_const__gt___Double_Ns3WifiMode_Ns3WifiPreamble_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::WifiMode, ns3::WifiPreamble>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::WifiMode, ns3::WifiPreamble>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::WifiMode, ns3::WifiPreamble>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::WifiMode, ns3::WifiPreamble>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<ns3::Ptr<ns3::Packet const>, double, ns3::WifiMode, ns3::WifiPreamble>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3TracedCallback__Unsigned_int_Unsigned_int_Ns3Empty_Ns3Empty_methods(root_module, cls):
     ## traced-callback.h: ns3::TracedCallback<unsigned int, unsigned int, ns3::empty, ns3::empty>::TracedCallback() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-callback.h: void ns3::TracedCallback<unsigned int, unsigned int, ns3::empty, ns3::empty>::ConnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<unsigned int, unsigned int, ns3::empty, ns3::empty>::Connect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Connect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     ## traced-callback.h: void ns3::TracedCallback<unsigned int, unsigned int, ns3::empty, ns3::empty>::DisconnectWithoutContext(ns3::CallbackBase const & callback) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True)])
     ## traced-callback.h: void ns3::TracedCallback<unsigned int, unsigned int, ns3::empty, ns3::empty>::Disconnect(ns3::CallbackBase const & callback, std::string path) [member function]
-    cls.add_method('Disconnect', 'void', [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'callback', is_const=True), param('std::string', 'path')])
     return
 
 def register_Ns3DeterministicVariable_methods(root_module, cls):
     ## random-variable.h: ns3::DeterministicVariable::DeterministicVariable(double * d, uint32_t c) [constructor]
-    cls.add_constructor([param('double *', 'd'), param('uint32_t', 'c')], visibility='public')
+    cls.add_constructor([param('double *', 'd'), param('uint32_t', 'c')])
     return
 
 def register_Ns3AttributeList_methods(root_module, cls):
     ## attribute-list.h: ns3::AttributeList::AttributeList() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## attribute-list.h: ns3::AttributeList::AttributeList(ns3::AttributeList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeList&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::AttributeList&', 'o', is_const=True)])
     ## attribute-list.h: void ns3::AttributeList::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## attribute-list.h: bool ns3::AttributeList::SetFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetFailSafe', 'bool', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetFailSafe', 
+                   'bool', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## attribute-list.h: void ns3::AttributeList::SetWithTid(ns3::TypeId tid, std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetWithTid', 'void', [param('ns3::TypeId', 'tid'), param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetWithTid', 
+                   'void', 
+                   [param('ns3::TypeId', 'tid'), param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## attribute-list.h: void ns3::AttributeList::Reset() [member function]
-    cls.add_method('Reset', 'void', [])
+    cls.add_method('Reset', 
+                   'void', 
+                   [])
     ## attribute-list.h: static ns3::AttributeList * ns3::AttributeList::GetGlobal() [member function]
-    cls.add_method('GetGlobal', 'ns3::AttributeList *', [], is_static=True)
+    cls.add_method('GetGlobal', 
+                   'ns3::AttributeList *', 
+                   [], 
+                   is_static=True)
     ## attribute-list.h: std::string ns3::AttributeList::SerializeToString() const [member function]
-    cls.add_method('SerializeToString', 'std::string', [], is_const=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## attribute-list.h: bool ns3::AttributeList::DeserializeFromString(std::string value) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value')])
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value')])
     return
 
 def register_Ns3AttributeValue_methods(root_module, cls):
     ## attribute.h: ns3::AttributeValue::AttributeValue(ns3::AttributeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeValue&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::AttributeValue&', 'arg0', is_const=True)])
     ## attribute.h: ns3::AttributeValue::AttributeValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## attribute.h: ns3::Ptr<ns3::AttributeValue> ns3::AttributeValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: std::string ns3::AttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## attribute.h: bool ns3::AttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_pure_virtual=True, is_virtual=True)
     return
 
 def register_Ns3UniformVariable_methods(root_module, cls):
     ## random-variable.h: ns3::UniformVariable::UniformVariable() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::UniformVariable::UniformVariable(double s, double l) [constructor]
-    cls.add_constructor([param('double', 's'), param('double', 'l')], visibility='public')
+    cls.add_constructor([param('double', 's'), param('double', 'l')])
     ## random-variable.h: static double ns3::UniformVariable::GetSingleValue(double s, double l) [member function]
-    cls.add_method('GetSingleValue', 'double', [param('double', 's'), param('double', 'l')], is_static=True)
+    cls.add_method('GetSingleValue', 
+                   'double', 
+                   [param('double', 's'), param('double', 'l')], 
+                   is_static=True)
     return
 
 def register_Ns3Object_methods(root_module, cls):
     ## object.h: static ns3::TypeId ns3::Object::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## object.h: ns3::Object::Object() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## object.h: ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## object.h: ns3::Ptr<ns3::Object> ns3::Object::GetObject(ns3::TypeId tid) const [member function]
-    cls.add_method('GetObject', 'ns3::Ptr< ns3::Object >', [param('ns3::TypeId', 'tid')], is_const=True, template_parameters=['ns3::Object'], custom_template_method_name='GetObject')
+    cls.add_method('GetObject', 
+                   'ns3::Ptr< ns3::Object >', 
+                   [param('ns3::TypeId', 'tid')], 
+                   is_const=True, template_parameters=['ns3::Object'], custom_template_method_name='GetObject')
     ## object.h: void ns3::Object::Dispose() [member function]
-    cls.add_method('Dispose', 'void', [])
+    cls.add_method('Dispose', 
+                   'void', 
+                   [])
     ## object.h: void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
-    cls.add_method('AggregateObject', 'void', [param('ns3::Ptr< ns3::Object >', 'other')])
+    cls.add_method('AggregateObject', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Object >', 'other')])
     ## object.h: ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
-    cls.add_method('GetAggregateIterator', 'ns3::Object::AggregateIterator', [], is_const=True)
+    cls.add_method('GetAggregateIterator', 
+                   'ns3::Object::AggregateIterator', 
+                   [], 
+                   is_const=True)
     ## object.h: void ns3::Object::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## object.h: ns3::Object::Object(ns3::Object const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Object&', 'o', is_const=True)], visibility='protected')
+    cls.add_constructor([param('ns3::Object&', 'o', is_const=True)], 
+                        visibility='protected')
     return
 
 def register_Ns3ObjectAggregateIterator_methods(root_module, cls):
     ## object.h: ns3::Object::AggregateIterator::AggregateIterator() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## object.h: bool ns3::Object::AggregateIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 'bool', [], is_const=True)
+    cls.add_method('HasNext', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## object.h: ns3::Ptr<ns3::Object const> ns3::Object::AggregateIterator::Next() [member function]
-    cls.add_method('Next', 'ns3::Ptr< ns3::Object const >', [])
+    cls.add_method('Next', 
+                   'ns3::Ptr< ns3::Object const >', 
+                   [])
+    return
+
+def register_Ns3SystemCondition_methods(root_module, cls):
+    ## system-condition.h: ns3::SystemCondition::SystemCondition() [constructor]
+    cls.add_constructor([])
+    ## system-condition.h: void ns3::SystemCondition::SetCondition(bool condition) [member function]
+    cls.add_method('SetCondition', 
+                   'void', 
+                   [param('bool', 'condition')])
+    ## system-condition.h: bool ns3::SystemCondition::GetCondition() [member function]
+    cls.add_method('GetCondition', 
+                   'bool', 
+                   [])
+    ## system-condition.h: void ns3::SystemCondition::Signal() [member function]
+    cls.add_method('Signal', 
+                   'void', 
+                   [])
+    ## system-condition.h: void ns3::SystemCondition::Broadcast() [member function]
+    cls.add_method('Broadcast', 
+                   'void', 
+                   [])
+    ## system-condition.h: void ns3::SystemCondition::Wait() [member function]
+    cls.add_method('Wait', 
+                   'void', 
+                   [])
+    ## system-condition.h: bool ns3::SystemCondition::TimedWait(uint64_t ns) [member function]
+    cls.add_method('TimedWait', 
+                   'bool', 
+                   [param('uint64_t', 'ns')])
     return
 
 def register_Ns3SequentialVariable_methods(root_module, cls):
     ## random-variable.h: ns3::SequentialVariable::SequentialVariable(double f, double l, double i=1, uint32_t c=1) [constructor]
-    cls.add_constructor([param('double', 'f'), param('double', 'l'), param('double', 'i', default_value='1'), param('uint32_t', 'c', default_value='1')], visibility='public')
+    cls.add_constructor([param('double', 'f'), param('double', 'l'), param('double', 'i', default_value='1'), param('uint32_t', 'c', default_value='1')])
     ## random-variable.h: ns3::SequentialVariable::SequentialVariable(double f, double l, ns3::RandomVariable const & i, uint32_t c=1) [constructor]
-    cls.add_constructor([param('double', 'f'), param('double', 'l'), param('ns3::RandomVariable&', 'i', is_const=True), param('uint32_t', 'c', default_value='1')], visibility='public')
+    cls.add_constructor([param('double', 'f'), param('double', 'l'), param('ns3::RandomVariable&', 'i', is_const=True), param('uint32_t', 'c', default_value='1')])
     return
 
 def register_Ns3ObjectVectorChecker_methods(root_module, cls):
     ## object-vector.h: ns3::TypeId ns3::ObjectVectorChecker::GetItemTypeId() const [member function]
-    cls.add_method('GetItemTypeId', 'ns3::TypeId', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetItemTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
     return
 
@@ -963,21 +1504,42 @@
 
 def register_Ns3ObjectVectorValue_methods(root_module, cls):
     ## object-vector.h: ns3::ObjectVectorValue::ObjectVectorValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## object-vector.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Object>*,std::vector<ns3::Ptr<ns3::Object>, std::allocator<ns3::Ptr<ns3::Object> > > > ns3::ObjectVectorValue::Begin() const [member function]
-    cls.add_method('Begin', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Object >, std::vector< ns3::Ptr< ns3::Object >, std::allocator< ns3::Ptr< ns3::Object > > > >', [], is_const=True)
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Object >, std::vector< ns3::Ptr< ns3::Object >, std::allocator< ns3::Ptr< ns3::Object > > > >', 
+                   [], 
+                   is_const=True)
     ## object-vector.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Object>*,std::vector<ns3::Ptr<ns3::Object>, std::allocator<ns3::Ptr<ns3::Object> > > > ns3::ObjectVectorValue::End() const [member function]
-    cls.add_method('End', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Object >, std::vector< ns3::Ptr< ns3::Object >, std::allocator< ns3::Ptr< ns3::Object > > > >', [], is_const=True)
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Object >, std::vector< ns3::Ptr< ns3::Object >, std::allocator< ns3::Ptr< ns3::Object > > > >', 
+                   [], 
+                   is_const=True)
     ## object-vector.h: uint32_t ns3::ObjectVectorValue::GetN() const [member function]
-    cls.add_method('GetN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## object-vector.h: ns3::Ptr<ns3::Object> ns3::ObjectVectorValue::Get(uint32_t i) const [member function]
-    cls.add_method('Get', 'ns3::Ptr< ns3::Object >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::Object >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## object-vector.h: ns3::Ptr<ns3::AttributeValue> ns3::ObjectVectorValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## object-vector.h: std::string ns3::ObjectVectorValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## object-vector.h: bool ns3::ObjectVectorValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3BooleanChecker_methods(root_module, cls):
@@ -986,54 +1548,100 @@
 
 def register_Ns3UintegerValue_methods(root_module, cls):
     ## uinteger.h: ns3::UintegerValue::UintegerValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## uinteger.h: ns3::UintegerValue::UintegerValue(uint64_t const & value) [constructor]
-    cls.add_constructor([param('uint64_t&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('uint64_t&', 'value', is_const=True)])
     ## uinteger.h: void ns3::UintegerValue::Set(uint64_t const & value) [member function]
-    cls.add_method('Set', 'void', [param('uint64_t&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint64_t&', 'value', is_const=True)])
     ## uinteger.h: uint64_t ns3::UintegerValue::Get() const [member function]
-    cls.add_method('Get', 'uint64_t', [], is_const=True)
+    cls.add_method('Get', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
     ## uinteger.h: ns3::Ptr<ns3::AttributeValue> ns3::UintegerValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## uinteger.h: std::string ns3::UintegerValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## uinteger.h: bool ns3::UintegerValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3ObjectVectorAccessor_methods(root_module, cls):
     ## object-vector.h: bool ns3::ObjectVectorAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Set', 'bool', [param('ns3::ObjectBase *', 'object'), param('ns3::AttributeValue&', 'value', is_const=True)], is_const=True, is_virtual=True)
+    cls.add_method('Set', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'object'), param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   is_const=True, is_virtual=True)
     ## object-vector.h: bool ns3::ObjectVectorAccessor::Get(ns3::ObjectBase const * object, ns3::AttributeValue & value) const [member function]
-    cls.add_method('Get', 'bool', [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('ns3::AttributeValue&', 'value')], is_const=True, is_virtual=True)
+    cls.add_method('Get', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('ns3::AttributeValue&', 'value')], 
+                   is_const=True, is_virtual=True)
     ## object-vector.h: bool ns3::ObjectVectorAccessor::HasGetter() const [member function]
-    cls.add_method('HasGetter', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('HasGetter', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## object-vector.h: bool ns3::ObjectVectorAccessor::HasSetter() const [member function]
-    cls.add_method('HasSetter', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('HasSetter', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## object-vector.h: bool ns3::ObjectVectorAccessor::DoGetN(ns3::ObjectBase const * object, uint32_t * n) const [member function]
-    cls.add_method('DoGetN', 'bool', [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('uint32_t *', 'n')], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetN', 
+                   'bool', 
+                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('uint32_t *', 'n')], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## object-vector.h: ns3::Ptr<ns3::Object> ns3::ObjectVectorAccessor::DoGet(ns3::ObjectBase const * object, uint32_t i) const [member function]
-    cls.add_method('DoGet', 'ns3::Ptr< ns3::Object >', [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGet', 
+                   'ns3::Ptr< ns3::Object >', 
+                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False, is_const=True), param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3PointerValue_methods(root_module, cls):
     ## pointer.h: ns3::PointerValue::PointerValue(ns3::PointerValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PointerValue&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::PointerValue&', 'arg0', is_const=True)])
     ## pointer.h: ns3::PointerValue::PointerValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## pointer.h: ns3::PointerValue::PointerValue(ns3::Ptr<ns3::Object> object) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::Object >', 'object')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::Object >', 'object')])
     ## pointer.h: void ns3::PointerValue::SetObject(ns3::Ptr<ns3::Object> object) [member function]
-    cls.add_method('SetObject', 'void', [param('ns3::Ptr< ns3::Object >', 'object')])
+    cls.add_method('SetObject', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Object >', 'object')])
     ## pointer.h: ns3::Ptr<ns3::Object> ns3::PointerValue::GetObject() const [member function]
-    cls.add_method('GetObject', 'ns3::Ptr< ns3::Object >', [], is_const=True)
+    cls.add_method('GetObject', 
+                   'ns3::Ptr< ns3::Object >', 
+                   [], 
+                   is_const=True)
     ## pointer.h: ns3::Ptr<ns3::AttributeValue> ns3::PointerValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## pointer.h: std::string ns3::PointerValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## pointer.h: bool ns3::PointerValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
@@ -1046,225 +1654,409 @@
 
 def register_Ns3DoubleValue_methods(root_module, cls):
     ## double.h: ns3::DoubleValue::DoubleValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## double.h: ns3::DoubleValue::DoubleValue(double const & value) [constructor]
-    cls.add_constructor([param('double&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('double&', 'value', is_const=True)])
     ## double.h: void ns3::DoubleValue::Set(double const & value) [member function]
-    cls.add_method('Set', 'void', [param('double&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('double&', 'value', is_const=True)])
     ## double.h: double ns3::DoubleValue::Get() const [member function]
-    cls.add_method('Get', 'double', [], is_const=True)
+    cls.add_method('Get', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## double.h: ns3::Ptr<ns3::AttributeValue> ns3::DoubleValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## double.h: std::string ns3::DoubleValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## double.h: bool ns3::DoubleValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
-    return
-
-def register_Ns3StringValue_methods(root_module, cls):
-    ## string.h: ns3::StringValue::StringValue() [constructor]
-    cls.add_constructor([], visibility='public')
-    ## string.h: ns3::StringValue::StringValue(std::string const & value) [constructor]
-    cls.add_constructor([param('std::string&', 'value', is_const=True)], visibility='public')
-    ## string.h: void ns3::StringValue::Set(std::string const & value) [member function]
-    cls.add_method('Set', 'void', [param('std::string&', 'value', is_const=True)])
-    ## string.h: std::string ns3::StringValue::Get() const [member function]
-    cls.add_method('Get', 'std::string', [], is_const=True)
-    ## string.h: ns3::Ptr<ns3::AttributeValue> ns3::StringValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
-    ## string.h: std::string ns3::StringValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
-    ## string.h: bool ns3::StringValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3TypeIdValue_methods(root_module, cls):
     ## type-id.h: ns3::TypeIdValue::TypeIdValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## type-id.h: ns3::TypeIdValue::TypeIdValue(ns3::TypeId const & value) [constructor]
-    cls.add_constructor([param('ns3::TypeId&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::TypeId&', 'value', is_const=True)])
     ## type-id.h: void ns3::TypeIdValue::Set(ns3::TypeId const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::TypeId&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::TypeId&', 'value', is_const=True)])
     ## type-id.h: ns3::TypeId ns3::TypeIdValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::TypeId', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True)
     ## type-id.h: ns3::Ptr<ns3::AttributeValue> ns3::TypeIdValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## type-id.h: std::string ns3::TypeIdValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## type-id.h: bool ns3::TypeIdValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3EnumValue_methods(root_module, cls):
     ## enum.h: ns3::EnumValue::EnumValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## enum.h: ns3::EnumValue::EnumValue(int v) [constructor]
-    cls.add_constructor([param('int', 'v')], visibility='public')
+    cls.add_constructor([param('int', 'v')])
     ## enum.h: void ns3::EnumValue::Set(int v) [member function]
-    cls.add_method('Set', 'void', [param('int', 'v')])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('int', 'v')])
     ## enum.h: int ns3::EnumValue::Get() const [member function]
-    cls.add_method('Get', 'int', [], is_const=True)
+    cls.add_method('Get', 
+                   'int', 
+                   [], 
+                   is_const=True)
     ## enum.h: ns3::Ptr<ns3::AttributeValue> ns3::EnumValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## enum.h: std::string ns3::EnumValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## enum.h: bool ns3::EnumValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3RandomVariableValue_methods(root_module, cls):
     ## random-variable.h: ns3::RandomVariableValue::RandomVariableValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-variable.h: ns3::RandomVariableValue::RandomVariableValue(ns3::RandomVariable const & value) [constructor]
-    cls.add_constructor([param('ns3::RandomVariable&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::RandomVariable&', 'value', is_const=True)])
     ## random-variable.h: void ns3::RandomVariableValue::Set(ns3::RandomVariable const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::RandomVariable&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::RandomVariable&', 'value', is_const=True)])
     ## random-variable.h: ns3::RandomVariable ns3::RandomVariableValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::RandomVariable', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::RandomVariable', 
+                   [], 
+                   is_const=True)
     ## random-variable.h: ns3::Ptr<ns3::AttributeValue> ns3::RandomVariableValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## random-variable.h: std::string ns3::RandomVariableValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## random-variable.h: bool ns3::RandomVariableValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3ObjectFactoryValue_methods(root_module, cls):
     ## object-factory.h: ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## object-factory.h: ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
-    cls.add_constructor([param('ns3::ObjectFactory&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::ObjectFactory&', 'value', is_const=True)])
     ## object-factory.h: void ns3::ObjectFactoryValue::Set(ns3::ObjectFactory const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::ObjectFactory&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::ObjectFactory&', 'value', is_const=True)])
     ## object-factory.h: ns3::ObjectFactory ns3::ObjectFactoryValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::ObjectFactory', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::ObjectFactory', 
+                   [], 
+                   is_const=True)
     ## object-factory.h: ns3::Ptr<ns3::AttributeValue> ns3::ObjectFactoryValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## object-factory.h: std::string ns3::ObjectFactoryValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## object-factory.h: bool ns3::ObjectFactoryValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3IntegerValue_methods(root_module, cls):
     ## integer.h: ns3::IntegerValue::IntegerValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## integer.h: ns3::IntegerValue::IntegerValue(int64_t const & value) [constructor]
-    cls.add_constructor([param('int64_t&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('int64_t&', 'value', is_const=True)])
     ## integer.h: void ns3::IntegerValue::Set(int64_t const & value) [member function]
-    cls.add_method('Set', 'void', [param('int64_t&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('int64_t&', 'value', is_const=True)])
     ## integer.h: int64_t ns3::IntegerValue::Get() const [member function]
-    cls.add_method('Get', 'int64_t', [], is_const=True)
+    cls.add_method('Get', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## integer.h: ns3::Ptr<ns3::AttributeValue> ns3::IntegerValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## integer.h: std::string ns3::IntegerValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## integer.h: bool ns3::IntegerValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    return
+
+def register_Ns3BooleanValue_methods(root_module, cls):
+    ## boolean.h: ns3::BooleanValue::BooleanValue(ns3::BooleanValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BooleanValue&', 'arg0', is_const=True)])
+    ## boolean.h: ns3::BooleanValue::BooleanValue() [constructor]
+    cls.add_constructor([])
+    ## boolean.h: ns3::BooleanValue::BooleanValue(bool value) [constructor]
+    cls.add_constructor([param('bool', 'value')])
+    ## boolean.h: ns3::Ptr<ns3::AttributeValue> ns3::BooleanValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## boolean.h: bool ns3::BooleanValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## boolean.h: bool ns3::BooleanValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## boolean.h: std::string ns3::BooleanValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## boolean.h: void ns3::BooleanValue::Set(bool value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('bool', 'value')])
+    cls.add_output_stream_operator()
+    return
+
+def register_Ns3StringValue_methods(root_module, cls):
+    ## string.h: ns3::StringValue::StringValue() [constructor]
+    cls.add_constructor([])
+    ## string.h: ns3::StringValue::StringValue(std::string const & value) [constructor]
+    cls.add_constructor([param('std::string&', 'value', is_const=True)])
+    ## string.h: void ns3::StringValue::Set(std::string const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('std::string&', 'value', is_const=True)])
+    ## string.h: std::string ns3::StringValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
+    ## string.h: ns3::Ptr<ns3::AttributeValue> ns3::StringValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## string.h: std::string ns3::StringValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## string.h: bool ns3::StringValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3EmptyAttributeValue_methods(root_module, cls):
     ## attribute.h: ns3::EmptyAttributeValue::EmptyAttributeValue(ns3::EmptyAttributeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EmptyAttributeValue&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::EmptyAttributeValue&', 'arg0', is_const=True)])
     ## attribute.h: ns3::EmptyAttributeValue::EmptyAttributeValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## attribute.h: ns3::Ptr<ns3::AttributeValue> ns3::EmptyAttributeValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## attribute.h: std::string ns3::EmptyAttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## attribute.h: bool ns3::EmptyAttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], visibility='private', is_virtual=True)
-    return
-
-def register_Ns3BooleanValue_methods(root_module, cls):
-    ## boolean.h: ns3::BooleanValue::BooleanValue(ns3::BooleanValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::BooleanValue&', 'arg0', is_const=True)], visibility='public')
-    ## boolean.h: ns3::BooleanValue::BooleanValue() [constructor]
-    cls.add_constructor([], visibility='public')
-    ## boolean.h: ns3::BooleanValue::BooleanValue(bool value) [constructor]
-    cls.add_constructor([param('bool', 'value')], visibility='public')
-    ## boolean.h: ns3::Ptr<ns3::AttributeValue> ns3::BooleanValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
-    ## boolean.h: bool ns3::BooleanValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
-    ## boolean.h: bool ns3::BooleanValue::Get() const [member function]
-    cls.add_method('Get', 'bool', [], is_const=True)
-    ## boolean.h: std::string ns3::BooleanValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
-    ## boolean.h: void ns3::BooleanValue::Set(bool value) [member function]
-    cls.add_method('Set', 'void', [param('bool', 'value')])
-    cls.add_output_stream_operator()
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls):
     ## traced-value.h: ns3::TracedValue<unsigned int>::TracedValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## traced-value.h: ns3::TracedValue<unsigned int>::TracedValue(ns3::TracedValue<unsigned int> const & o) [copy constructor]
-    cls.add_constructor([param('ns3::TracedValue< unsigned int >&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::TracedValue< unsigned int >&', 'o', is_const=True)])
     ## traced-value.h: ns3::TracedValue<unsigned int>::TracedValue(unsigned int const & v) [constructor]
-    cls.add_constructor([param('unsigned int&', 'v', is_const=True)], visibility='public')
+    cls.add_constructor([param('unsigned int&', 'v', is_const=True)])
     ## traced-value.h: ns3::TracedValue<unsigned int>::TracedValue(ns3::IntegerValue const & value) [constructor]
-    cls.add_constructor([param('ns3::IntegerValue&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::IntegerValue&', 'value', is_const=True)])
     ## traced-value.h: ns3::TracedValue<unsigned int>::TracedValue(ns3::UintegerValue const & value) [constructor]
-    cls.add_constructor([param('ns3::UintegerValue&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::UintegerValue&', 'value', is_const=True)])
     ## traced-value.h: ns3::TracedValue<unsigned int>::TracedValue(ns3::BooleanValue const & value) [constructor]
-    cls.add_constructor([param('ns3::BooleanValue&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::BooleanValue&', 'value', is_const=True)])
     ## traced-value.h: ns3::TracedValue<unsigned int>::TracedValue(ns3::EnumValue const & value) [constructor]
-    cls.add_constructor([param('ns3::EnumValue&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::EnumValue&', 'value', is_const=True)])
     ## traced-value.h: void ns3::TracedValue<unsigned int>::ConnectWithoutContext(ns3::CallbackBase const & cb) [member function]
-    cls.add_method('ConnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'cb', is_const=True)])
+    cls.add_method('ConnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## 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&', 'cb', is_const=True), param('std::string', 'path')])
+    cls.add_method('Connect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'cb', is_const=True), param('std::string', 'path')])
     ## traced-value.h: void ns3::TracedValue<unsigned int>::DisconnectWithoutContext(ns3::CallbackBase const & cb) [member function]
-    cls.add_method('DisconnectWithoutContext', 'void', [param('ns3::CallbackBase&', 'cb', is_const=True)])
+    cls.add_method('DisconnectWithoutContext', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## 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&', 'cb', is_const=True), param('std::string', 'path')])
+    cls.add_method('Disconnect', 
+                   'void', 
+                   [param('ns3::CallbackBase&', 'cb', is_const=True), param('std::string', 'path')])
     ## traced-value.h: void ns3::TracedValue<unsigned int>::Set(unsigned int const & v) [member function]
-    cls.add_method('Set', 'void', [param('unsigned int&', 'v', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('unsigned int&', 'v', is_const=True)])
     ## traced-value.h: unsigned int ns3::TracedValue<unsigned int>::Get() const [member function]
-    cls.add_method('Get', 'unsigned int', [], is_const=True)
+    cls.add_method('Get', 
+                   'unsigned int', 
+                   [], 
+                   is_const=True)
     return
 
 def register_functions(root_module):
     module = root_module
     ## boolean.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeBooleanChecker() [free function]
-    module.add_function('MakeBooleanChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeBooleanChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['double'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['double'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['float'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['float'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['long'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['long'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['int'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['int'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['short'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['short'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['signed char'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['signed char'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['unsigned long'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['unsigned long'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['unsigned int'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['unsigned int'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['unsigned short'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['unsigned short'])
     ## type-name.h: extern std::string ns3::TypeNameGet() [free function]
-    module.add_function('TypeNameGet', 'std::string', [], template_parameters=['unsigned char'])
+    module.add_function('TypeNameGet', 
+                        'std::string', 
+                        [], 
+                        template_parameters=['unsigned char'])
     ## string.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeStringChecker() [free function]
-    module.add_function('MakeStringChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    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='""')])
+    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='""')])
     ## type-id.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeTypeIdChecker() [free function]
-    module.add_function('MakeTypeIdChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    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 >', [], template_parameters=['ns3::PointerValue'])
+    module.add_function('Create', 
+                        'ns3::Ptr< ns3::PointerValue >', 
+                        [], 
+                        template_parameters=['ns3::PointerValue'])
     ## ptr.h: extern ns3::Ptr<ns3::ObjectVectorValue> ns3::Create() [free function]
-    module.add_function('Create', 'ns3::Ptr< ns3::ObjectVectorValue >', [], template_parameters=['ns3::ObjectVectorValue'])
+    module.add_function('Create', 
+                        'ns3::Ptr< ns3::ObjectVectorValue >', 
+                        [], 
+                        template_parameters=['ns3::ObjectVectorValue'])
     ## object-factory.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeObjectFactoryChecker() [free function]
-    module.add_function('MakeObjectFactoryChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeObjectFactoryChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## breakpoint.h: extern void ns3::BreakpointFallback() [free function]
-    module.add_function('BreakpointFallback', 'void', [])
+    module.add_function('BreakpointFallback', 
+                        'void', 
+                        [])
     ## random-variable.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeRandomVariableChecker() [free function]
-    module.add_function('MakeRandomVariableChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeRandomVariableChecker', 
+                        '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)
@@ -1273,11 +2065,17 @@
 
 def register_functions_ns3_internal(module, root_module):
     ## uinteger.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::internal::MakeUintegerChecker(uint64_t min, uint64_t max, std::string name) [free function]
-    module.add_function('MakeUintegerChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [param('uint64_t', 'min'), param('uint64_t', 'max'), param('std::string', 'name')])
+    module.add_function('MakeUintegerChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [param('uint64_t', 'min'), param('uint64_t', 'max'), param('std::string', 'name')])
     ## integer.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::internal::MakeIntegerChecker(int64_t min, int64_t max, std::string name) [free function]
-    module.add_function('MakeIntegerChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [param('int64_t', 'min'), param('int64_t', 'max'), param('std::string', 'name')])
+    module.add_function('MakeIntegerChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [param('int64_t', 'min'), param('int64_t', 'max'), param('std::string', 'name')])
     ## double.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::internal::MakeDoubleChecker(double min, double max, std::string name) [free function]
-    module.add_function('MakeDoubleChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [param('double', 'min'), param('double', 'max'), param('std::string', 'name')])
+    module.add_function('MakeDoubleChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [param('double', 'min'), param('double', 'max'), param('std::string', 'name')])
     return
 
 def register_functions_ns3_TimeStepPrecision(module, root_module):
@@ -1285,31 +2083,57 @@
 
 def register_functions_ns3_Config(module, root_module):
     ## config.h: extern bool ns3::Config::SetDefaultFailSafe(std::string name, ns3::AttributeValue const & value) [free function]
-    module.add_function('SetDefaultFailSafe', 'bool', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    module.add_function('SetDefaultFailSafe', 
+                        'bool', 
+                        [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## config.h: extern void ns3::Config::DisconnectWithoutContext(std::string path, ns3::CallbackBase const & cb) [free function]
-    module.add_function('DisconnectWithoutContext', 'void', [param('std::string', 'path'), param('ns3::CallbackBase&', 'cb', is_const=True)])
+    module.add_function('DisconnectWithoutContext', 
+                        'void', 
+                        [param('std::string', 'path'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## config.h: extern void ns3::Config::SetDefault(std::string name, ns3::AttributeValue const & value) [free function]
-    module.add_function('SetDefault', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    module.add_function('SetDefault', 
+                        'void', 
+                        [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## config.h: extern void ns3::Config::Connect(std::string path, ns3::CallbackBase const & cb) [free function]
-    module.add_function('Connect', 'void', [param('std::string', 'path'), param('ns3::CallbackBase&', 'cb', is_const=True)])
+    module.add_function('Connect', 
+                        'void', 
+                        [param('std::string', 'path'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## config.h: extern ns3::Ptr<ns3::Object> ns3::Config::GetRootNamespaceObject(uint32_t i) [free function]
-    module.add_function('GetRootNamespaceObject', 'ns3::Ptr< ns3::Object >', [param('uint32_t', 'i')])
+    module.add_function('GetRootNamespaceObject', 
+                        'ns3::Ptr< ns3::Object >', 
+                        [param('uint32_t', 'i')])
     ## config.h: extern void ns3::Config::ConnectWithoutContext(std::string path, ns3::CallbackBase const & cb) [free function]
-    module.add_function('ConnectWithoutContext', 'void', [param('std::string', 'path'), param('ns3::CallbackBase&', 'cb', is_const=True)])
+    module.add_function('ConnectWithoutContext', 
+                        'void', 
+                        [param('std::string', 'path'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     ## config.h: extern void ns3::Config::UnregisterRootNamespaceObject(ns3::Ptr<ns3::Object> obj) [free function]
-    module.add_function('UnregisterRootNamespaceObject', 'void', [param('ns3::Ptr< ns3::Object >', 'obj')])
+    module.add_function('UnregisterRootNamespaceObject', 
+                        'void', 
+                        [param('ns3::Ptr< ns3::Object >', 'obj')])
     ## config.h: extern bool ns3::Config::SetGlobalFailSafe(std::string name, ns3::AttributeValue const & value) [free function]
-    module.add_function('SetGlobalFailSafe', 'bool', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    module.add_function('SetGlobalFailSafe', 
+                        'bool', 
+                        [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## config.h: extern uint32_t ns3::Config::GetRootNamespaceObjectN() [free function]
-    module.add_function('GetRootNamespaceObjectN', 'uint32_t', [])
+    module.add_function('GetRootNamespaceObjectN', 
+                        'uint32_t', 
+                        [])
     ## config.h: extern void ns3::Config::Set(std::string path, ns3::AttributeValue const & value) [free function]
-    module.add_function('Set', 'void', [param('std::string', 'path'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    module.add_function('Set', 
+                        'void', 
+                        [param('std::string', 'path'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## config.h: extern void ns3::Config::SetGlobal(std::string name, ns3::AttributeValue const & value) [free function]
-    module.add_function('SetGlobal', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    module.add_function('SetGlobal', 
+                        'void', 
+                        [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## config.h: extern void ns3::Config::RegisterRootNamespaceObject(ns3::Ptr<ns3::Object> obj) [free function]
-    module.add_function('RegisterRootNamespaceObject', 'void', [param('ns3::Ptr< ns3::Object >', 'obj')])
+    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&', 'cb', is_const=True)])
+    module.add_function('Disconnect', 
+                        'void', 
+                        [param('std::string', 'path'), param('ns3::CallbackBase&', 'cb', is_const=True)])
     return
 
 def register_functions_ns3_olsr(module, root_module):
--- a/bindings/python/ns3_module_csma.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_csma.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -10,9 +10,9 @@
     ## backoff.h: ns3::Backoff [class]
     module.add_class('Backoff')
     ## csma-channel.h: ns3::CsmaChannel [class]
-    module.add_class('CsmaChannel', allow_subclassing=True, parent=root_module['ns3::Channel'])
+    module.add_class('CsmaChannel', parent=root_module['ns3::Channel'])
     ## csma-net-device.h: ns3::CsmaNetDevice [class]
-    module.add_class('CsmaNetDevice', allow_subclassing=True, parent=root_module['ns3::NetDevice'])
+    module.add_class('CsmaNetDevice', parent=root_module['ns3::NetDevice'])
     ## csma-net-device.h: ns3::CsmaNetDevice::CsmaEncapsulationMode [enumeration]
     module.add_enum('CsmaEncapsulationMode', ['ETHERNET_V1', 'IP_ARP', 'RAW', 'LLC'], outer_class=root_module['ns3::CsmaNetDevice'])
     
@@ -69,11 +69,13 @@
     ## csma-channel.h: ns3::CsmaDeviceRec::active [variable]
     cls.add_instance_attribute('active', 'bool', is_const=False)
     ## csma-channel.h: ns3::CsmaDeviceRec::CsmaDeviceRec() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## csma-channel.h: ns3::CsmaDeviceRec::CsmaDeviceRec(ns3::Ptr<ns3::CsmaNetDevice> device) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
     ## csma-channel.h: bool ns3::CsmaDeviceRec::IsActive() [member function]
-    cls.add_method('IsActive', 'bool', [])
+    cls.add_method('IsActive', 
+                   'bool', 
+                   [])
     return
 
 def register_Ns3Backoff_methods(root_module, cls):
@@ -88,139 +90,306 @@
     ## backoff.h: ns3::Backoff::m_slotTime [variable]
     cls.add_instance_attribute('m_slotTime', 'ns3::Time', is_const=False)
     ## backoff.h: ns3::Backoff::Backoff() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## backoff.h: ns3::Backoff::Backoff(ns3::Time slotTime, uint32_t minSlots, uint32_t maxSlots, uint32_t ceiling, uint32_t maxRetries) [constructor]
-    cls.add_constructor([param('ns3::Time', 'slotTime'), param('uint32_t', 'minSlots'), param('uint32_t', 'maxSlots'), param('uint32_t', 'ceiling'), param('uint32_t', 'maxRetries')], visibility='public')
+    cls.add_constructor([param('ns3::Time', 'slotTime'), param('uint32_t', 'minSlots'), param('uint32_t', 'maxSlots'), param('uint32_t', 'ceiling'), param('uint32_t', 'maxRetries')])
     ## backoff.h: ns3::Time ns3::Backoff::GetBackoffTime() [member function]
-    cls.add_method('GetBackoffTime', 'ns3::Time', [])
+    cls.add_method('GetBackoffTime', 
+                   'ns3::Time', 
+                   [])
     ## backoff.h: void ns3::Backoff::ResetBackoffTime() [member function]
-    cls.add_method('ResetBackoffTime', 'void', [])
+    cls.add_method('ResetBackoffTime', 
+                   'void', 
+                   [])
     ## backoff.h: bool ns3::Backoff::MaxRetriesReached() [member function]
-    cls.add_method('MaxRetriesReached', 'bool', [])
+    cls.add_method('MaxRetriesReached', 
+                   'bool', 
+                   [])
     ## backoff.h: void ns3::Backoff::IncrNumRetries() [member function]
-    cls.add_method('IncrNumRetries', 'void', [])
+    cls.add_method('IncrNumRetries', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3CsmaChannel_methods(root_module, cls):
     ## csma-channel.h: static ns3::TypeId ns3::CsmaChannel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## csma-channel.h: ns3::CsmaChannel::CsmaChannel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## csma-channel.h: int32_t ns3::CsmaChannel::Attach(ns3::Ptr<ns3::CsmaNetDevice> device) [member function]
-    cls.add_method('Attach', 'int32_t', [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
+    cls.add_method('Attach', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
     ## csma-channel.h: bool ns3::CsmaChannel::Detach(ns3::Ptr<ns3::CsmaNetDevice> device) [member function]
-    cls.add_method('Detach', 'bool', [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
+    cls.add_method('Detach', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
     ## csma-channel.h: bool ns3::CsmaChannel::Detach(uint32_t deviceId) [member function]
-    cls.add_method('Detach', 'bool', [param('uint32_t', 'deviceId')])
+    cls.add_method('Detach', 
+                   'bool', 
+                   [param('uint32_t', 'deviceId')])
     ## csma-channel.h: bool ns3::CsmaChannel::Reattach(uint32_t deviceId) [member function]
-    cls.add_method('Reattach', 'bool', [param('uint32_t', 'deviceId')])
+    cls.add_method('Reattach', 
+                   'bool', 
+                   [param('uint32_t', 'deviceId')])
     ## csma-channel.h: bool ns3::CsmaChannel::Reattach(ns3::Ptr<ns3::CsmaNetDevice> device) [member function]
-    cls.add_method('Reattach', 'bool', [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
+    cls.add_method('Reattach', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
     ## csma-channel.h: bool ns3::CsmaChannel::TransmitStart(ns3::Ptr<ns3::Packet> p, uint32_t srcId) [member function]
-    cls.add_method('TransmitStart', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'srcId')])
+    cls.add_method('TransmitStart', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'srcId')])
     ## csma-channel.h: bool ns3::CsmaChannel::TransmitEnd() [member function]
-    cls.add_method('TransmitEnd', 'bool', [])
+    cls.add_method('TransmitEnd', 
+                   'bool', 
+                   [])
     ## csma-channel.h: void ns3::CsmaChannel::PropagationCompleteEvent() [member function]
-    cls.add_method('PropagationCompleteEvent', 'void', [])
+    cls.add_method('PropagationCompleteEvent', 
+                   'void', 
+                   [])
     ## csma-channel.h: int32_t ns3::CsmaChannel::GetDeviceNum(ns3::Ptr<ns3::CsmaNetDevice> device) [member function]
-    cls.add_method('GetDeviceNum', 'int32_t', [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
+    cls.add_method('GetDeviceNum', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::CsmaNetDevice >', 'device')])
     ## csma-channel.h: ns3::WireState ns3::CsmaChannel::GetState() [member function]
-    cls.add_method('GetState', 'ns3::WireState', [])
+    cls.add_method('GetState', 
+                   'ns3::WireState', 
+                   [])
     ## csma-channel.h: bool ns3::CsmaChannel::IsBusy() [member function]
-    cls.add_method('IsBusy', 'bool', [])
+    cls.add_method('IsBusy', 
+                   'bool', 
+                   [])
     ## csma-channel.h: bool ns3::CsmaChannel::IsActive(uint32_t deviceId) [member function]
-    cls.add_method('IsActive', 'bool', [param('uint32_t', 'deviceId')])
+    cls.add_method('IsActive', 
+                   'bool', 
+                   [param('uint32_t', 'deviceId')])
     ## csma-channel.h: uint32_t ns3::CsmaChannel::GetNumActDevices() [member function]
-    cls.add_method('GetNumActDevices', 'uint32_t', [])
+    cls.add_method('GetNumActDevices', 
+                   'uint32_t', 
+                   [])
     ## csma-channel.h: uint32_t ns3::CsmaChannel::GetNDevices() const [member function]
-    cls.add_method('GetNDevices', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-channel.h: ns3::Ptr<ns3::NetDevice> ns3::CsmaChannel::GetDevice(uint32_t i) const [member function]
-    cls.add_method('GetDevice', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'i')], is_const=True, is_virtual=True)
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
     ## csma-channel.h: ns3::Ptr<ns3::CsmaNetDevice> ns3::CsmaChannel::GetCsmaDevice(uint32_t i) const [member function]
-    cls.add_method('GetCsmaDevice', 'ns3::Ptr< ns3::CsmaNetDevice >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetCsmaDevice', 
+                   'ns3::Ptr< ns3::CsmaNetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## csma-channel.h: ns3::DataRate ns3::CsmaChannel::GetDataRate() [member function]
-    cls.add_method('GetDataRate', 'ns3::DataRate', [], is_virtual=True)
+    cls.add_method('GetDataRate', 
+                   'ns3::DataRate', 
+                   [], 
+                   is_virtual=True)
     ## csma-channel.h: ns3::Time ns3::CsmaChannel::GetDelay() [member function]
-    cls.add_method('GetDelay', 'ns3::Time', [], is_virtual=True)
+    cls.add_method('GetDelay', 
+                   'ns3::Time', 
+                   [], 
+                   is_virtual=True)
     return
 
 def register_Ns3CsmaNetDevice_methods(root_module, cls):
     ## csma-net-device.h: static ns3::TypeId ns3::CsmaNetDevice::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## csma-net-device.h: ns3::CsmaNetDevice::CsmaNetDevice() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetInterframeGap(ns3::Time t) [member function]
-    cls.add_method('SetInterframeGap', 'void', [param('ns3::Time', 't')])
+    cls.add_method('SetInterframeGap', 
+                   'void', 
+                   [param('ns3::Time', 't')])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetBackoffParams(ns3::Time slotTime, uint32_t minSlots, uint32_t maxSlots, uint32_t maxRetries, uint32_t ceiling) [member function]
-    cls.add_method('SetBackoffParams', 'void', [param('ns3::Time', 'slotTime'), param('uint32_t', 'minSlots'), param('uint32_t', 'maxSlots'), param('uint32_t', 'maxRetries'), param('uint32_t', 'ceiling')])
+    cls.add_method('SetBackoffParams', 
+                   'void', 
+                   [param('ns3::Time', 'slotTime'), param('uint32_t', 'minSlots'), param('uint32_t', 'maxSlots'), param('uint32_t', 'maxRetries'), param('uint32_t', 'ceiling')])
     ## csma-net-device.h: bool ns3::CsmaNetDevice::Attach(ns3::Ptr<ns3::CsmaChannel> ch) [member function]
-    cls.add_method('Attach', 'bool', [param('ns3::Ptr< ns3::CsmaChannel >', 'ch')])
+    cls.add_method('Attach', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::CsmaChannel >', 'ch')])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetQueue(ns3::Ptr<ns3::Queue> queue) [member function]
-    cls.add_method('SetQueue', 'void', [param('ns3::Ptr< ns3::Queue >', 'queue')])
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Queue >', 'queue')])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetReceiveErrorModel(ns3::Ptr<ns3::ErrorModel> em) [member function]
-    cls.add_method('SetReceiveErrorModel', 'void', [param('ns3::Ptr< ns3::ErrorModel >', 'em')])
-    ## csma-net-device.h: void ns3::CsmaNetDevice::Receive(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('Receive', 'void', [param('ns3::Ptr< ns3::Packet >', 'p')])
+    cls.add_method('SetReceiveErrorModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::ErrorModel >', 'em')])
+    ## csma-net-device.h: void ns3::CsmaNetDevice::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ptr<ns3::CsmaNetDevice> sender) [member function]
+    cls.add_method('Receive', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ptr< ns3::CsmaNetDevice >', 'sender')])
     ## csma-net-device.h: bool ns3::CsmaNetDevice::IsSendEnabled() [member function]
-    cls.add_method('IsSendEnabled', 'bool', [])
+    cls.add_method('IsSendEnabled', 
+                   'bool', 
+                   [])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetSendEnable(bool enable) [member function]
-    cls.add_method('SetSendEnable', 'void', [param('bool', 'enable')])
+    cls.add_method('SetSendEnable', 
+                   'void', 
+                   [param('bool', 'enable')])
     ## csma-net-device.h: bool ns3::CsmaNetDevice::IsReceiveEnabled() [member function]
-    cls.add_method('IsReceiveEnabled', 'bool', [])
+    cls.add_method('IsReceiveEnabled', 
+                   'bool', 
+                   [])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetReceiveEnable(bool enable) [member function]
-    cls.add_method('SetReceiveEnable', 'void', [param('bool', 'enable')])
+    cls.add_method('SetReceiveEnable', 
+                   'void', 
+                   [param('bool', 'enable')])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetAddress(ns3::Mac48Address addr) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Mac48Address', 'addr')])
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'addr')])
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetName(std::string const name) [member function]
-    cls.add_method('SetName', 'void', [param('std::string', 'name', is_const=True)], is_virtual=True)
+    cls.add_method('SetName', 
+                   'void', 
+                   [param('std::string', 'name', is_const=True)], 
+                   is_virtual=True)
     ## csma-net-device.h: std::string ns3::CsmaNetDevice::GetName() const [member function]
-    cls.add_method('GetName', 'std::string', [], is_const=True, is_virtual=True)
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetIfIndex(uint32_t const index) [member function]
-    cls.add_method('SetIfIndex', 'void', [param('uint32_t', 'index', is_const=True)], is_virtual=True)
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t', 'index', is_const=True)], 
+                   is_virtual=True)
     ## csma-net-device.h: uint32_t ns3::CsmaNetDevice::GetIfIndex() const [member function]
-    cls.add_method('GetIfIndex', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: ns3::Ptr<ns3::Channel> ns3::CsmaNetDevice::GetChannel() const [member function]
-    cls.add_method('GetChannel', 'ns3::Ptr< ns3::Channel >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: ns3::Address ns3::CsmaNetDevice::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: bool ns3::CsmaNetDevice::SetMtu(uint16_t const mtu) [member function]
-    cls.add_method('SetMtu', 'bool', [param('uint16_t', 'mtu', is_const=True)], is_virtual=True)
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t', 'mtu', is_const=True)], 
+                   is_virtual=True)
     ## csma-net-device.h: uint16_t ns3::CsmaNetDevice::GetMtu() const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: bool ns3::CsmaNetDevice::IsLinkUp() const [member function]
-    cls.add_method('IsLinkUp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
-    cls.add_method('SetLinkChangeCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], is_virtual=True)
+    cls.add_method('SetLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_virtual=True)
     ## csma-net-device.h: bool ns3::CsmaNetDevice::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: ns3::Address ns3::CsmaNetDevice::GetBroadcast() const [member function]
-    cls.add_method('GetBroadcast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: bool ns3::CsmaNetDevice::IsMulticast() const [member function]
-    cls.add_method('IsMulticast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: ns3::Address ns3::CsmaNetDevice::GetMulticast() const [member function]
-    cls.add_method('GetMulticast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: ns3::Address ns3::CsmaNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
-    cls.add_method('MakeMulticastAddress', 'ns3::Address', [param('ns3::Ipv4Address', 'multicastGroup')], is_const=True, is_virtual=True)
+    cls.add_method('MakeMulticastAddress', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: bool ns3::CsmaNetDevice::IsPointToPoint() const [member function]
-    cls.add_method('IsPointToPoint', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: bool ns3::CsmaNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
-    cls.add_method('Send', 'bool', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], is_virtual=True)
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## csma-net-device.h: bool ns3::CsmaNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'source', is_const=True), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
     ## csma-net-device.h: ns3::Ptr<ns3::Node> ns3::CsmaNetDevice::GetNode() const [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')], is_virtual=True)
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_virtual=True)
     ## csma-net-device.h: bool ns3::CsmaNetDevice::NeedsArp() const [member function]
-    cls.add_method('NeedsArp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: void ns3::CsmaNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> cb) [member function]
-    cls.add_method('SetReceiveCallback', 'void', [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], is_virtual=True)
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
+    ## csma-net-device.h: void ns3::CsmaNetDevice::SetPromiscReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType> cb) [member function]
+    cls.add_method('SetPromiscReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType >', 'cb')], 
+                   is_virtual=True)
+    ## csma-net-device.h: bool ns3::CsmaNetDevice::SupportsPromiscuous() const [member function]
+    cls.add_method('SupportsPromiscuous', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## csma-net-device.h: void ns3::CsmaNetDevice::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## csma-net-device.h: ns3::Ptr<ns3::Queue> ns3::CsmaNetDevice::GetQueue() const [member function]
-    cls.add_method('GetQueue', 'ns3::Ptr< ns3::Queue >', [], is_const=True, visibility='protected')
-    ## csma-net-device.h: void ns3::CsmaNetDevice::AddHeader(ns3::Ptr<ns3::Packet> p, ns3::Mac48Address dest, uint16_t protocolNumber) [member function]
-    cls.add_method('AddHeader', 'void', [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Mac48Address', 'dest'), param('uint16_t', 'protocolNumber')], visibility='protected')
+    cls.add_method('GetQueue', 
+                   'ns3::Ptr< ns3::Queue >', 
+                   [], 
+                   is_const=True, visibility='protected')
+    ## csma-net-device.h: void ns3::CsmaNetDevice::AddHeader(ns3::Ptr<ns3::Packet> p, ns3::Mac48Address source, ns3::Mac48Address dest, uint16_t protocolNumber) [member function]
+    cls.add_method('AddHeader', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Mac48Address', 'source'), param('ns3::Mac48Address', 'dest'), param('uint16_t', 'protocolNumber')], 
+                   visibility='protected')
     ## csma-net-device.h: bool ns3::CsmaNetDevice::ProcessHeader(ns3::Ptr<ns3::Packet> p, uint16_t & param) [member function]
-    cls.add_method('ProcessHeader', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t&', 'param')], visibility='protected')
+    cls.add_method('ProcessHeader', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t&', 'param')], 
+                   visibility='protected')
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_global_routing.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_global_routing.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -16,7 +16,7 @@
     ## global-router-interface.h: ns3::GlobalRoutingLinkRecord::LinkType [enumeration]
     module.add_enum('LinkType', ['Unknown', 'PointToPoint', 'TransitNetwork', 'StubNetwork', 'VirtualLink'], outer_class=root_module['ns3::GlobalRoutingLinkRecord'])
     ## global-router-interface.h: ns3::GlobalRouter [class]
-    module.add_class('GlobalRouter', allow_subclassing=True, is_singleton=True, parent=root_module['ns3::Object'])
+    module.add_class('GlobalRouter', is_singleton=True, parent=root_module['ns3::Object'])
     
     ## Register a nested module for the namespace internal
     
@@ -67,99 +67,193 @@
 
 def register_Ns3GlobalRouteManager_methods(root_module, cls):
     ## global-route-manager.h: static void ns3::GlobalRouteManager::PopulateRoutingTables() [member function]
-    cls.add_method('PopulateRoutingTables', 'void', [], is_static=True)
+    cls.add_method('PopulateRoutingTables', 
+                   'void', 
+                   [], 
+                   is_static=True)
     ## global-route-manager.h: static uint32_t ns3::GlobalRouteManager::AllocateRouterId() [member function]
-    cls.add_method('AllocateRouterId', 'uint32_t', [], is_static=True)
+    cls.add_method('AllocateRouterId', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
     return
 
 def register_Ns3GlobalRoutingLSA_methods(root_module, cls):
     ## global-router-interface.h: ns3::GlobalRoutingLSA::GlobalRoutingLSA() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## global-router-interface.h: ns3::GlobalRoutingLSA::GlobalRoutingLSA(ns3::GlobalRoutingLSA::SPFStatus status, ns3::Ipv4Address linkStateId, ns3::Ipv4Address advertisingRtr) [constructor]
-    cls.add_constructor([param('ns3::GlobalRoutingLSA::SPFStatus', 'status'), param('ns3::Ipv4Address', 'linkStateId'), param('ns3::Ipv4Address', 'advertisingRtr')], visibility='public')
+    cls.add_constructor([param('ns3::GlobalRoutingLSA::SPFStatus', 'status'), param('ns3::Ipv4Address', 'linkStateId'), param('ns3::Ipv4Address', 'advertisingRtr')])
     ## global-router-interface.h: ns3::GlobalRoutingLSA::GlobalRoutingLSA(ns3::GlobalRoutingLSA & lsa) [constructor]
-    cls.add_constructor([param('ns3::GlobalRoutingLSA&', 'lsa')], visibility='public')
+    cls.add_constructor([param('ns3::GlobalRoutingLSA&', 'lsa')])
     ## global-router-interface.h: uint32_t ns3::GlobalRoutingLSA::AddAttachedRouter(ns3::Ipv4Address addr) [member function]
-    cls.add_method('AddAttachedRouter', 'uint32_t', [param('ns3::Ipv4Address', 'addr')])
+    cls.add_method('AddAttachedRouter', 
+                   'uint32_t', 
+                   [param('ns3::Ipv4Address', 'addr')])
     ## global-router-interface.h: uint32_t ns3::GlobalRoutingLSA::AddLinkRecord(ns3::GlobalRoutingLinkRecord * lr) [member function]
-    cls.add_method('AddLinkRecord', 'uint32_t', [param('ns3::GlobalRoutingLinkRecord *', 'lr')])
+    cls.add_method('AddLinkRecord', 
+                   'uint32_t', 
+                   [param('ns3::GlobalRoutingLinkRecord *', 'lr')])
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::ClearLinkRecords() [member function]
-    cls.add_method('ClearLinkRecords', 'void', [])
+    cls.add_method('ClearLinkRecords', 
+                   'void', 
+                   [])
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::CopyLinkRecords(ns3::GlobalRoutingLSA const & lsa) [member function]
-    cls.add_method('CopyLinkRecords', 'void', [param('ns3::GlobalRoutingLSA&', 'lsa', is_const=True)])
+    cls.add_method('CopyLinkRecords', 
+                   'void', 
+                   [param('ns3::GlobalRoutingLSA&', 'lsa', is_const=True)])
     ## global-router-interface.h: ns3::Ipv4Address ns3::GlobalRoutingLSA::GetAdvertisingRouter() const [member function]
-    cls.add_method('GetAdvertisingRouter', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetAdvertisingRouter', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: ns3::Ipv4Address ns3::GlobalRoutingLSA::GetAttachedRouter(uint32_t n) const [member function]
-    cls.add_method('GetAttachedRouter', 'ns3::Ipv4Address', [param('uint32_t', 'n')], is_const=True)
+    cls.add_method('GetAttachedRouter', 
+                   'ns3::Ipv4Address', 
+                   [param('uint32_t', 'n')], 
+                   is_const=True)
     ## global-router-interface.h: ns3::GlobalRoutingLSA::LSType ns3::GlobalRoutingLSA::GetLSType() const [member function]
-    cls.add_method('GetLSType', 'ns3::GlobalRoutingLSA::LSType', [], is_const=True)
+    cls.add_method('GetLSType', 
+                   'ns3::GlobalRoutingLSA::LSType', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: ns3::GlobalRoutingLinkRecord * ns3::GlobalRoutingLSA::GetLinkRecord(uint32_t n) const [member function]
-    cls.add_method('GetLinkRecord', 'ns3::GlobalRoutingLinkRecord *', [param('uint32_t', 'n')], is_const=True)
+    cls.add_method('GetLinkRecord', 
+                   'ns3::GlobalRoutingLinkRecord *', 
+                   [param('uint32_t', 'n')], 
+                   is_const=True)
     ## global-router-interface.h: ns3::Ipv4Address ns3::GlobalRoutingLSA::GetLinkStateId() const [member function]
-    cls.add_method('GetLinkStateId', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetLinkStateId', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: uint32_t ns3::GlobalRoutingLSA::GetNAttachedRouters() const [member function]
-    cls.add_method('GetNAttachedRouters', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNAttachedRouters', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: uint32_t ns3::GlobalRoutingLSA::GetNLinkRecords() const [member function]
-    cls.add_method('GetNLinkRecords', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNLinkRecords', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: ns3::Ipv4Mask ns3::GlobalRoutingLSA::GetNetworkLSANetworkMask() const [member function]
-    cls.add_method('GetNetworkLSANetworkMask', 'ns3::Ipv4Mask', [], is_const=True)
+    cls.add_method('GetNetworkLSANetworkMask', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: ns3::GlobalRoutingLSA::SPFStatus ns3::GlobalRoutingLSA::GetStatus() const [member function]
-    cls.add_method('GetStatus', 'ns3::GlobalRoutingLSA::SPFStatus', [], is_const=True)
+    cls.add_method('GetStatus', 
+                   'ns3::GlobalRoutingLSA::SPFStatus', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: bool ns3::GlobalRoutingLSA::IsEmpty() const [member function]
-    cls.add_method('IsEmpty', 'bool', [], is_const=True)
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::SetAdvertisingRouter(ns3::Ipv4Address rtr) [member function]
-    cls.add_method('SetAdvertisingRouter', 'void', [param('ns3::Ipv4Address', 'rtr')])
+    cls.add_method('SetAdvertisingRouter', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'rtr')])
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::SetLSType(ns3::GlobalRoutingLSA::LSType typ) [member function]
-    cls.add_method('SetLSType', 'void', [param('ns3::GlobalRoutingLSA::LSType', 'typ')])
+    cls.add_method('SetLSType', 
+                   'void', 
+                   [param('ns3::GlobalRoutingLSA::LSType', 'typ')])
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::SetLinkStateId(ns3::Ipv4Address addr) [member function]
-    cls.add_method('SetLinkStateId', 'void', [param('ns3::Ipv4Address', 'addr')])
+    cls.add_method('SetLinkStateId', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'addr')])
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::SetNetworkLSANetworkMask(ns3::Ipv4Mask mask) [member function]
-    cls.add_method('SetNetworkLSANetworkMask', 'void', [param('ns3::Ipv4Mask', 'mask')])
+    cls.add_method('SetNetworkLSANetworkMask', 
+                   'void', 
+                   [param('ns3::Ipv4Mask', 'mask')])
     ## global-router-interface.h: void ns3::GlobalRoutingLSA::SetStatus(ns3::GlobalRoutingLSA::SPFStatus status) [member function]
-    cls.add_method('SetStatus', 'void', [param('ns3::GlobalRoutingLSA::SPFStatus', 'status')])
+    cls.add_method('SetStatus', 
+                   'void', 
+                   [param('ns3::GlobalRoutingLSA::SPFStatus', 'status')])
     cls.add_output_stream_operator()
     return
 
 def register_Ns3GlobalRoutingLinkRecord_methods(root_module, cls):
     ## global-router-interface.h: ns3::GlobalRoutingLinkRecord::GlobalRoutingLinkRecord() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## global-router-interface.h: ns3::GlobalRoutingLinkRecord::GlobalRoutingLinkRecord(ns3::GlobalRoutingLinkRecord::LinkType linkType, ns3::Ipv4Address linkId, ns3::Ipv4Address linkData, uint16_t metric) [constructor]
-    cls.add_constructor([param('ns3::GlobalRoutingLinkRecord::LinkType', 'linkType'), param('ns3::Ipv4Address', 'linkId'), param('ns3::Ipv4Address', 'linkData'), param('uint16_t', 'metric')], visibility='public')
+    cls.add_constructor([param('ns3::GlobalRoutingLinkRecord::LinkType', 'linkType'), param('ns3::Ipv4Address', 'linkId'), param('ns3::Ipv4Address', 'linkData'), param('uint16_t', 'metric')])
     ## global-router-interface.h: ns3::Ipv4Address ns3::GlobalRoutingLinkRecord::GetLinkId() const [member function]
-    cls.add_method('GetLinkId', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetLinkId', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: void ns3::GlobalRoutingLinkRecord::SetLinkId(ns3::Ipv4Address addr) [member function]
-    cls.add_method('SetLinkId', 'void', [param('ns3::Ipv4Address', 'addr')])
+    cls.add_method('SetLinkId', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'addr')])
     ## global-router-interface.h: ns3::Ipv4Address ns3::GlobalRoutingLinkRecord::GetLinkData() const [member function]
-    cls.add_method('GetLinkData', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetLinkData', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: void ns3::GlobalRoutingLinkRecord::SetLinkData(ns3::Ipv4Address addr) [member function]
-    cls.add_method('SetLinkData', 'void', [param('ns3::Ipv4Address', 'addr')])
+    cls.add_method('SetLinkData', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'addr')])
     ## global-router-interface.h: ns3::GlobalRoutingLinkRecord::LinkType ns3::GlobalRoutingLinkRecord::GetLinkType() const [member function]
-    cls.add_method('GetLinkType', 'ns3::GlobalRoutingLinkRecord::LinkType', [], is_const=True)
+    cls.add_method('GetLinkType', 
+                   'ns3::GlobalRoutingLinkRecord::LinkType', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: void ns3::GlobalRoutingLinkRecord::SetLinkType(ns3::GlobalRoutingLinkRecord::LinkType linkType) [member function]
-    cls.add_method('SetLinkType', 'void', [param('ns3::GlobalRoutingLinkRecord::LinkType', 'linkType')])
+    cls.add_method('SetLinkType', 
+                   'void', 
+                   [param('ns3::GlobalRoutingLinkRecord::LinkType', 'linkType')])
     ## global-router-interface.h: uint16_t ns3::GlobalRoutingLinkRecord::GetMetric() const [member function]
-    cls.add_method('GetMetric', 'uint16_t', [], is_const=True)
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: void ns3::GlobalRoutingLinkRecord::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 'void', [param('uint16_t', 'metric')])
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint16_t', 'metric')])
     return
 
 def register_Ns3GlobalRouter_methods(root_module, cls):
     ## global-router-interface.h: static ns3::TypeId ns3::GlobalRouter::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## global-router-interface.h: ns3::GlobalRouter::GlobalRouter() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## global-router-interface.h: ns3::Ipv4Address ns3::GlobalRouter::GetRouterId() const [member function]
-    cls.add_method('GetRouterId', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetRouterId', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: uint32_t ns3::GlobalRouter::DiscoverLSAs() [member function]
-    cls.add_method('DiscoverLSAs', 'uint32_t', [])
+    cls.add_method('DiscoverLSAs', 
+                   'uint32_t', 
+                   [])
     ## global-router-interface.h: uint32_t ns3::GlobalRouter::GetNumLSAs() const [member function]
-    cls.add_method('GetNumLSAs', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNumLSAs', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## global-router-interface.h: bool ns3::GlobalRouter::GetLSA(uint32_t n, ns3::GlobalRoutingLSA & lsa) const [member function]
-    cls.add_method('GetLSA', 'bool', [param('uint32_t', 'n'), param('ns3::GlobalRoutingLSA&', 'lsa')], is_const=True)
+    cls.add_method('GetLSA', 
+                   'bool', 
+                   [param('uint32_t', 'n'), param('ns3::GlobalRoutingLSA&', 'lsa')], 
+                   is_const=True)
     ## global-router-interface.h: void ns3::GlobalRouter::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_helper.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_helper.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -103,296 +103,544 @@
 
 def register_Ns3MobilityHelper_methods(root_module, cls):
     ## mobility-helper.h: ns3::MobilityHelper::MobilityHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## mobility-helper.h: void ns3::MobilityHelper::SetPositionAllocator(ns3::Ptr<ns3::PositionAllocator> allocator) [member function]
-    cls.add_method('SetPositionAllocator', 'void', [param('ns3::Ptr< ns3::PositionAllocator >', 'allocator')])
+    cls.add_method('SetPositionAllocator', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::PositionAllocator >', 'allocator')])
     ## mobility-helper.h: void ns3::MobilityHelper::SetPositionAllocator(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue(), std::string n8="", ns3::AttributeValue const & v8=ns3::EmptyAttributeValue(), std::string n9="", ns3::AttributeValue const & v9=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetPositionAllocator', 'void', [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n8', default_value='""'), param('ns3::AttributeValue&', 'v8', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n9', default_value='""'), param('ns3::AttributeValue&', 'v9', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetPositionAllocator', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n8', default_value='""'), param('ns3::AttributeValue&', 'v8', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n9', default_value='""'), param('ns3::AttributeValue&', 'v9', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## mobility-helper.h: void ns3::MobilityHelper::SetMobilityModel(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue(), std::string n8="", ns3::AttributeValue const & v8=ns3::EmptyAttributeValue(), std::string n9="", ns3::AttributeValue const & v9=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetMobilityModel', 'void', [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n8', default_value='""'), param('ns3::AttributeValue&', 'v8', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n9', default_value='""'), param('ns3::AttributeValue&', 'v9', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetMobilityModel', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n8', default_value='""'), param('ns3::AttributeValue&', 'v8', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n9', default_value='""'), param('ns3::AttributeValue&', 'v9', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## mobility-helper.h: void ns3::MobilityHelper::PushReferenceMobilityModel(ns3::Ptr<ns3::Object> reference) [member function]
-    cls.add_method('PushReferenceMobilityModel', 'void', [param('ns3::Ptr< ns3::Object >', 'reference')])
+    cls.add_method('PushReferenceMobilityModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Object >', 'reference')])
     ## mobility-helper.h: void ns3::MobilityHelper::PopReferenceMobilityModel() [member function]
-    cls.add_method('PopReferenceMobilityModel', 'void', [])
+    cls.add_method('PopReferenceMobilityModel', 
+                   'void', 
+                   [])
     ## mobility-helper.h: std::string ns3::MobilityHelper::GetMobilityModelType() const [member function]
-    cls.add_method('GetMobilityModelType', 'std::string', [], is_const=True)
+    cls.add_method('GetMobilityModelType', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## mobility-helper.h: void ns3::MobilityHelper::Install(ns3::NodeContainer container) [member function]
-    cls.add_method('Install', 'void', [param('ns3::NodeContainer', 'container')])
+    cls.add_method('Install', 
+                   'void', 
+                   [param('ns3::NodeContainer', 'container')])
     ## mobility-helper.h: void ns3::MobilityHelper::InstallAll() [member function]
-    cls.add_method('InstallAll', 'void', [])
+    cls.add_method('InstallAll', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3InternetStackHelper_methods(root_module, cls):
     ## internet-stack-helper.h: void ns3::InternetStackHelper::Install(ns3::NodeContainer c) [member function]
-    cls.add_method('Install', 'void', [param('ns3::NodeContainer', 'c')])
+    cls.add_method('Install', 
+                   'void', 
+                   [param('ns3::NodeContainer', 'c')])
     ## internet-stack-helper.h: static void ns3::InternetStackHelper::EnablePcapAll(std::string filename) [member function]
-    cls.add_method('EnablePcapAll', 'void', [param('std::string', 'filename')], is_static=True)
+    cls.add_method('EnablePcapAll', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_static=True)
     cls.add_constructor([])
     return
 
 def register_Ns3NodeContainer_methods(root_module, cls):
     ## node-container.h: ns3::NodeContainer::NodeContainer() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## node-container.h: ns3::NodeContainer::NodeContainer(ns3::Ptr<ns3::Node> node) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node')])
     ## node-container.h: ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b) [constructor]
-    cls.add_constructor([param('ns3::NodeContainer&', 'a', is_const=True), param('ns3::NodeContainer&', 'b', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::NodeContainer&', 'a', is_const=True), param('ns3::NodeContainer&', 'b', is_const=True)])
     ## node-container.h: ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c) [constructor]
-    cls.add_constructor([param('ns3::NodeContainer&', 'a', is_const=True), param('ns3::NodeContainer&', 'b', is_const=True), param('ns3::NodeContainer&', 'c', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::NodeContainer&', 'a', is_const=True), param('ns3::NodeContainer&', 'b', is_const=True), param('ns3::NodeContainer&', 'c', is_const=True)])
     ## node-container.h: ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & a, ns3::NodeContainer const & b, ns3::NodeContainer const & c, ns3::NodeContainer const & d) [constructor]
-    cls.add_constructor([param('ns3::NodeContainer&', 'a', is_const=True), param('ns3::NodeContainer&', 'b', is_const=True), param('ns3::NodeContainer&', 'c', is_const=True), param('ns3::NodeContainer&', 'd', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::NodeContainer&', 'a', is_const=True), param('ns3::NodeContainer&', 'b', is_const=True), param('ns3::NodeContainer&', 'c', is_const=True), param('ns3::NodeContainer&', 'd', is_const=True)])
     ## node-container.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeContainer::Begin() const [member function]
-    cls.add_method('Begin', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', [], is_const=True)
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', 
+                   [], 
+                   is_const=True)
     ## node-container.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeContainer::End() const [member function]
-    cls.add_method('End', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', [], is_const=True)
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', 
+                   [], 
+                   is_const=True)
     ## node-container.h: uint32_t ns3::NodeContainer::GetN() const [member function]
-    cls.add_method('GetN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## node-container.h: ns3::Ptr<ns3::Node> ns3::NodeContainer::Get(uint32_t i) const [member function]
-    cls.add_method('Get', 'ns3::Ptr< ns3::Node >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## node-container.h: void ns3::NodeContainer::Create(uint32_t n) [member function]
-    cls.add_method('Create', 'void', [param('uint32_t', 'n')])
+    cls.add_method('Create', 
+                   'void', 
+                   [param('uint32_t', 'n')])
     ## node-container.h: void ns3::NodeContainer::Add(ns3::NodeContainer other) [member function]
-    cls.add_method('Add', 'void', [param('ns3::NodeContainer', 'other')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::NodeContainer', 'other')])
     ## node-container.h: void ns3::NodeContainer::Add(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('Add', 'void', [param('ns3::Ptr< ns3::Node >', 'node')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
     ## node-container.h: static ns3::NodeContainer ns3::NodeContainer::GetGlobal() [member function]
-    cls.add_method('GetGlobal', 'ns3::NodeContainer', [], is_static=True)
+    cls.add_method('GetGlobal', 
+                   'ns3::NodeContainer', 
+                   [], 
+                   is_static=True)
     return
 
 def register_Ns3PointToPointHelper_methods(root_module, cls):
     ## point-to-point-helper.h: ns3::PointToPointHelper::PointToPointHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## point-to-point-helper.h: void ns3::PointToPointHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetQueue', 'void', [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## point-to-point-helper.h: void ns3::PointToPointHelper::SetDeviceAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetDeviceAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetDeviceAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## point-to-point-helper.h: void ns3::PointToPointHelper::SetChannelAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetChannelAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetChannelAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## point-to-point-helper.h: void ns3::PointToPointHelper::SetDeviceParameter(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetDeviceParameter', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetDeviceParameter', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   deprecated=True)
     ## point-to-point-helper.h: void ns3::PointToPointHelper::SetChannelParameter(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetChannelParameter', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetChannelParameter', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)], 
+                   deprecated=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
+                   is_static=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')], 
+                   is_static=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('ns3::NodeContainer', 'n')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('ns3::NodeContainer', 'n')], 
+                   is_static=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnablePcapAll(std::string filename) [member function]
-    cls.add_method('EnablePcapAll', 'void', [param('std::string', 'filename')], is_static=True)
+    cls.add_method('EnablePcapAll', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_static=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
+                   is_static=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('ns3::NetDeviceContainer', 'd')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('ns3::NetDeviceContainer', 'd')], 
+                   is_static=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('ns3::NodeContainer', 'n')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('ns3::NodeContainer', 'n')], 
+                   is_static=True)
     ## point-to-point-helper.h: static void ns3::PointToPointHelper::EnableAsciiAll(std::ostream & os) [member function]
-    cls.add_method('EnableAsciiAll', 'void', [param('std::ostream&', 'os')], is_static=True)
+    cls.add_method('EnableAsciiAll', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_static=True)
     ## point-to-point-helper.h: ns3::NetDeviceContainer ns3::PointToPointHelper::Install(ns3::NodeContainer c) [member function]
-    cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::NodeContainer', 'c')])
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer', 'c')])
     ## point-to-point-helper.h: ns3::NetDeviceContainer ns3::PointToPointHelper::Install(ns3::Ptr<ns3::Node> a, ns3::Ptr<ns3::Node> b) [member function]
-    cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::Ptr< ns3::Node >', 'a'), param('ns3::Ptr< ns3::Node >', 'b')])
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::Ptr< ns3::Node >', 'a'), param('ns3::Ptr< ns3::Node >', 'b')])
     return
 
 def register_Ns3NetDeviceContainer_methods(root_module, cls):
     ## net-device-container.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::NetDevice>*,std::vector<ns3::Ptr<ns3::NetDevice>, std::allocator<ns3::Ptr<ns3::NetDevice> > > > ns3::NetDeviceContainer::Begin() const [member function]
-    cls.add_method('Begin', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::NetDevice >, std::vector< ns3::Ptr< ns3::NetDevice >, std::allocator< ns3::Ptr< ns3::NetDevice > > > >', [], is_const=True)
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::NetDevice >, std::vector< ns3::Ptr< ns3::NetDevice >, std::allocator< ns3::Ptr< ns3::NetDevice > > > >', 
+                   [], 
+                   is_const=True)
     ## net-device-container.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::NetDevice>*,std::vector<ns3::Ptr<ns3::NetDevice>, std::allocator<ns3::Ptr<ns3::NetDevice> > > > ns3::NetDeviceContainer::End() const [member function]
-    cls.add_method('End', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::NetDevice >, std::vector< ns3::Ptr< ns3::NetDevice >, std::allocator< ns3::Ptr< ns3::NetDevice > > > >', [], is_const=True)
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::NetDevice >, std::vector< ns3::Ptr< ns3::NetDevice >, std::allocator< ns3::Ptr< ns3::NetDevice > > > >', 
+                   [], 
+                   is_const=True)
     ## net-device-container.h: uint32_t ns3::NetDeviceContainer::GetN() const [member function]
-    cls.add_method('GetN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## net-device-container.h: ns3::Ptr<ns3::NetDevice> ns3::NetDeviceContainer::Get(uint32_t i) const [member function]
-    cls.add_method('Get', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## net-device-container.h: void ns3::NetDeviceContainer::Add(ns3::NetDeviceContainer other) [member function]
-    cls.add_method('Add', 'void', [param('ns3::NetDeviceContainer', 'other')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::NetDeviceContainer', 'other')])
     ## net-device-container.h: void ns3::NetDeviceContainer::Add(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('Add', 'void', [param('ns3::Ptr< ns3::NetDevice >', 'device')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
     cls.add_constructor([])
     return
 
 def register_Ns3CsmaHelper_methods(root_module, cls):
     ## csma-helper.h: ns3::CsmaHelper::CsmaHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## csma-helper.h: void ns3::CsmaHelper::SetQueue(std::string type, std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetQueue', 'void', [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## csma-helper.h: void ns3::CsmaHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
-    cls.add_method('SetDeviceAttribute', 'void', [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)])
+    cls.add_method('SetDeviceAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)])
     ## csma-helper.h: void ns3::CsmaHelper::SetChannelAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
-    cls.add_method('SetChannelAttribute', 'void', [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)])
+    cls.add_method('SetChannelAttribute', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)])
     ## csma-helper.h: void ns3::CsmaHelper::SetDeviceParameter(std::string n1, ns3::AttributeValue const & v1) [member function]
-    cls.add_method('SetDeviceParameter', 'void', [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)])
+    cls.add_method('SetDeviceParameter', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)], 
+                   deprecated=True)
     ## csma-helper.h: void ns3::CsmaHelper::SetChannelParameter(std::string n1, ns3::AttributeValue const & v1) [member function]
-    cls.add_method('SetChannelParameter', 'void', [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)])
+    cls.add_method('SetChannelParameter', 
+                   'void', 
+                   [param('std::string', 'n1'), param('ns3::AttributeValue&', 'v1', is_const=True)], 
+                   deprecated=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
+                   is_static=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')], 
+                   is_static=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('ns3::NodeContainer', 'n')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('ns3::NodeContainer', 'n')], 
+                   is_static=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnablePcapAll(std::string filename) [member function]
-    cls.add_method('EnablePcapAll', 'void', [param('std::string', 'filename')], is_static=True)
+    cls.add_method('EnablePcapAll', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_static=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
+                   is_static=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('ns3::NetDeviceContainer', 'd')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('ns3::NetDeviceContainer', 'd')], 
+                   is_static=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('ns3::NodeContainer', 'n')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('ns3::NodeContainer', 'n')], 
+                   is_static=True)
     ## csma-helper.h: static void ns3::CsmaHelper::EnableAsciiAll(std::ostream & os) [member function]
-    cls.add_method('EnableAsciiAll', 'void', [param('std::ostream&', 'os')], is_static=True)
+    cls.add_method('EnableAsciiAll', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_static=True)
     ## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c) [member function]
-    cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::NodeContainer&', 'c', is_const=True)])
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer&', 'c', is_const=True)])
     ## csma-helper.h: ns3::NetDeviceContainer ns3::CsmaHelper::Install(ns3::NodeContainer const & c, ns3::Ptr<ns3::CsmaChannel> channel) [member function]
-    cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::NodeContainer&', 'c', is_const=True), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')])
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer&', 'c', is_const=True), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')])
     return
 
 def register_Ns3UdpEchoServerHelper_methods(root_module, cls):
     ## udp-echo-helper.h: ns3::UdpEchoServerHelper::UdpEchoServerHelper(uint16_t port) [constructor]
-    cls.add_constructor([param('uint16_t', 'port')], visibility='public')
+    cls.add_constructor([param('uint16_t', 'port')])
     ## udp-echo-helper.h: void ns3::UdpEchoServerHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## udp-echo-helper.h: ns3::ApplicationContainer ns3::UdpEchoServerHelper::Install(ns3::NodeContainer c) [member function]
-    cls.add_method('Install', 'ns3::ApplicationContainer', [param('ns3::NodeContainer', 'c')])
+    cls.add_method('Install', 
+                   'ns3::ApplicationContainer', 
+                   [param('ns3::NodeContainer', 'c')])
     return
 
 def register_Ns3OlsrHelper_methods(root_module, cls):
     ## olsr-helper.h: ns3::OlsrHelper::OlsrHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## olsr-helper.h: void ns3::OlsrHelper::SetAgent(std::string tid, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetAgent', 'void', [param('std::string', 'tid'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetAgent', 
+                   'void', 
+                   [param('std::string', 'tid'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## olsr-helper.h: void ns3::OlsrHelper::Install(ns3::NodeContainer container) [member function]
-    cls.add_method('Install', 'void', [param('ns3::NodeContainer', 'container')])
+    cls.add_method('Install', 
+                   'void', 
+                   [param('ns3::NodeContainer', 'container')])
     ## olsr-helper.h: void ns3::OlsrHelper::Install(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('Install', 'void', [param('ns3::Ptr< ns3::Node >', 'node')])
+    cls.add_method('Install', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
     ## olsr-helper.h: void ns3::OlsrHelper::InstallAll() [member function]
-    cls.add_method('InstallAll', 'void', [])
+    cls.add_method('InstallAll', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3PacketSocketHelper_methods(root_module, cls):
     ## packet-socket-helper.h: void ns3::PacketSocketHelper::Install(ns3::NodeContainer c) [member function]
-    cls.add_method('Install', 'void', [param('ns3::NodeContainer', 'c')])
+    cls.add_method('Install', 
+                   'void', 
+                   [param('ns3::NodeContainer', 'c')])
     cls.add_constructor([])
     return
 
 def register_Ns3OnOffHelper_methods(root_module, cls):
     ## on-off-helper.h: ns3::OnOffHelper::OnOffHelper(std::string protocol, ns3::Address address) [constructor]
-    cls.add_constructor([param('std::string', 'protocol'), param('ns3::Address', 'address')], visibility='public')
+    cls.add_constructor([param('std::string', 'protocol'), param('ns3::Address', 'address')])
     ## on-off-helper.h: void ns3::OnOffHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## on-off-helper.h: ns3::ApplicationContainer ns3::OnOffHelper::Install(ns3::NodeContainer c) [member function]
-    cls.add_method('Install', 'ns3::ApplicationContainer', [param('ns3::NodeContainer', 'c')])
+    cls.add_method('Install', 
+                   'ns3::ApplicationContainer', 
+                   [param('ns3::NodeContainer', 'c')])
     return
 
 def register_Ns3UdpEchoClientHelper_methods(root_module, cls):
     ## udp-echo-helper.h: ns3::UdpEchoClientHelper::UdpEchoClientHelper(ns3::Ipv4Address ip, uint16_t port) [constructor]
-    cls.add_constructor([param('ns3::Ipv4Address', 'ip'), param('uint16_t', 'port')], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Address', 'ip'), param('uint16_t', 'port')])
     ## udp-echo-helper.h: void ns3::UdpEchoClientHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## udp-echo-helper.h: ns3::ApplicationContainer ns3::UdpEchoClientHelper::Install(ns3::NodeContainer c) [member function]
-    cls.add_method('Install', 'ns3::ApplicationContainer', [param('ns3::NodeContainer', 'c')])
+    cls.add_method('Install', 
+                   'ns3::ApplicationContainer', 
+                   [param('ns3::NodeContainer', 'c')])
     return
 
 def register_Ns3StaticMulticastRouteHelper_methods(root_module, cls):
     ## static-multicast-route-helper.h: ns3::StaticMulticastRouteHelper::StaticMulticastRouteHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::AddMulticastRoute(ns3::Ptr<ns3::Node> arg0, ns3::Ipv4Address source, ns3::Ipv4Address group, ns3::Ptr<ns3::NetDevice> input, ns3::NetDeviceContainer output) [member function]
-    cls.add_method('AddMulticastRoute', 'void', [param('ns3::Ptr< ns3::Node >', 'arg0'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('ns3::Ptr< ns3::NetDevice >', 'input'), param('ns3::NetDeviceContainer', 'output')])
+    cls.add_method('AddMulticastRoute', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'arg0'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('ns3::Ptr< ns3::NetDevice >', 'input'), param('ns3::NetDeviceContainer', 'output')])
     ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::SetDefaultMulticastRoute(ns3::Ptr<ns3::Node> n, ns3::Ptr<ns3::NetDevice> nd) [member function]
-    cls.add_method('SetDefaultMulticastRoute', 'void', [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
+    cls.add_method('SetDefaultMulticastRoute', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
     ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::JoinMulticastGroup(ns3::Ptr<ns3::Node> n, ns3::Ipv4Address source, ns3::Ipv4Address group) [member function]
-    cls.add_method('JoinMulticastGroup', 'void', [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group')])
+    cls.add_method('JoinMulticastGroup', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group')])
     return
 
 def register_Ns3Ipv4InterfaceContainer_methods(root_module, cls):
     ## ipv4-interface-container.h: ns3::Ipv4InterfaceContainer::Ipv4InterfaceContainer() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-interface-container.h: uint32_t ns3::Ipv4InterfaceContainer::GetN() const [member function]
-    cls.add_method('GetN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface-container.h: ns3::Ipv4Address ns3::Ipv4InterfaceContainer::GetAddress(uint32_t i) const [member function]
-    cls.add_method('GetAddress', 'ns3::Ipv4Address', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-interface-container.h: void ns3::Ipv4InterfaceContainer::SetMetric(uint32_t i, uint16_t metric) [member function]
-    cls.add_method('SetMetric', 'void', [param('uint32_t', 'i'), param('uint16_t', 'metric')])
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('uint16_t', 'metric')])
     ## ipv4-interface-container.h: void ns3::Ipv4InterfaceContainer::Add(ns3::Ptr<ns3::Ipv4> ipv4, uint32_t interface) [member function]
-    cls.add_method('Add', 'void', [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
     return
 
 def register_Ns3ApplicationContainer_methods(root_module, cls):
     ## application-container.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Application>*,std::vector<ns3::Ptr<ns3::Application>, std::allocator<ns3::Ptr<ns3::Application> > > > ns3::ApplicationContainer::Begin() const [member function]
-    cls.add_method('Begin', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Application >, std::vector< ns3::Ptr< ns3::Application >, std::allocator< ns3::Ptr< ns3::Application > > > >', [], is_const=True)
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Application >, std::vector< ns3::Ptr< ns3::Application >, std::allocator< ns3::Ptr< ns3::Application > > > >', 
+                   [], 
+                   is_const=True)
     ## application-container.h: __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Application>*,std::vector<ns3::Ptr<ns3::Application>, std::allocator<ns3::Ptr<ns3::Application> > > > ns3::ApplicationContainer::End() const [member function]
-    cls.add_method('End', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Application >, std::vector< ns3::Ptr< ns3::Application >, std::allocator< ns3::Ptr< ns3::Application > > > >', [], is_const=True)
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Application >, std::vector< ns3::Ptr< ns3::Application >, std::allocator< ns3::Ptr< ns3::Application > > > >', 
+                   [], 
+                   is_const=True)
     ## application-container.h: uint32_t ns3::ApplicationContainer::GetN() const [member function]
-    cls.add_method('GetN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## application-container.h: ns3::Ptr<ns3::Application> ns3::ApplicationContainer::Get(uint32_t i) const [member function]
-    cls.add_method('Get', 'ns3::Ptr< ns3::Application >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Ptr< ns3::Application >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## application-container.h: void ns3::ApplicationContainer::Add(ns3::ApplicationContainer other) [member function]
-    cls.add_method('Add', 'void', [param('ns3::ApplicationContainer', 'other')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::ApplicationContainer', 'other')])
     ## application-container.h: void ns3::ApplicationContainer::Add(ns3::Ptr<ns3::Application> application) [member function]
-    cls.add_method('Add', 'void', [param('ns3::Ptr< ns3::Application >', 'application')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Application >', 'application')])
     ## application-container.h: void ns3::ApplicationContainer::Start(ns3::Time start) [member function]
-    cls.add_method('Start', 'void', [param('ns3::Time', 'start')])
+    cls.add_method('Start', 
+                   'void', 
+                   [param('ns3::Time', 'start')])
     ## application-container.h: void ns3::ApplicationContainer::Stop(ns3::Time stop) [member function]
-    cls.add_method('Stop', 'void', [param('ns3::Time', 'stop')])
+    cls.add_method('Stop', 
+                   'void', 
+                   [param('ns3::Time', 'stop')])
     cls.add_constructor([])
     return
 
 def register_Ns3WifiHelper_methods(root_module, cls):
     ## wifi-helper.h: ns3::WifiHelper::WifiHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-helper.h: void ns3::WifiHelper::SetRemoteStationManager(std::string type, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetRemoteStationManager', 'void', [param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetRemoteStationManager', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## wifi-helper.h: void ns3::WifiHelper::SetMac(std::string type, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetMac', 'void', [param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetMac', 
+                   'void', 
+                   [param('std::string', 'type'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## wifi-helper.h: void ns3::WifiHelper::SetPhy(std::string phyType, std::string n0="", ns3::AttributeValue const & v0=ns3::EmptyAttributeValue(), std::string n1="", ns3::AttributeValue const & v1=ns3::EmptyAttributeValue(), std::string n2="", ns3::AttributeValue const & v2=ns3::EmptyAttributeValue(), std::string n3="", ns3::AttributeValue const & v3=ns3::EmptyAttributeValue(), std::string n4="", ns3::AttributeValue const & v4=ns3::EmptyAttributeValue(), std::string n5="", ns3::AttributeValue const & v5=ns3::EmptyAttributeValue(), std::string n6="", ns3::AttributeValue const & v6=ns3::EmptyAttributeValue(), std::string n7="", ns3::AttributeValue const & v7=ns3::EmptyAttributeValue()) [member function]
-    cls.add_method('SetPhy', 'void', [param('std::string', 'phyType'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
+    cls.add_method('SetPhy', 
+                   'void', 
+                   [param('std::string', 'phyType'), param('std::string', 'n0', default_value='""'), param('ns3::AttributeValue&', 'v0', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n1', default_value='""'), param('ns3::AttributeValue&', 'v1', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n2', default_value='""'), param('ns3::AttributeValue&', 'v2', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n3', default_value='""'), param('ns3::AttributeValue&', 'v3', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n4', default_value='""'), param('ns3::AttributeValue&', 'v4', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n5', default_value='""'), param('ns3::AttributeValue&', 'v5', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n6', default_value='""'), param('ns3::AttributeValue&', 'v6', default_value='ns3::EmptyAttributeValue()', is_const=True), param('std::string', 'n7', default_value='""'), param('ns3::AttributeValue&', 'v7', default_value='ns3::EmptyAttributeValue()', is_const=True)])
     ## wifi-helper.h: static void ns3::WifiHelper::EnablePcap(std::string filename, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
+                   is_static=True)
     ## wifi-helper.h: static void ns3::WifiHelper::EnablePcap(std::string filename, ns3::NetDeviceContainer d) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('ns3::NetDeviceContainer', 'd')], 
+                   is_static=True)
     ## wifi-helper.h: static void ns3::WifiHelper::EnablePcap(std::string filename, ns3::NodeContainer n) [member function]
-    cls.add_method('EnablePcap', 'void', [param('std::string', 'filename'), param('ns3::NodeContainer', 'n')], is_static=True)
+    cls.add_method('EnablePcap', 
+                   'void', 
+                   [param('std::string', 'filename'), param('ns3::NodeContainer', 'n')], 
+                   is_static=True)
     ## wifi-helper.h: static void ns3::WifiHelper::EnablePcapAll(std::string filename) [member function]
-    cls.add_method('EnablePcapAll', 'void', [param('std::string', 'filename')], is_static=True)
+    cls.add_method('EnablePcapAll', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_static=True)
     ## wifi-helper.h: static void ns3::WifiHelper::EnableAscii(std::ostream & os, uint32_t nodeid, uint32_t deviceid) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('uint32_t', 'nodeid'), param('uint32_t', 'deviceid')], 
+                   is_static=True)
     ## wifi-helper.h: static void ns3::WifiHelper::EnableAscii(std::ostream & os, ns3::NetDeviceContainer d) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('ns3::NetDeviceContainer', 'd')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('ns3::NetDeviceContainer', 'd')], 
+                   is_static=True)
     ## wifi-helper.h: static void ns3::WifiHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
-    cls.add_method('EnableAscii', 'void', [param('std::ostream&', 'os'), param('ns3::NodeContainer', 'n')], is_static=True)
+    cls.add_method('EnableAscii', 
+                   'void', 
+                   [param('std::ostream&', 'os'), param('ns3::NodeContainer', 'n')], 
+                   is_static=True)
     ## wifi-helper.h: static void ns3::WifiHelper::EnableAsciiAll(std::ostream & os) [member function]
-    cls.add_method('EnableAsciiAll', 'void', [param('std::ostream&', 'os')], is_static=True)
+    cls.add_method('EnableAsciiAll', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_static=True)
     ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::NodeContainer c) const [member function]
-    cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::NodeContainer', 'c')], is_const=True)
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer', 'c')], 
+                   is_const=True)
     ## wifi-helper.h: ns3::NetDeviceContainer ns3::WifiHelper::Install(ns3::NodeContainer c, ns3::Ptr<ns3::WifiChannel> channel) const [member function]
-    cls.add_method('Install', 'ns3::NetDeviceContainer', [param('ns3::NodeContainer', 'c'), param('ns3::Ptr< ns3::WifiChannel >', 'channel')], is_const=True)
+    cls.add_method('Install', 
+                   'ns3::NetDeviceContainer', 
+                   [param('ns3::NodeContainer', 'c'), param('ns3::Ptr< ns3::WifiChannel >', 'channel')], 
+                   is_const=True)
     return
 
 def register_Ns3Ipv4AddressHelper_methods(root_module, cls):
     ## ipv4-address-helper.h: ns3::Ipv4AddressHelper::Ipv4AddressHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-address-helper.h: void ns3::Ipv4AddressHelper::SetBase(ns3::Ipv4Address network, ns3::Ipv4Mask mask, ns3::Ipv4Address base="0.0.0.1") [member function]
-    cls.add_method('SetBase', 'void', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'mask'), param('ns3::Ipv4Address', 'base', default_value='"0.0.0.1"')])
+    cls.add_method('SetBase', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'mask'), param('ns3::Ipv4Address', 'base', default_value='"0.0.0.1"')])
     ## ipv4-address-helper.h: ns3::Ipv4Address ns3::Ipv4AddressHelper::NewNetwork() [member function]
-    cls.add_method('NewNetwork', 'ns3::Ipv4Address', [])
+    cls.add_method('NewNetwork', 
+                   'ns3::Ipv4Address', 
+                   [])
     ## ipv4-address-helper.h: ns3::Ipv4Address ns3::Ipv4AddressHelper::NewAddress() [member function]
-    cls.add_method('NewAddress', 'ns3::Ipv4Address', [])
+    cls.add_method('NewAddress', 
+                   'ns3::Ipv4Address', 
+                   [])
     ## ipv4-address-helper.h: ns3::Ipv4InterfaceContainer ns3::Ipv4AddressHelper::Assign(ns3::NetDeviceContainer const & c) [member function]
-    cls.add_method('Assign', 'ns3::Ipv4InterfaceContainer', [param('ns3::NetDeviceContainer&', 'c', is_const=True)])
+    cls.add_method('Assign', 
+                   'ns3::Ipv4InterfaceContainer', 
+                   [param('ns3::NetDeviceContainer&', 'c', is_const=True)])
     return
 
 def register_Ns3PacketSinkHelper_methods(root_module, cls):
     ## packet-sink-helper.h: ns3::PacketSinkHelper::PacketSinkHelper(std::string protocol, ns3::Address address) [constructor]
-    cls.add_constructor([param('std::string', 'protocol'), param('ns3::Address', 'address')], visibility='public')
+    cls.add_constructor([param('std::string', 'protocol'), param('ns3::Address', 'address')])
     ## packet-sink-helper.h: void ns3::PacketSinkHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttribute', 'void', [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
+    cls.add_method('SetAttribute', 
+                   'void', 
+                   [param('std::string', 'name'), param('ns3::AttributeValue&', 'value', is_const=True)])
     ## packet-sink-helper.h: ns3::ApplicationContainer ns3::PacketSinkHelper::Install(ns3::NodeContainer c) [member function]
-    cls.add_method('Install', 'ns3::ApplicationContainer', [param('ns3::NodeContainer', 'c')])
+    cls.add_method('Install', 
+                   'ns3::ApplicationContainer', 
+                   [param('ns3::NodeContainer', 'c')])
     return
 
 def register_Ns3Ns2MobilityHelper_methods(root_module, cls):
     ## ns2-mobility-helper.h: ns3::Ns2MobilityHelper::Ns2MobilityHelper(std::string filename) [constructor]
-    cls.add_constructor([param('std::string', 'filename')], visibility='public')
+    cls.add_constructor([param('std::string', 'filename')])
     ## ns2-mobility-helper.h: void ns3::Ns2MobilityHelper::Install() const [member function]
-    cls.add_method('Install', 'void', [], is_const=True)
+    cls.add_method('Install', 
+                   'void', 
+                   [], 
+                   is_const=True)
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_internet_stack.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_internet_stack.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,20 +1,20 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
     
     ## ipv4-interface.h: ns3::Ipv4Interface [class]
-    module.add_class('Ipv4Interface', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Ipv4Interface', parent=root_module['ns3::Object'])
     ## udp-header.h: ns3::UdpHeader [class]
-    module.add_class('UdpHeader', allow_subclassing=True, parent=root_module['ns3::Header'])
+    module.add_class('UdpHeader', parent=root_module['ns3::Header'])
     ## tcp-header.h: ns3::TcpHeader [class]
-    module.add_class('TcpHeader', allow_subclassing=True, parent=root_module['ns3::Header'])
+    module.add_class('TcpHeader', parent=root_module['ns3::Header'])
     ## tcp-header.h: ns3::TcpHeader::Flags_t [enumeration]
     module.add_enum('Flags_t', ['NONE', 'FIN', 'SYN', 'RST', 'PSH', 'ACK', 'URG'], outer_class=root_module['ns3::TcpHeader'])
     ## ipv4-static-routing.h: ns3::Ipv4StaticRouting [class]
-    module.add_class('Ipv4StaticRouting', allow_subclassing=True, parent=root_module['ns3::Ipv4RoutingProtocol'])
+    module.add_class('Ipv4StaticRouting', parent=root_module['ns3::Ipv4RoutingProtocol'])
     ## ipv4-l3-protocol.h: ns3::Ipv4L3Protocol [class]
-    module.add_class('Ipv4L3Protocol', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Ipv4L3Protocol', parent=root_module['ns3::Object'])
     
     ## Register a nested module for the namespace internal
     
@@ -66,267 +66,557 @@
 
 def register_Ns3Ipv4Interface_methods(root_module, cls):
     ## ipv4-interface.h: static ns3::TypeId ns3::Ipv4Interface::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## ipv4-interface.h: ns3::Ipv4Interface::Ipv4Interface() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-interface.h: ns3::Ptr<ns3::NetDevice> ns3::Ipv4Interface::GetDevice() const [member function]
-    cls.add_method('GetDevice', 'ns3::Ptr< ns3::NetDevice >', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4-interface.h: void ns3::Ipv4Interface::SetAddress(ns3::Ipv4Address a) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Ipv4Address', 'a')])
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'a')])
     ## ipv4-interface.h: void ns3::Ipv4Interface::SetNetworkMask(ns3::Ipv4Mask mask) [member function]
-    cls.add_method('SetNetworkMask', 'void', [param('ns3::Ipv4Mask', 'mask')])
+    cls.add_method('SetNetworkMask', 
+                   'void', 
+                   [param('ns3::Ipv4Mask', 'mask')])
     ## ipv4-interface.h: ns3::Ipv4Address ns3::Ipv4Interface::GetBroadcast() const [member function]
-    cls.add_method('GetBroadcast', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface.h: ns3::Ipv4Mask ns3::Ipv4Interface::GetNetworkMask() const [member function]
-    cls.add_method('GetNetworkMask', 'ns3::Ipv4Mask', [], is_const=True)
+    cls.add_method('GetNetworkMask', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface.h: void ns3::Ipv4Interface::SetMetric(uint16_t metric) [member function]
-    cls.add_method('SetMetric', 'void', [param('uint16_t', 'metric')])
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint16_t', 'metric')])
     ## ipv4-interface.h: uint16_t ns3::Ipv4Interface::GetMetric() const [member function]
-    cls.add_method('GetMetric', 'uint16_t', [], is_const=True)
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface.h: ns3::Ipv4Address ns3::Ipv4Interface::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface.h: uint16_t ns3::Ipv4Interface::GetMtu() const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [], is_const=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface.h: bool ns3::Ipv4Interface::IsUp() const [member function]
-    cls.add_method('IsUp', 'bool', [], is_const=True)
+    cls.add_method('IsUp', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface.h: bool ns3::Ipv4Interface::IsDown() const [member function]
-    cls.add_method('IsDown', 'bool', [], is_const=True)
+    cls.add_method('IsDown', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-interface.h: void ns3::Ipv4Interface::SetUp() [member function]
-    cls.add_method('SetUp', 'void', [])
+    cls.add_method('SetUp', 
+                   'void', 
+                   [])
     ## ipv4-interface.h: void ns3::Ipv4Interface::SetDown() [member function]
-    cls.add_method('SetDown', 'void', [])
+    cls.add_method('SetDown', 
+                   'void', 
+                   [])
     ## ipv4-interface.h: void ns3::Ipv4Interface::Send(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Address dest) [member function]
-    cls.add_method('Send', 'void', [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')])
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')])
     ## ipv4-interface.h: void ns3::Ipv4Interface::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## ipv4-interface.h: void ns3::Ipv4Interface::SendTo(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Address dest) [member function]
-    cls.add_method('SendTo', 'void', [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SendTo', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3UdpHeader_methods(root_module, cls):
     ## udp-header.h: ns3::UdpHeader::UdpHeader() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## udp-header.h: void ns3::UdpHeader::EnableChecksums() [member function]
-    cls.add_method('EnableChecksums', 'void', [])
+    cls.add_method('EnableChecksums', 
+                   'void', 
+                   [])
     ## udp-header.h: void ns3::UdpHeader::SetDestinationPort(uint16_t port) [member function]
-    cls.add_method('SetDestinationPort', 'void', [param('uint16_t', 'port')])
+    cls.add_method('SetDestinationPort', 
+                   'void', 
+                   [param('uint16_t', 'port')])
     ## udp-header.h: void ns3::UdpHeader::SetSourcePort(uint16_t port) [member function]
-    cls.add_method('SetSourcePort', 'void', [param('uint16_t', 'port')])
+    cls.add_method('SetSourcePort', 
+                   'void', 
+                   [param('uint16_t', 'port')])
     ## udp-header.h: uint16_t ns3::UdpHeader::GetSourcePort() const [member function]
-    cls.add_method('GetSourcePort', 'uint16_t', [], is_const=True)
+    cls.add_method('GetSourcePort', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## udp-header.h: uint16_t ns3::UdpHeader::GetDestinationPort() const [member function]
-    cls.add_method('GetDestinationPort', 'uint16_t', [], is_const=True)
+    cls.add_method('GetDestinationPort', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## udp-header.h: void ns3::UdpHeader::InitializeChecksum(ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol) [member function]
-    cls.add_method('InitializeChecksum', 'void', [param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol')])
+    cls.add_method('InitializeChecksum', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol')])
     ## udp-header.h: static ns3::TypeId ns3::UdpHeader::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## udp-header.h: ns3::TypeId ns3::UdpHeader::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## udp-header.h: void ns3::UdpHeader::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## udp-header.h: uint32_t ns3::UdpHeader::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## udp-header.h: void ns3::UdpHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
     ## udp-header.h: uint32_t ns3::UdpHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
     ## udp-header.h: bool ns3::UdpHeader::IsChecksumOk() const [member function]
-    cls.add_method('IsChecksumOk', 'bool', [], is_const=True)
+    cls.add_method('IsChecksumOk', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     return
 
 def register_Ns3TcpHeader_methods(root_module, cls):
     ## tcp-header.h: ns3::TcpHeader::TcpHeader() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## tcp-header.h: void ns3::TcpHeader::EnableChecksums() [member function]
-    cls.add_method('EnableChecksums', 'void', [])
+    cls.add_method('EnableChecksums', 
+                   'void', 
+                   [])
     ## tcp-header.h: void ns3::TcpHeader::SetSourcePort(uint16_t port) [member function]
-    cls.add_method('SetSourcePort', 'void', [param('uint16_t', 'port')])
+    cls.add_method('SetSourcePort', 
+                   'void', 
+                   [param('uint16_t', 'port')])
     ## tcp-header.h: void ns3::TcpHeader::SetDestinationPort(uint16_t port) [member function]
-    cls.add_method('SetDestinationPort', 'void', [param('uint16_t', 'port')])
+    cls.add_method('SetDestinationPort', 
+                   'void', 
+                   [param('uint16_t', 'port')])
     ## tcp-header.h: void ns3::TcpHeader::SetSequenceNumber(SequenceNumber sequenceNumber) [member function]
-    cls.add_method('SetSequenceNumber', 'void', [param('SequenceNumber', 'sequenceNumber')])
+    cls.add_method('SetSequenceNumber', 
+                   'void', 
+                   [param('SequenceNumber', 'sequenceNumber')])
     ## tcp-header.h: void ns3::TcpHeader::SetAckNumber(SequenceNumber ackNumber) [member function]
-    cls.add_method('SetAckNumber', 'void', [param('SequenceNumber', 'ackNumber')])
+    cls.add_method('SetAckNumber', 
+                   'void', 
+                   [param('SequenceNumber', 'ackNumber')])
     ## tcp-header.h: void ns3::TcpHeader::SetLength(uint8_t length) [member function]
-    cls.add_method('SetLength', 'void', [param('uint8_t', 'length')])
+    cls.add_method('SetLength', 
+                   'void', 
+                   [param('uint8_t', 'length')])
     ## tcp-header.h: void ns3::TcpHeader::SetFlags(uint8_t flags) [member function]
-    cls.add_method('SetFlags', 'void', [param('uint8_t', 'flags')])
+    cls.add_method('SetFlags', 
+                   'void', 
+                   [param('uint8_t', 'flags')])
     ## tcp-header.h: void ns3::TcpHeader::SetWindowSize(uint16_t windowSize) [member function]
-    cls.add_method('SetWindowSize', 'void', [param('uint16_t', 'windowSize')])
+    cls.add_method('SetWindowSize', 
+                   'void', 
+                   [param('uint16_t', 'windowSize')])
     ## tcp-header.h: void ns3::TcpHeader::SetUrgentPointer(uint16_t urgentPointer) [member function]
-    cls.add_method('SetUrgentPointer', 'void', [param('uint16_t', 'urgentPointer')])
+    cls.add_method('SetUrgentPointer', 
+                   'void', 
+                   [param('uint16_t', 'urgentPointer')])
     ## tcp-header.h: uint16_t ns3::TcpHeader::GetSourcePort() const [member function]
-    cls.add_method('GetSourcePort', 'uint16_t', [], is_const=True)
+    cls.add_method('GetSourcePort', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: uint16_t ns3::TcpHeader::GetDestinationPort() const [member function]
-    cls.add_method('GetDestinationPort', 'uint16_t', [], is_const=True)
+    cls.add_method('GetDestinationPort', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: SequenceNumber ns3::TcpHeader::GetSequenceNumber() const [member function]
-    cls.add_method('GetSequenceNumber', 'SequenceNumber', [], is_const=True)
+    cls.add_method('GetSequenceNumber', 
+                   'SequenceNumber', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: SequenceNumber ns3::TcpHeader::GetAckNumber() const [member function]
-    cls.add_method('GetAckNumber', 'SequenceNumber', [], is_const=True)
+    cls.add_method('GetAckNumber', 
+                   'SequenceNumber', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: uint8_t ns3::TcpHeader::GetLength() const [member function]
-    cls.add_method('GetLength', 'uint8_t', [], is_const=True)
+    cls.add_method('GetLength', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: uint8_t ns3::TcpHeader::GetFlags() const [member function]
-    cls.add_method('GetFlags', 'uint8_t', [], is_const=True)
+    cls.add_method('GetFlags', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: uint16_t ns3::TcpHeader::GetWindowSize() const [member function]
-    cls.add_method('GetWindowSize', 'uint16_t', [], is_const=True)
+    cls.add_method('GetWindowSize', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: uint16_t ns3::TcpHeader::GetUrgentPointer() const [member function]
-    cls.add_method('GetUrgentPointer', 'uint16_t', [], is_const=True)
+    cls.add_method('GetUrgentPointer', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## tcp-header.h: void ns3::TcpHeader::InitializeChecksum(ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol) [member function]
-    cls.add_method('InitializeChecksum', 'void', [param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol')])
+    cls.add_method('InitializeChecksum', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol')])
     ## tcp-header.h: static ns3::TypeId ns3::TcpHeader::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## tcp-header.h: ns3::TypeId ns3::TcpHeader::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## tcp-header.h: void ns3::TcpHeader::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## tcp-header.h: uint32_t ns3::TcpHeader::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## tcp-header.h: void ns3::TcpHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
     ## tcp-header.h: uint32_t ns3::TcpHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
     ## tcp-header.h: bool ns3::TcpHeader::IsChecksumOk() const [member function]
-    cls.add_method('IsChecksumOk', 'bool', [], is_const=True)
+    cls.add_method('IsChecksumOk', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     return
 
 def register_Ns3Ipv4StaticRouting_methods(root_module, cls):
     ## ipv4-static-routing.h: ns3::Ipv4StaticRouting::Ipv4StaticRouting() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-static-routing.h: bool ns3::Ipv4StaticRouting::RequestRoute(uint32_t ifIndex, ns3::Ipv4Header const & ipHeader, ns3::Ptr<ns3::Packet> packet, ns3::Callback<void,bool,const ns3::Ipv4Route&,ns3::Ptr<ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty> routeReply) [member function]
-    cls.add_method('RequestRoute', 'bool', [param('uint32_t', 'ifIndex'), param('ns3::Ipv4Header&', 'ipHeader', is_const=True), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, const ns3::Ipv4Route&, ns3::Ptr< ns3::Packet >, const ns3::Ipv4Header&, ns3::empty, ns3::empty >', 'routeReply')], is_virtual=True)
+    cls.add_method('RequestRoute', 
+                   'bool', 
+                   [param('uint32_t', 'ifIndex'), param('ns3::Ipv4Header&', 'ipHeader', is_const=True), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, const ns3::Ipv4Route&, ns3::Ptr< ns3::Packet >, const ns3::Ipv4Header&, ns3::empty, ns3::empty >', 'routeReply')], 
+                   is_virtual=True)
     ## ipv4-static-routing.h: bool ns3::Ipv4StaticRouting::RequestIfIndex(ns3::Ipv4Address destination, uint32_t & ifIndex) [member function]
-    cls.add_method('RequestIfIndex', 'bool', [param('ns3::Ipv4Address', 'destination'), param('uint32_t&', 'ifIndex')], is_virtual=True)
+    cls.add_method('RequestIfIndex', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'destination'), param('uint32_t&', 'ifIndex')], 
+                   is_virtual=True)
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('AddHostRouteTo', 'void', [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
+    cls.add_method('AddHostRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
-    cls.add_method('AddHostRouteTo', 'void', [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')])
+    cls.add_method('AddHostRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('AddNetworkRouteTo', 'void', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
+    cls.add_method('AddNetworkRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
-    cls.add_method('AddNetworkRouteTo', 'void', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')])
+    cls.add_method('AddNetworkRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('SetDefaultRoute', 'void', [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
+    cls.add_method('SetDefaultRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
     ## ipv4-static-routing.h: uint32_t ns3::Ipv4StaticRouting::GetNRoutes() [member function]
-    cls.add_method('GetNRoutes', 'uint32_t', [])
+    cls.add_method('GetNRoutes', 
+                   'uint32_t', 
+                   [])
     ## ipv4-static-routing.h: ns3::Ipv4Route * ns3::Ipv4StaticRouting::GetDefaultRoute() [member function]
-    cls.add_method('GetDefaultRoute', 'ns3::Ipv4Route *', [])
+    cls.add_method('GetDefaultRoute', 
+                   'ns3::Ipv4Route *', 
+                   [])
     ## ipv4-static-routing.h: ns3::Ipv4Route * ns3::Ipv4StaticRouting::GetRoute(uint32_t i) [member function]
-    cls.add_method('GetRoute', 'ns3::Ipv4Route *', [param('uint32_t', 'i')])
+    cls.add_method('GetRoute', 
+                   'ns3::Ipv4Route *', 
+                   [param('uint32_t', 'i')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::RemoveRoute(uint32_t i) [member function]
-    cls.add_method('RemoveRoute', 'void', [param('uint32_t', 'i')])
+    cls.add_method('RemoveRoute', 
+                   'void', 
+                   [param('uint32_t', 'i')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
-    cls.add_method('AddMulticastRoute', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')])
+    cls.add_method('AddMulticastRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
-    cls.add_method('SetDefaultMulticastRoute', 'void', [param('uint32_t', 'outputInterface')])
+    cls.add_method('SetDefaultMulticastRoute', 
+                   'void', 
+                   [param('uint32_t', 'outputInterface')])
     ## ipv4-static-routing.h: uint32_t ns3::Ipv4StaticRouting::GetNMulticastRoutes() const [member function]
-    cls.add_method('GetNMulticastRoutes', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNMulticastRoutes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-static-routing.h: ns3::Ipv4MulticastRoute * ns3::Ipv4StaticRouting::GetMulticastRoute(uint32_t i) const [member function]
-    cls.add_method('GetMulticastRoute', 'ns3::Ipv4MulticastRoute *', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetMulticastRoute', 
+                   'ns3::Ipv4MulticastRoute *', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-static-routing.h: ns3::Ipv4MulticastRoute * ns3::Ipv4StaticRouting::GetDefaultMulticastRoute() const [member function]
-    cls.add_method('GetDefaultMulticastRoute', 'ns3::Ipv4MulticastRoute *', [], is_const=True)
+    cls.add_method('GetDefaultMulticastRoute', 
+                   'ns3::Ipv4MulticastRoute *', 
+                   [], 
+                   is_const=True)
     ## ipv4-static-routing.h: bool ns3::Ipv4StaticRouting::RemoveMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface) [member function]
-    cls.add_method('RemoveMulticastRoute', 'bool', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')])
+    cls.add_method('RemoveMulticastRoute', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::RemoveMulticastRoute(uint32_t index) [member function]
-    cls.add_method('RemoveMulticastRoute', 'void', [param('uint32_t', 'index')])
+    cls.add_method('RemoveMulticastRoute', 
+                   'void', 
+                   [param('uint32_t', 'index')])
     ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     return
 
 def register_Ns3Ipv4L3Protocol_methods(root_module, cls):
     ## ipv4-l3-protocol.h: ns3::Ipv4L3Protocol::PROT_NUMBER [variable]
     cls.add_static_attribute('PROT_NUMBER', retval('uint16_t', is_const=True), is_const=True)
     ## ipv4-l3-protocol.h: static ns3::TypeId ns3::Ipv4L3Protocol::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## ipv4-l3-protocol.h: ns3::Ipv4L3Protocol::Ipv4L3Protocol() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')])
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetDefaultTtl(uint8_t ttl) [member function]
-    cls.add_method('SetDefaultTtl', 'void', [param('uint8_t', 'ttl')])
+    cls.add_method('SetDefaultTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
     ## ipv4-l3-protocol.h: ns3::Ptr<ns3::Ipv4Interface> ns3::Ipv4L3Protocol::FindInterfaceForDevice(ns3::Ptr<const ns3::NetDevice> device) [member function]
-    cls.add_method('FindInterfaceForDevice', 'ns3::Ptr< ns3::Ipv4Interface >', [param('ns3::Ptr< const ns3::NetDevice >', 'device')])
-    ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::Receive(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<ns3::Packet> p, uint16_t protocol, ns3::Address const & from) [member function]
-    cls.add_method('Receive', 'void', [param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'protocol'), param('ns3::Address&', 'from', is_const=True)])
+    cls.add_method('FindInterfaceForDevice', 
+                   'ns3::Ptr< ns3::Ipv4Interface >', 
+                   [param('ns3::Ptr< const ns3::NetDevice >', 'device')])
+    ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::Receive(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<ns3::Packet> p, uint16_t protocol, ns3::Address const & from, ns3::Address const & to, ns3::NetDevice::PacketType packetType) [member function]
+    cls.add_method('Receive', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'protocol'), param('ns3::Address&', 'from', is_const=True), param('ns3::Address&', 'to', is_const=True), param('ns3::NetDevice::PacketType', 'packetType')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol) [member function]
-    cls.add_method('Send', 'void', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol')])
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('AddHostRouteTo', 'void', [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
+    cls.add_method('AddHostRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::AddHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
-    cls.add_method('AddHostRouteTo', 'void', [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')])
+    cls.add_method('AddHostRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('AddNetworkRouteTo', 'void', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
+    cls.add_method('AddNetworkRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
-    cls.add_method('AddNetworkRouteTo', 'void', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')])
+    cls.add_method('AddNetworkRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('SetDefaultRoute', 'void', [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
+    cls.add_method('SetDefaultRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::Lookup(ns3::Ipv4Header const & ipHeader, ns3::Ptr<ns3::Packet> packet, ns3::Callback<void,bool,const ns3::Ipv4Route&,ns3::Ptr<ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty> routeReply) [member function]
-    cls.add_method('Lookup', 'void', [param('ns3::Ipv4Header&', 'ipHeader', is_const=True), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, const ns3::Ipv4Route&, ns3::Ptr< ns3::Packet >, const ns3::Ipv4Header&, ns3::empty, ns3::empty >', 'routeReply')])
+    cls.add_method('Lookup', 
+                   'void', 
+                   [param('ns3::Ipv4Header&', 'ipHeader', is_const=True), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, const ns3::Ipv4Route&, ns3::Ptr< ns3::Packet >, const ns3::Ipv4Header&, ns3::empty, ns3::empty >', 'routeReply')])
     ## ipv4-l3-protocol.h: uint32_t ns3::Ipv4L3Protocol::GetNRoutes() [member function]
-    cls.add_method('GetNRoutes', 'uint32_t', [])
+    cls.add_method('GetNRoutes', 
+                   'uint32_t', 
+                   [])
     ## ipv4-l3-protocol.h: ns3::Ipv4Route * ns3::Ipv4L3Protocol::GetRoute(uint32_t i) [member function]
-    cls.add_method('GetRoute', 'ns3::Ipv4Route *', [param('uint32_t', 'i')])
+    cls.add_method('GetRoute', 
+                   'ns3::Ipv4Route *', 
+                   [param('uint32_t', 'i')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::RemoveRoute(uint32_t i) [member function]
-    cls.add_method('RemoveRoute', 'void', [param('uint32_t', 'i')])
+    cls.add_method('RemoveRoute', 
+                   'void', 
+                   [param('uint32_t', 'i')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::AddMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
-    cls.add_method('AddMulticastRoute', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')])
+    cls.add_method('AddMulticastRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetDefaultMulticastRoute(uint32_t onputInterface) [member function]
-    cls.add_method('SetDefaultMulticastRoute', 'void', [param('uint32_t', 'onputInterface')])
+    cls.add_method('SetDefaultMulticastRoute', 
+                   'void', 
+                   [param('uint32_t', 'onputInterface')])
     ## ipv4-l3-protocol.h: uint32_t ns3::Ipv4L3Protocol::GetNMulticastRoutes() const [member function]
-    cls.add_method('GetNMulticastRoutes', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNMulticastRoutes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: ns3::Ipv4MulticastRoute * ns3::Ipv4L3Protocol::GetMulticastRoute(uint32_t i) const [member function]
-    cls.add_method('GetMulticastRoute', 'ns3::Ipv4MulticastRoute *', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetMulticastRoute', 
+                   'ns3::Ipv4MulticastRoute *', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::RemoveMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface) [member function]
-    cls.add_method('RemoveMulticastRoute', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')])
+    cls.add_method('RemoveMulticastRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::RemoveMulticastRoute(uint32_t i) [member function]
-    cls.add_method('RemoveMulticastRoute', 'void', [param('uint32_t', 'i')])
+    cls.add_method('RemoveMulticastRoute', 
+                   'void', 
+                   [param('uint32_t', 'i')])
     ## ipv4-l3-protocol.h: uint32_t ns3::Ipv4L3Protocol::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('AddInterface', 'uint32_t', [param('ns3::Ptr< ns3::NetDevice >', 'device')])
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
     ## ipv4-l3-protocol.h: ns3::Ptr<ns3::Ipv4Interface> ns3::Ipv4L3Protocol::GetInterface(uint32_t i) const [member function]
-    cls.add_method('GetInterface', 'ns3::Ptr< ns3::Ipv4Interface >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetInterface', 
+                   'ns3::Ptr< ns3::Ipv4Interface >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: uint32_t ns3::Ipv4L3Protocol::GetNInterfaces() const [member function]
-    cls.add_method('GetNInterfaces', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: uint32_t ns3::Ipv4L3Protocol::FindInterfaceForAddr(ns3::Ipv4Address addr) const [member function]
-    cls.add_method('FindInterfaceForAddr', 'uint32_t', [param('ns3::Ipv4Address', 'addr')], is_const=True)
+    cls.add_method('FindInterfaceForAddr', 
+                   'uint32_t', 
+                   [param('ns3::Ipv4Address', 'addr')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: uint32_t ns3::Ipv4L3Protocol::FindInterfaceForAddr(ns3::Ipv4Address addr, ns3::Ipv4Mask mask) const [member function]
-    cls.add_method('FindInterfaceForAddr', 'uint32_t', [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask')], is_const=True)
+    cls.add_method('FindInterfaceForAddr', 
+                   'uint32_t', 
+                   [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: int32_t ns3::Ipv4L3Protocol::FindInterfaceIndexForDevice(ns3::Ptr<ns3::NetDevice> device) const [member function]
-    cls.add_method('FindInterfaceIndexForDevice', 'int32_t', [param('ns3::Ptr< ns3::NetDevice >', 'device')], is_const=True)
+    cls.add_method('FindInterfaceIndexForDevice', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::JoinMulticastGroup(ns3::Ipv4Address origin, ns3::Ipv4Address group) [member function]
-    cls.add_method('JoinMulticastGroup', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')])
+    cls.add_method('JoinMulticastGroup', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::LeaveMulticastGroup(ns3::Ipv4Address origin, ns3::Ipv4Address group) [member function]
-    cls.add_method('LeaveMulticastGroup', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')])
+    cls.add_method('LeaveMulticastGroup', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetAddress(uint32_t i, ns3::Ipv4Address address) [member function]
-    cls.add_method('SetAddress', 'void', [param('uint32_t', 'i'), param('ns3::Ipv4Address', 'address')])
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv4Address', 'address')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetNetworkMask(uint32_t i, ns3::Ipv4Mask mask) [member function]
-    cls.add_method('SetNetworkMask', 'void', [param('uint32_t', 'i'), param('ns3::Ipv4Mask', 'mask')])
+    cls.add_method('SetNetworkMask', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv4Mask', 'mask')])
     ## ipv4-l3-protocol.h: ns3::Ipv4Mask ns3::Ipv4L3Protocol::GetNetworkMask(uint32_t t) const [member function]
-    cls.add_method('GetNetworkMask', 'ns3::Ipv4Mask', [param('uint32_t', 't')], is_const=True)
+    cls.add_method('GetNetworkMask', 
+                   'ns3::Ipv4Mask', 
+                   [param('uint32_t', 't')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: ns3::Ipv4Address ns3::Ipv4L3Protocol::GetAddress(uint32_t i) const [member function]
-    cls.add_method('GetAddress', 'ns3::Ipv4Address', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetMetric(uint32_t i, uint16_t metric) [member function]
-    cls.add_method('SetMetric', 'void', [param('uint32_t', 'i'), param('uint16_t', 'metric')])
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('uint16_t', 'metric')])
     ## ipv4-l3-protocol.h: uint16_t ns3::Ipv4L3Protocol::GetMetric(uint32_t i) const [member function]
-    cls.add_method('GetMetric', 'uint16_t', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::GetIfIndexForDestination(ns3::Ipv4Address destination, uint32_t & ifIndex) const [member function]
-    cls.add_method('GetIfIndexForDestination', 'bool', [param('ns3::Ipv4Address', 'destination'), param('uint32_t&', 'ifIndex')], is_const=True)
+    cls.add_method('GetIfIndexForDestination', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'destination'), param('uint32_t&', 'ifIndex')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: uint16_t ns3::Ipv4L3Protocol::GetMtu(uint32_t i) const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
-    cls.add_method('IsUp', 'bool', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('IsUp', 
+                   'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetUp(uint32_t i) [member function]
-    cls.add_method('SetUp', 'void', [param('uint32_t', 'i')])
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'i')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetDown(uint32_t i) [member function]
-    cls.add_method('SetDown', 'void', [param('uint32_t', 'i')])
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'i')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::AddRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol, int priority) [member function]
-    cls.add_method('AddRoutingProtocol', 'void', [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int', 'priority')])
+    cls.add_method('AddRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int', 'priority')])
     ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     return
 
 def register_functions(root_module):
     module = root_module
     ## internet-stack.h: extern void ns3::AddInternetStack(ns3::Ptr<ns3::Node> node) [free function]
-    module.add_function('AddInternetStack', 'void', [param('ns3::Ptr< ns3::Node >', 'node')])
+    module.add_function('AddInternetStack', 
+                        'void', 
+                        [param('ns3::Ptr< ns3::Node >', 'node')])
     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_mobility.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_mobility.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -16,37 +16,37 @@
     ## rectangle.h: ns3::Rectangle::Side [enumeration]
     module.add_enum('Side', ['RIGHT', 'LEFT', 'TOP', 'BOTTOM'], outer_class=root_module['ns3::Rectangle'])
     ## position-allocator.h: ns3::PositionAllocator [class]
-    module.add_class('PositionAllocator', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('PositionAllocator', parent=root_module['ns3::Object'])
     ## position-allocator.h: ns3::ListPositionAllocator [class]
-    module.add_class('ListPositionAllocator', allow_subclassing=True, parent=root_module['ns3::PositionAllocator'])
+    module.add_class('ListPositionAllocator', parent=root_module['ns3::PositionAllocator'])
     ## rectangle.h: ns3::RectangleValue [class]
-    module.add_class('RectangleValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('RectangleValue', parent=root_module['ns3::AttributeValue'])
     ## position-allocator.h: ns3::RandomRectanglePositionAllocator [class]
-    module.add_class('RandomRectanglePositionAllocator', allow_subclassing=True, parent=root_module['ns3::PositionAllocator'])
+    module.add_class('RandomRectanglePositionAllocator', parent=root_module['ns3::PositionAllocator'])
     ## vector.h: ns3::VectorValue [class]
-    module.add_class('VectorValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('VectorValue', parent=root_module['ns3::AttributeValue'])
     ## position-allocator.h: ns3::RandomDiscPositionAllocator [class]
-    module.add_class('RandomDiscPositionAllocator', allow_subclassing=True, parent=root_module['ns3::PositionAllocator'])
+    module.add_class('RandomDiscPositionAllocator', parent=root_module['ns3::PositionAllocator'])
     ## mobility-model.h: ns3::MobilityModel [class]
-    module.add_class('MobilityModel', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('MobilityModel', parent=root_module['ns3::Object'])
     ## random-direction-2d-mobility-model.h: ns3::RandomDirection2dMobilityModel [class]
-    module.add_class('RandomDirection2dMobilityModel', allow_subclassing=True, parent=root_module['ns3::MobilityModel'])
+    module.add_class('RandomDirection2dMobilityModel', parent=root_module['ns3::MobilityModel'])
     ## position-allocator.h: ns3::GridPositionAllocator [class]
-    module.add_class('GridPositionAllocator', allow_subclassing=True, parent=root_module['ns3::PositionAllocator'])
+    module.add_class('GridPositionAllocator', parent=root_module['ns3::PositionAllocator'])
     ## position-allocator.h: ns3::GridPositionAllocator::LayoutType [enumeration]
     module.add_enum('LayoutType', ['ROW_FIRST', 'COLUMN_FIRST'], outer_class=root_module['ns3::GridPositionAllocator'])
     ## random-waypoint-mobility-model.h: ns3::RandomWaypointMobilityModel [class]
-    module.add_class('RandomWaypointMobilityModel', allow_subclassing=True, parent=root_module['ns3::MobilityModel'])
+    module.add_class('RandomWaypointMobilityModel', parent=root_module['ns3::MobilityModel'])
     ## random-walk-2d-mobility-model.h: ns3::RandomWalk2dMobilityModel [class]
-    module.add_class('RandomWalk2dMobilityModel', allow_subclassing=True, parent=root_module['ns3::MobilityModel'])
+    module.add_class('RandomWalk2dMobilityModel', parent=root_module['ns3::MobilityModel'])
     ## random-walk-2d-mobility-model.h: ns3::RandomWalk2dMobilityModel::Mode [enumeration]
     module.add_enum('Mode', ['MODE_DISTANCE', 'MODE_TIME'], outer_class=root_module['ns3::RandomWalk2dMobilityModel'])
     ## static-speed-mobility-model.h: ns3::StaticSpeedMobilityModel [class]
-    module.add_class('StaticSpeedMobilityModel', allow_subclassing=True, parent=root_module['ns3::MobilityModel'])
+    module.add_class('StaticSpeedMobilityModel', parent=root_module['ns3::MobilityModel'])
     ## hierarchical-mobility-model.h: ns3::HierarchicalMobilityModel [class]
-    module.add_class('HierarchicalMobilityModel', allow_subclassing=True, parent=root_module['ns3::MobilityModel'])
+    module.add_class('HierarchicalMobilityModel', parent=root_module['ns3::MobilityModel'])
     ## static-mobility-model.h: ns3::StaticMobilityModel [class]
-    module.add_class('StaticMobilityModel', allow_subclassing=True, parent=root_module['ns3::MobilityModel'])
+    module.add_class('StaticMobilityModel', parent=root_module['ns3::MobilityModel'])
     
     ## Register a nested module for the namespace internal
     
@@ -112,36 +112,55 @@
 
 def register_Ns3StaticSpeedHelper_methods(root_module, cls):
     ## static-speed-helper.h: ns3::StaticSpeedHelper::StaticSpeedHelper() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## static-speed-helper.h: ns3::StaticSpeedHelper::StaticSpeedHelper(ns3::Vector const & position) [constructor]
-    cls.add_constructor([param('ns3::Vector&', 'position', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Vector&', 'position', is_const=True)])
     ## static-speed-helper.h: ns3::StaticSpeedHelper::StaticSpeedHelper(ns3::Vector const & position, ns3::Vector const & speed) [constructor]
-    cls.add_constructor([param('ns3::Vector&', 'position', is_const=True), param('ns3::Vector&', 'speed', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Vector&', 'position', is_const=True), param('ns3::Vector&', 'speed', is_const=True)])
     ## static-speed-helper.h: void ns3::StaticSpeedHelper::InitializePosition(ns3::Vector const & position) [member function]
-    cls.add_method('InitializePosition', 'void', [param('ns3::Vector&', 'position', is_const=True)])
+    cls.add_method('InitializePosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)])
     ## static-speed-helper.h: void ns3::StaticSpeedHelper::Reset(ns3::Vector const & speed) [member function]
-    cls.add_method('Reset', 'void', [param('ns3::Vector&', 'speed', is_const=True)])
+    cls.add_method('Reset', 
+                   'void', 
+                   [param('ns3::Vector&', 'speed', is_const=True)])
     ## static-speed-helper.h: ns3::Vector ns3::StaticSpeedHelper::GetCurrentPosition(ns3::Rectangle const & bounds) const [member function]
-    cls.add_method('GetCurrentPosition', 'ns3::Vector', [param('ns3::Rectangle&', 'bounds', is_const=True)], is_const=True)
+    cls.add_method('GetCurrentPosition', 
+                   'ns3::Vector', 
+                   [param('ns3::Rectangle&', 'bounds', is_const=True)], 
+                   is_const=True)
     ## static-speed-helper.h: ns3::Vector ns3::StaticSpeedHelper::GetCurrentPosition() const [member function]
-    cls.add_method('GetCurrentPosition', 'ns3::Vector', [], is_const=True)
+    cls.add_method('GetCurrentPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
     ## static-speed-helper.h: ns3::Vector ns3::StaticSpeedHelper::GetVelocity() const [member function]
-    cls.add_method('GetVelocity', 'ns3::Vector', [], is_const=True)
+    cls.add_method('GetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
     ## static-speed-helper.h: void ns3::StaticSpeedHelper::SetSpeed(ns3::Vector const & speed) [member function]
-    cls.add_method('SetSpeed', 'void', [param('ns3::Vector&', 'speed', is_const=True)])
+    cls.add_method('SetSpeed', 
+                   'void', 
+                   [param('ns3::Vector&', 'speed', is_const=True)])
     ## static-speed-helper.h: void ns3::StaticSpeedHelper::Pause() [member function]
-    cls.add_method('Pause', 'void', [])
+    cls.add_method('Pause', 
+                   'void', 
+                   [])
     ## static-speed-helper.h: void ns3::StaticSpeedHelper::Unpause() [member function]
-    cls.add_method('Unpause', 'void', [])
+    cls.add_method('Unpause', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3Vector_methods(root_module, cls):
     ## vector.h: ns3::Vector::Vector(ns3::Vector const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Vector&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Vector&', 'arg0', is_const=True)])
     ## vector.h: ns3::Vector::Vector(double _x, double _y, double _z) [constructor]
-    cls.add_constructor([param('double', '_x'), param('double', '_y'), param('double', '_z')], visibility='public')
+    cls.add_constructor([param('double', '_x'), param('double', '_y'), param('double', '_z')])
     ## vector.h: ns3::Vector::Vector() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## vector.h: ns3::Vector::x [variable]
     cls.add_instance_attribute('x', 'double', is_const=False)
     ## vector.h: ns3::Vector::y [variable]
@@ -161,17 +180,26 @@
 
 def register_Ns3Rectangle_methods(root_module, cls):
     ## rectangle.h: ns3::Rectangle::Rectangle(ns3::Rectangle const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Rectangle&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Rectangle&', 'arg0', is_const=True)])
     ## rectangle.h: ns3::Rectangle::Rectangle(double _xMin, double _xMax, double _yMin, double _yMax) [constructor]
-    cls.add_constructor([param('double', '_xMin'), param('double', '_xMax'), param('double', '_yMin'), param('double', '_yMax')], visibility='public')
+    cls.add_constructor([param('double', '_xMin'), param('double', '_xMax'), param('double', '_yMin'), param('double', '_yMax')])
     ## rectangle.h: ns3::Rectangle::Rectangle() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## rectangle.h: ns3::Vector ns3::Rectangle::CalculateIntersection(ns3::Vector const & current, ns3::Vector const & speed) const [member function]
-    cls.add_method('CalculateIntersection', 'ns3::Vector', [param('ns3::Vector&', 'current', is_const=True), param('ns3::Vector&', 'speed', is_const=True)], is_const=True)
+    cls.add_method('CalculateIntersection', 
+                   'ns3::Vector', 
+                   [param('ns3::Vector&', 'current', is_const=True), param('ns3::Vector&', 'speed', is_const=True)], 
+                   is_const=True)
     ## rectangle.h: ns3::Rectangle::Side ns3::Rectangle::GetClosestSide(ns3::Vector const & position) const [member function]
-    cls.add_method('GetClosestSide', 'ns3::Rectangle::Side', [param('ns3::Vector&', 'position', is_const=True)], is_const=True)
+    cls.add_method('GetClosestSide', 
+                   'ns3::Rectangle::Side', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   is_const=True)
     ## rectangle.h: bool ns3::Rectangle::IsInside(ns3::Vector const & position) const [member function]
-    cls.add_method('IsInside', 'bool', [param('ns3::Vector&', 'position', is_const=True)], is_const=True)
+    cls.add_method('IsInside', 
+                   'bool', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   is_const=True)
     ## rectangle.h: ns3::Rectangle::xMax [variable]
     cls.add_instance_attribute('xMax', 'double', is_const=False)
     ## rectangle.h: ns3::Rectangle::xMin [variable]
@@ -185,240 +213,460 @@
 
 def register_Ns3PositionAllocator_methods(root_module, cls):
     ## position-allocator.h: static ns3::TypeId ns3::PositionAllocator::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## position-allocator.h: ns3::PositionAllocator::PositionAllocator() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## position-allocator.h: ns3::Vector ns3::PositionAllocator::GetNext() const [member function]
-    cls.add_method('GetNext', 'ns3::Vector', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetNext', 
+                   'ns3::Vector', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
 def register_Ns3ListPositionAllocator_methods(root_module, cls):
     ## position-allocator.h: static ns3::TypeId ns3::ListPositionAllocator::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## position-allocator.h: ns3::ListPositionAllocator::ListPositionAllocator() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## position-allocator.h: void ns3::ListPositionAllocator::Add(ns3::Vector v) [member function]
-    cls.add_method('Add', 'void', [param('ns3::Vector', 'v')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Vector', 'v')])
     ## position-allocator.h: ns3::Vector ns3::ListPositionAllocator::GetNext() const [member function]
-    cls.add_method('GetNext', 'ns3::Vector', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNext', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3RectangleValue_methods(root_module, cls):
     ## rectangle.h: ns3::RectangleValue::RectangleValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## rectangle.h: ns3::RectangleValue::RectangleValue(ns3::Rectangle const & value) [constructor]
-    cls.add_constructor([param('ns3::Rectangle&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Rectangle&', 'value', is_const=True)])
     ## rectangle.h: void ns3::RectangleValue::Set(ns3::Rectangle const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Rectangle&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Rectangle&', 'value', is_const=True)])
     ## rectangle.h: ns3::Rectangle ns3::RectangleValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Rectangle', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Rectangle', 
+                   [], 
+                   is_const=True)
     ## rectangle.h: ns3::Ptr<ns3::AttributeValue> ns3::RectangleValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## rectangle.h: std::string ns3::RectangleValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## rectangle.h: bool ns3::RectangleValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3RandomRectanglePositionAllocator_methods(root_module, cls):
     ## position-allocator.h: static ns3::TypeId ns3::RandomRectanglePositionAllocator::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## position-allocator.h: ns3::RandomRectanglePositionAllocator::RandomRectanglePositionAllocator() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## position-allocator.h: void ns3::RandomRectanglePositionAllocator::SetX(ns3::RandomVariable x) [member function]
-    cls.add_method('SetX', 'void', [param('ns3::RandomVariable', 'x')])
+    cls.add_method('SetX', 
+                   'void', 
+                   [param('ns3::RandomVariable', 'x')])
     ## position-allocator.h: void ns3::RandomRectanglePositionAllocator::SetY(ns3::RandomVariable y) [member function]
-    cls.add_method('SetY', 'void', [param('ns3::RandomVariable', 'y')])
+    cls.add_method('SetY', 
+                   'void', 
+                   [param('ns3::RandomVariable', 'y')])
     ## position-allocator.h: ns3::Vector ns3::RandomRectanglePositionAllocator::GetNext() const [member function]
-    cls.add_method('GetNext', 'ns3::Vector', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNext', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3VectorValue_methods(root_module, cls):
     ## vector.h: ns3::VectorValue::VectorValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## vector.h: ns3::VectorValue::VectorValue(ns3::Vector const & value) [constructor]
-    cls.add_constructor([param('ns3::Vector&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Vector&', 'value', is_const=True)])
     ## vector.h: void ns3::VectorValue::Set(ns3::Vector const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Vector&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Vector&', 'value', is_const=True)])
     ## vector.h: ns3::Vector ns3::VectorValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Vector', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
     ## vector.h: ns3::Ptr<ns3::AttributeValue> ns3::VectorValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## vector.h: std::string ns3::VectorValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## vector.h: bool ns3::VectorValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3RandomDiscPositionAllocator_methods(root_module, cls):
     ## position-allocator.h: static ns3::TypeId ns3::RandomDiscPositionAllocator::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## position-allocator.h: ns3::RandomDiscPositionAllocator::RandomDiscPositionAllocator() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## position-allocator.h: void ns3::RandomDiscPositionAllocator::SetTheta(ns3::RandomVariable theta) [member function]
-    cls.add_method('SetTheta', 'void', [param('ns3::RandomVariable', 'theta')])
+    cls.add_method('SetTheta', 
+                   'void', 
+                   [param('ns3::RandomVariable', 'theta')])
     ## position-allocator.h: void ns3::RandomDiscPositionAllocator::SetRho(ns3::RandomVariable rho) [member function]
-    cls.add_method('SetRho', 'void', [param('ns3::RandomVariable', 'rho')])
+    cls.add_method('SetRho', 
+                   'void', 
+                   [param('ns3::RandomVariable', 'rho')])
     ## position-allocator.h: void ns3::RandomDiscPositionAllocator::SetX(double x) [member function]
-    cls.add_method('SetX', 'void', [param('double', 'x')])
+    cls.add_method('SetX', 
+                   'void', 
+                   [param('double', 'x')])
     ## position-allocator.h: void ns3::RandomDiscPositionAllocator::SetY(double y) [member function]
-    cls.add_method('SetY', 'void', [param('double', 'y')])
+    cls.add_method('SetY', 
+                   'void', 
+                   [param('double', 'y')])
     ## position-allocator.h: ns3::Vector ns3::RandomDiscPositionAllocator::GetNext() const [member function]
-    cls.add_method('GetNext', 'ns3::Vector', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNext', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3MobilityModel_methods(root_module, cls):
     ## mobility-model.h: static ns3::TypeId ns3::MobilityModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## mobility-model.h: ns3::MobilityModel::MobilityModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## mobility-model.h: ns3::Vector ns3::MobilityModel::GetPosition() const [member function]
-    cls.add_method('GetPosition', 'ns3::Vector', [], is_const=True)
+    cls.add_method('GetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
     ## mobility-model.h: void ns3::MobilityModel::SetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('SetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)])
+    cls.add_method('SetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)])
     ## mobility-model.h: ns3::Vector ns3::MobilityModel::GetVelocity() const [member function]
-    cls.add_method('GetVelocity', 'ns3::Vector', [], is_const=True)
+    cls.add_method('GetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
     ## mobility-model.h: double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<const ns3::MobilityModel> position) const [member function]
-    cls.add_method('GetDistanceFrom', 'double', [param('ns3::Ptr< const ns3::MobilityModel >', 'position')], is_const=True)
+    cls.add_method('GetDistanceFrom', 
+                   'double', 
+                   [param('ns3::Ptr< const ns3::MobilityModel >', 'position')], 
+                   is_const=True)
     ## mobility-model.h: void ns3::MobilityModel::NotifyCourseChange() const [member function]
-    cls.add_method('NotifyCourseChange', 'void', [], is_const=True, visibility='protected')
+    cls.add_method('NotifyCourseChange', 
+                   'void', 
+                   [], 
+                   is_const=True, visibility='protected')
     ## mobility-model.h: ns3::Vector ns3::MobilityModel::DoGetPosition() const [member function]
-    cls.add_method('DoGetPosition', 'ns3::Vector', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## mobility-model.h: void ns3::MobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('DoSetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## mobility-model.h: ns3::Vector ns3::MobilityModel::DoGetVelocity() const [member function]
-    cls.add_method('DoGetVelocity', 'ns3::Vector', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3RandomDirection2dMobilityModel_methods(root_module, cls):
     ## random-direction-2d-mobility-model.h: static ns3::TypeId ns3::RandomDirection2dMobilityModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## random-direction-2d-mobility-model.h: ns3::RandomDirection2dMobilityModel::RandomDirection2dMobilityModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-direction-2d-mobility-model.h: void ns3::RandomDirection2dMobilityModel::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## random-direction-2d-mobility-model.h: ns3::Vector ns3::RandomDirection2dMobilityModel::DoGetPosition() const [member function]
-    cls.add_method('DoGetPosition', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## random-direction-2d-mobility-model.h: void ns3::RandomDirection2dMobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('DoSetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)], visibility='private', is_virtual=True)
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   visibility='private', is_virtual=True)
     ## random-direction-2d-mobility-model.h: ns3::Vector ns3::RandomDirection2dMobilityModel::DoGetVelocity() const [member function]
-    cls.add_method('DoGetVelocity', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3GridPositionAllocator_methods(root_module, cls):
     ## position-allocator.h: static ns3::TypeId ns3::GridPositionAllocator::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## position-allocator.h: ns3::GridPositionAllocator::GridPositionAllocator() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## position-allocator.h: void ns3::GridPositionAllocator::SetMinX(double xMin) [member function]
-    cls.add_method('SetMinX', 'void', [param('double', 'xMin')])
+    cls.add_method('SetMinX', 
+                   'void', 
+                   [param('double', 'xMin')])
     ## position-allocator.h: void ns3::GridPositionAllocator::SetMinY(double yMin) [member function]
-    cls.add_method('SetMinY', 'void', [param('double', 'yMin')])
+    cls.add_method('SetMinY', 
+                   'void', 
+                   [param('double', 'yMin')])
     ## position-allocator.h: void ns3::GridPositionAllocator::SetDeltaX(double deltaX) [member function]
-    cls.add_method('SetDeltaX', 'void', [param('double', 'deltaX')])
+    cls.add_method('SetDeltaX', 
+                   'void', 
+                   [param('double', 'deltaX')])
     ## position-allocator.h: void ns3::GridPositionAllocator::SetDeltaY(double deltaY) [member function]
-    cls.add_method('SetDeltaY', 'void', [param('double', 'deltaY')])
+    cls.add_method('SetDeltaY', 
+                   'void', 
+                   [param('double', 'deltaY')])
     ## position-allocator.h: void ns3::GridPositionAllocator::SetN(uint32_t n) [member function]
-    cls.add_method('SetN', 'void', [param('uint32_t', 'n')])
+    cls.add_method('SetN', 
+                   'void', 
+                   [param('uint32_t', 'n')])
     ## position-allocator.h: void ns3::GridPositionAllocator::SetLayoutType(ns3::GridPositionAllocator::LayoutType layoutType) [member function]
-    cls.add_method('SetLayoutType', 'void', [param('ns3::GridPositionAllocator::LayoutType', 'layoutType')])
+    cls.add_method('SetLayoutType', 
+                   'void', 
+                   [param('ns3::GridPositionAllocator::LayoutType', 'layoutType')])
     ## position-allocator.h: double ns3::GridPositionAllocator::GetMinX() const [member function]
-    cls.add_method('GetMinX', 'double', [], is_const=True)
+    cls.add_method('GetMinX', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## position-allocator.h: double ns3::GridPositionAllocator::GetMinY() const [member function]
-    cls.add_method('GetMinY', 'double', [], is_const=True)
+    cls.add_method('GetMinY', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## position-allocator.h: double ns3::GridPositionAllocator::GetDeltaX() const [member function]
-    cls.add_method('GetDeltaX', 'double', [], is_const=True)
+    cls.add_method('GetDeltaX', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## position-allocator.h: double ns3::GridPositionAllocator::GetDeltaY() const [member function]
-    cls.add_method('GetDeltaY', 'double', [], is_const=True)
+    cls.add_method('GetDeltaY', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## position-allocator.h: uint32_t ns3::GridPositionAllocator::GetN() const [member function]
-    cls.add_method('GetN', 'uint32_t', [], is_const=True)
+    cls.add_method('GetN', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## position-allocator.h: ns3::GridPositionAllocator::LayoutType ns3::GridPositionAllocator::GetLayoutType() const [member function]
-    cls.add_method('GetLayoutType', 'ns3::GridPositionAllocator::LayoutType', [], is_const=True)
+    cls.add_method('GetLayoutType', 
+                   'ns3::GridPositionAllocator::LayoutType', 
+                   [], 
+                   is_const=True)
     ## position-allocator.h: ns3::Vector ns3::GridPositionAllocator::GetNext() const [member function]
-    cls.add_method('GetNext', 'ns3::Vector', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNext', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3RandomWaypointMobilityModel_methods(root_module, cls):
     ## random-waypoint-mobility-model.h: static ns3::TypeId ns3::RandomWaypointMobilityModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## random-waypoint-mobility-model.h: ns3::RandomWaypointMobilityModel::RandomWaypointMobilityModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-waypoint-mobility-model.h: ns3::Vector ns3::RandomWaypointMobilityModel::DoGetPosition() const [member function]
-    cls.add_method('DoGetPosition', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## random-waypoint-mobility-model.h: void ns3::RandomWaypointMobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('DoSetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)], visibility='private', is_virtual=True)
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   visibility='private', is_virtual=True)
     ## random-waypoint-mobility-model.h: ns3::Vector ns3::RandomWaypointMobilityModel::DoGetVelocity() const [member function]
-    cls.add_method('DoGetVelocity', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3RandomWalk2dMobilityModel_methods(root_module, cls):
     ## random-walk-2d-mobility-model.h: static ns3::TypeId ns3::RandomWalk2dMobilityModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## random-walk-2d-mobility-model.h: ns3::RandomWalk2dMobilityModel::RandomWalk2dMobilityModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## random-walk-2d-mobility-model.h: void ns3::RandomWalk2dMobilityModel::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## random-walk-2d-mobility-model.h: ns3::Vector ns3::RandomWalk2dMobilityModel::DoGetPosition() const [member function]
-    cls.add_method('DoGetPosition', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## random-walk-2d-mobility-model.h: void ns3::RandomWalk2dMobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('DoSetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)], visibility='private', is_virtual=True)
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   visibility='private', is_virtual=True)
     ## random-walk-2d-mobility-model.h: ns3::Vector ns3::RandomWalk2dMobilityModel::DoGetVelocity() const [member function]
-    cls.add_method('DoGetVelocity', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3StaticSpeedMobilityModel_methods(root_module, cls):
     ## static-speed-mobility-model.h: static ns3::TypeId ns3::StaticSpeedMobilityModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## static-speed-mobility-model.h: ns3::StaticSpeedMobilityModel::StaticSpeedMobilityModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## static-speed-mobility-model.h: void ns3::StaticSpeedMobilityModel::SetSpeed(ns3::Vector const & speed) [member function]
-    cls.add_method('SetSpeed', 'void', [param('ns3::Vector&', 'speed', is_const=True)])
+    cls.add_method('SetSpeed', 
+                   'void', 
+                   [param('ns3::Vector&', 'speed', is_const=True)])
     ## static-speed-mobility-model.h: ns3::Vector ns3::StaticSpeedMobilityModel::DoGetPosition() const [member function]
-    cls.add_method('DoGetPosition', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## static-speed-mobility-model.h: void ns3::StaticSpeedMobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('DoSetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)], visibility='private', is_virtual=True)
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   visibility='private', is_virtual=True)
     ## static-speed-mobility-model.h: ns3::Vector ns3::StaticSpeedMobilityModel::DoGetVelocity() const [member function]
-    cls.add_method('DoGetVelocity', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3HierarchicalMobilityModel_methods(root_module, cls):
     ## hierarchical-mobility-model.h: static ns3::TypeId ns3::HierarchicalMobilityModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## hierarchical-mobility-model.h: ns3::HierarchicalMobilityModel::HierarchicalMobilityModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## hierarchical-mobility-model.h: ns3::Ptr<ns3::MobilityModel> ns3::HierarchicalMobilityModel::GetChild() const [member function]
-    cls.add_method('GetChild', 'ns3::Ptr< ns3::MobilityModel >', [], is_const=True)
+    cls.add_method('GetChild', 
+                   'ns3::Ptr< ns3::MobilityModel >', 
+                   [], 
+                   is_const=True)
     ## hierarchical-mobility-model.h: ns3::Ptr<ns3::MobilityModel> ns3::HierarchicalMobilityModel::GetParent() const [member function]
-    cls.add_method('GetParent', 'ns3::Ptr< ns3::MobilityModel >', [], is_const=True)
+    cls.add_method('GetParent', 
+                   'ns3::Ptr< ns3::MobilityModel >', 
+                   [], 
+                   is_const=True)
     ## hierarchical-mobility-model.h: ns3::Vector ns3::HierarchicalMobilityModel::DoGetPosition() const [member function]
-    cls.add_method('DoGetPosition', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## hierarchical-mobility-model.h: void ns3::HierarchicalMobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('DoSetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)], visibility='private', is_virtual=True)
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   visibility='private', is_virtual=True)
     ## hierarchical-mobility-model.h: ns3::Vector ns3::HierarchicalMobilityModel::DoGetVelocity() const [member function]
-    cls.add_method('DoGetVelocity', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3StaticMobilityModel_methods(root_module, cls):
     ## static-mobility-model.h: static ns3::TypeId ns3::StaticMobilityModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## static-mobility-model.h: ns3::StaticMobilityModel::StaticMobilityModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## static-mobility-model.h: ns3::Vector ns3::StaticMobilityModel::DoGetPosition() const [member function]
-    cls.add_method('DoGetPosition', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## static-mobility-model.h: void ns3::StaticMobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
-    cls.add_method('DoSetPosition', 'void', [param('ns3::Vector&', 'position', is_const=True)], visibility='private', is_virtual=True)
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector&', 'position', is_const=True)], 
+                   visibility='private', is_virtual=True)
     ## static-mobility-model.h: ns3::Vector ns3::StaticMobilityModel::DoGetVelocity() const [member function]
-    cls.add_method('DoGetVelocity', 'ns3::Vector', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
     module = root_module
     ## rectangle.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeRectangleChecker() [free function]
-    module.add_function('MakeRectangleChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeRectangleChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## vector.h: extern double ns3::CalculateDistance(ns3::Vector const & a, ns3::Vector const & b) [free function]
-    module.add_function('CalculateDistance', 'double', [param('ns3::Vector&', 'a', is_const=True), param('ns3::Vector&', 'b', is_const=True)])
+    module.add_function('CalculateDistance', 
+                        'double', 
+                        [param('ns3::Vector&', 'a', is_const=True), param('ns3::Vector&', 'b', is_const=True)])
     ## vector.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeVectorChecker() [free function]
-    module.add_function('MakeVectorChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeVectorChecker', 
+                        '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_node.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_node.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -40,15 +40,15 @@
     ## ipv4-address.h: ns3::Ipv4Mask [class]
     module.add_class('Ipv4Mask')
     ## ipv4-address.h: ns3::Ipv4AddressValue [class]
-    module.add_class('Ipv4AddressValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('Ipv4AddressValue', parent=root_module['ns3::AttributeValue'])
     ## ipv4.h: ns3::Ipv4RoutingProtocol [class]
-    module.add_class('Ipv4RoutingProtocol', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Ipv4RoutingProtocol', parent=root_module['ns3::Object'])
     ## mac48-address.h: ns3::Mac48AddressValue [class]
-    module.add_class('Mac48AddressValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('Mac48AddressValue', parent=root_module['ns3::AttributeValue'])
     ## ipv4-address.h: ns3::Ipv4MaskValue [class]
-    module.add_class('Ipv4MaskValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('Ipv4MaskValue', parent=root_module['ns3::AttributeValue'])
     ## socket.h: ns3::SocketAddressTag [class]
-    module.add_class('SocketAddressTag', allow_subclassing=True, parent=root_module['ns3::Tag'])
+    module.add_class('SocketAddressTag', parent=root_module['ns3::Tag'])
     ## inet-socket-address.h: ns3::InetSocketAddress [class]
     module.add_class('InetSocketAddress')
     ## inet-socket-address.h: ns3::InetSocketAddress [class]
@@ -58,51 +58,53 @@
     ## ipv4-address.h: ns3::Ipv4Address [class]
     root_module['ns3::Ipv4Address'].implicitly_converts_to(root_module['ns3::Address'])
     ## application.h: ns3::Application [class]
-    module.add_class('Application', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Application', parent=root_module['ns3::Object'])
     ## queue.h: ns3::Queue [class]
-    module.add_class('Queue', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Queue', parent=root_module['ns3::Object'])
     ## socket.h: ns3::Socket [class]
-    module.add_class('Socket', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Socket', parent=root_module['ns3::Object'])
     ## socket.h: ns3::Socket::SocketErrno [enumeration]
     module.add_enum('SocketErrno', ['ERROR_NOTERROR', 'ERROR_ISCONN', 'ERROR_NOTCONN', 'ERROR_MSGSIZE', 'ERROR_AGAIN', 'ERROR_SHUTDOWN', 'ERROR_OPNOTSUPP', 'ERROR_AFNOSUPPORT', 'ERROR_INVAL', 'ERROR_BADF', 'ERROR_NOROUTETOHOST', 'SOCKET_ERRNO_LAST'], outer_class=root_module['ns3::Socket'])
     ## ipv4-header.h: ns3::Ipv4Header [class]
-    module.add_class('Ipv4Header', allow_subclassing=True, parent=root_module['ns3::Header'])
+    module.add_class('Ipv4Header', parent=root_module['ns3::Header'])
     ## udp-socket.h: ns3::UdpSocket [class]
-    module.add_class('UdpSocket', allow_subclassing=True, parent=root_module['ns3::Socket'])
+    module.add_class('UdpSocket', parent=root_module['ns3::Socket'])
     ## net-device.h: ns3::NetDevice [class]
-    module.add_class('NetDevice', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('NetDevice', parent=root_module['ns3::Object'])
+    ## net-device.h: ns3::NetDevice::PacketType [enumeration]
+    module.add_enum('PacketType', ['PACKET_HOST', 'PACKET_BROADCAST', 'PACKET_MULTICAST', 'PACKET_OTHERHOST'], outer_class=root_module['ns3::NetDevice'])
+    ## address.h: ns3::AddressValue [class]
+    module.add_class('AddressValue', parent=root_module['ns3::AttributeValue'])
+    ## node.h: ns3::Node [class]
+    module.add_class('Node', parent=root_module['ns3::Object'])
     ## channel.h: ns3::Channel [class]
-    module.add_class('Channel', allow_subclassing=True, parent=root_module['ns3::Object'])
-    ## simple-channel.h: ns3::SimpleChannel [class]
-    module.add_class('SimpleChannel', allow_subclassing=True, parent=root_module['ns3::Channel'])
-    ## address.h: ns3::AddressValue [class]
-    module.add_class('AddressValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
-    ## node.h: ns3::Node [class]
-    module.add_class('Node', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Channel', parent=root_module['ns3::Object'])
     ## tcp-socket.h: ns3::TcpSocket [class]
-    module.add_class('TcpSocket', allow_subclassing=True, parent=root_module['ns3::Socket'])
+    module.add_class('TcpSocket', parent=root_module['ns3::Socket'])
     ## ethernet-header.h: ns3::EthernetHeader [class]
-    module.add_class('EthernetHeader', allow_subclassing=True, parent=root_module['ns3::Header'])
+    module.add_class('EthernetHeader', parent=root_module['ns3::Header'])
     ## socket.h: ns3::SocketIpTtlTag [class]
-    module.add_class('SocketIpTtlTag', allow_subclassing=True, parent=root_module['ns3::Tag'])
+    module.add_class('SocketIpTtlTag', parent=root_module['ns3::Tag'])
     ## ipv4.h: ns3::Ipv4 [class]
-    module.add_class('Ipv4', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Ipv4', parent=root_module['ns3::Object'])
     ## socket-factory.h: ns3::SocketFactory [class]
-    module.add_class('SocketFactory', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('SocketFactory', parent=root_module['ns3::Object'])
     ## drop-tail-queue.h: ns3::DropTailQueue [class]
-    module.add_class('DropTailQueue', allow_subclassing=True, parent=root_module['ns3::Queue'])
+    module.add_class('DropTailQueue', parent=root_module['ns3::Queue'])
     ## ethernet-trailer.h: ns3::EthernetTrailer [class]
-    module.add_class('EthernetTrailer', allow_subclassing=True, parent=root_module['ns3::Trailer'])
+    module.add_class('EthernetTrailer', parent=root_module['ns3::Trailer'])
     ## llc-snap-header.h: ns3::LlcSnapHeader [class]
-    module.add_class('LlcSnapHeader', allow_subclassing=True, parent=root_module['ns3::Header'])
+    module.add_class('LlcSnapHeader', parent=root_module['ns3::Header'])
     ## udp-socket-factory.h: ns3::UdpSocketFactory [class]
     module.add_class('UdpSocketFactory', parent=root_module['ns3::SocketFactory'])
     ## simple-net-device.h: ns3::SimpleNetDevice [class]
-    module.add_class('SimpleNetDevice', allow_subclassing=True, parent=root_module['ns3::NetDevice'])
+    module.add_class('SimpleNetDevice', parent=root_module['ns3::NetDevice'])
+    ## simple-channel.h: ns3::SimpleChannel [class]
+    module.add_class('SimpleChannel', parent=root_module['ns3::Channel'])
     ## tcp-socket-factory.h: ns3::TcpSocketFactory [class]
     module.add_class('TcpSocketFactory', parent=root_module['ns3::SocketFactory'])
     ## packet-socket-factory.h: ns3::PacketSocketFactory [class]
-    module.add_class('PacketSocketFactory', allow_subclassing=True, parent=root_module['ns3::SocketFactory'])
+    module.add_class('PacketSocketFactory', parent=root_module['ns3::SocketFactory'])
     
     ## Register a nested module for the namespace internal
     
@@ -171,10 +173,9 @@
     register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
     register_Ns3UdpSocket_methods(root_module, root_module['ns3::UdpSocket'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
-    register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
-    register_Ns3SimpleChannel_methods(root_module, root_module['ns3::SimpleChannel'])
     register_Ns3AddressValue_methods(root_module, root_module['ns3::AddressValue'])
     register_Ns3Node_methods(root_module, root_module['ns3::Node'])
+    register_Ns3Channel_methods(root_module, root_module['ns3::Channel'])
     register_Ns3TcpSocket_methods(root_module, root_module['ns3::TcpSocket'])
     register_Ns3EthernetHeader_methods(root_module, root_module['ns3::EthernetHeader'])
     register_Ns3SocketIpTtlTag_methods(root_module, root_module['ns3::SocketIpTtlTag'])
@@ -185,55 +186,104 @@
     register_Ns3LlcSnapHeader_methods(root_module, root_module['ns3::LlcSnapHeader'])
     register_Ns3UdpSocketFactory_methods(root_module, root_module['ns3::UdpSocketFactory'])
     register_Ns3SimpleNetDevice_methods(root_module, root_module['ns3::SimpleNetDevice'])
+    register_Ns3SimpleChannel_methods(root_module, root_module['ns3::SimpleChannel'])
     register_Ns3TcpSocketFactory_methods(root_module, root_module['ns3::TcpSocketFactory'])
     register_Ns3PacketSocketFactory_methods(root_module, root_module['ns3::PacketSocketFactory'])
     return
 
 def register_Ns3NodeList_methods(root_module, cls):
     ## node-list.h: static uint32_t ns3::NodeList::Add(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('Add', 'uint32_t', [param('ns3::Ptr< ns3::Node >', 'node')], is_static=True)
+    cls.add_method('Add', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_static=True)
     ## node-list.h: static __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeList::Begin() [member function]
-    cls.add_method('Begin', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', [], is_static=True)
+    cls.add_method('Begin', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', 
+                   [], 
+                   is_static=True)
     ## node-list.h: static __gnu_cxx::__normal_iterator<const ns3::Ptr<ns3::Node>*,std::vector<ns3::Ptr<ns3::Node>, std::allocator<ns3::Ptr<ns3::Node> > > > ns3::NodeList::End() [member function]
-    cls.add_method('End', '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', [], is_static=True)
+    cls.add_method('End', 
+                   '__gnu_cxx::__normal_iterator< const ns3::Ptr< ns3::Node >, std::vector< ns3::Ptr< ns3::Node >, std::allocator< ns3::Ptr< ns3::Node > > > >', 
+                   [], 
+                   is_static=True)
     ## node-list.h: static ns3::Ptr<ns3::Node> ns3::NodeList::GetNode(uint32_t n) [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [param('uint32_t', 'n')], is_static=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [param('uint32_t', 'n')], 
+                   is_static=True)
     ## node-list.h: static uint32_t ns3::NodeList::GetNNodes() [member function]
-    cls.add_method('GetNNodes', 'uint32_t', [], is_static=True)
+    cls.add_method('GetNNodes', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
     cls.add_constructor([])
     return
 
 def register_Ns3Address_methods(root_module, cls):
     ## address.h: ns3::Address::Address() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## address.h: ns3::Address::Address(uint8_t type, uint8_t const * buffer, uint8_t len) [constructor]
-    cls.add_constructor([param('uint8_t', 'type'), param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint8_t', 'len')], visibility='public')
+    cls.add_constructor([param('uint8_t', 'type'), param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint8_t', 'len')])
     ## address.h: ns3::Address::Address(ns3::Address const & address) [copy constructor]
-    cls.add_constructor([param('ns3::Address&', 'address', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Address&', 'address', is_const=True)])
     ## address.h: bool ns3::Address::CheckCompatible(uint8_t type, uint8_t len) const [member function]
-    cls.add_method('CheckCompatible', 'bool', [param('uint8_t', 'type'), param('uint8_t', 'len')], is_const=True)
+    cls.add_method('CheckCompatible', 
+                   'bool', 
+                   [param('uint8_t', 'type'), param('uint8_t', 'len')], 
+                   is_const=True)
     ## address.h: uint32_t ns3::Address::CopyAllFrom(uint8_t const * buffer, uint8_t len) [member function]
-    cls.add_method('CopyAllFrom', 'uint32_t', [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint8_t', 'len')])
+    cls.add_method('CopyAllFrom', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint8_t', 'len')])
     ## address.h: uint32_t ns3::Address::CopyAllTo(uint8_t * buffer, uint8_t len) const [member function]
-    cls.add_method('CopyAllTo', 'uint32_t', [param('uint8_t *', 'buffer'), param('uint8_t', 'len')], is_const=True)
+    cls.add_method('CopyAllTo', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer'), param('uint8_t', 'len')], 
+                   is_const=True)
     ## address.h: uint32_t ns3::Address::CopyFrom(uint8_t const * buffer, uint8_t len) [member function]
-    cls.add_method('CopyFrom', 'uint32_t', [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint8_t', 'len')])
+    cls.add_method('CopyFrom', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True), param('uint8_t', 'len')])
     ## address.h: uint32_t ns3::Address::CopyTo(uint8_t * buffer) const [member function]
-    cls.add_method('CopyTo', 'uint32_t', [param('uint8_t *', 'buffer')], is_const=True)
+    cls.add_method('CopyTo', 
+                   'uint32_t', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
     ## address.h: void ns3::Address::Deserialize(ns3::TagBuffer buffer) [member function]
-    cls.add_method('Deserialize', 'void', [param('ns3::TagBuffer', 'buffer')])
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buffer')])
     ## address.h: uint8_t ns3::Address::GetLength() const [member function]
-    cls.add_method('GetLength', 'uint8_t', [], is_const=True)
+    cls.add_method('GetLength', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## address.h: uint32_t ns3::Address::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## address.h: bool ns3::Address::IsInvalid() const [member function]
-    cls.add_method('IsInvalid', 'bool', [], is_const=True)
+    cls.add_method('IsInvalid', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## address.h: bool ns3::Address::IsMatchingType(uint8_t type) const [member function]
-    cls.add_method('IsMatchingType', 'bool', [param('uint8_t', 'type')], is_const=True)
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('uint8_t', 'type')], 
+                   is_const=True)
     ## address.h: static uint8_t ns3::Address::Register() [member function]
-    cls.add_method('Register', 'uint8_t', [], is_static=True)
+    cls.add_method('Register', 
+                   'uint8_t', 
+                   [], 
+                   is_static=True)
     ## address.h: void ns3::Address::Serialize(ns3::TagBuffer buffer) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::TagBuffer', 'buffer')], is_const=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buffer')], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
@@ -243,69 +293,133 @@
 
 def register_Ns3Mac48Address_methods(root_module, cls):
     ## mac48-address.h: ns3::Mac48Address::Mac48Address(ns3::Mac48Address const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Mac48Address&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Mac48Address&', 'arg0', is_const=True)])
     ## mac48-address.h: ns3::Mac48Address::Mac48Address() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## mac48-address.h: ns3::Mac48Address::Mac48Address(char const * str) [constructor]
-    cls.add_constructor([param('char *', 'str', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('char *', 'str', transfer_ownership=False, is_const=True)])
     ## mac48-address.h: static ns3::Mac48Address ns3::Mac48Address::Allocate() [member function]
-    cls.add_method('Allocate', 'ns3::Mac48Address', [], is_static=True)
+    cls.add_method('Allocate', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_static=True)
     ## mac48-address.h: static ns3::Mac48Address ns3::Mac48Address::ConvertFrom(ns3::Address const & address) [member function]
-    cls.add_method('ConvertFrom', 'ns3::Mac48Address', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('ConvertFrom', 
+                   'ns3::Mac48Address', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     ## mac48-address.h: void ns3::Mac48Address::CopyFrom(uint8_t const * buffer) [member function]
-    cls.add_method('CopyFrom', 'void', [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True)])
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True)])
     ## mac48-address.h: void ns3::Mac48Address::CopyTo(uint8_t * buffer) const [member function]
-    cls.add_method('CopyTo', 'void', [param('uint8_t *', 'buffer')], is_const=True)
+    cls.add_method('CopyTo', 
+                   'void', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
     ## mac48-address.h: static ns3::Mac48Address ns3::Mac48Address::GetBroadcast() [member function]
-    cls.add_method('GetBroadcast', 'ns3::Mac48Address', [], is_static=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_static=True)
     ## mac48-address.h: bool ns3::Mac48Address::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_const=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## mac48-address.h: static bool ns3::Mac48Address::IsMatchingType(ns3::Address const & address) [member function]
-    cls.add_method('IsMatchingType', 'bool', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     ## mac48-address.h: bool ns3::Mac48Address::IsMulticast() const [member function]
-    cls.add_method('IsMulticast', 'bool', [], is_const=True)
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Mac64Address_methods(root_module, cls):
     ## mac64-address.h: ns3::Mac64Address::Mac64Address(ns3::Mac64Address const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Mac64Address&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Mac64Address&', 'arg0', is_const=True)])
     ## mac64-address.h: ns3::Mac64Address::Mac64Address() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## mac64-address.h: ns3::Mac64Address::Mac64Address(char const * str) [constructor]
-    cls.add_constructor([param('char *', 'str', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('char *', 'str', transfer_ownership=False, is_const=True)])
     ## mac64-address.h: static ns3::Mac64Address ns3::Mac64Address::Allocate() [member function]
-    cls.add_method('Allocate', 'ns3::Mac64Address', [], is_static=True)
+    cls.add_method('Allocate', 
+                   'ns3::Mac64Address', 
+                   [], 
+                   is_static=True)
     ## mac64-address.h: static ns3::Mac64Address ns3::Mac64Address::ConvertFrom(ns3::Address const & address) [member function]
-    cls.add_method('ConvertFrom', 'ns3::Mac64Address', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('ConvertFrom', 
+                   'ns3::Mac64Address', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     ## mac64-address.h: void ns3::Mac64Address::CopyFrom(uint8_t const * buffer) [member function]
-    cls.add_method('CopyFrom', 'void', [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True)])
+    cls.add_method('CopyFrom', 
+                   'void', 
+                   [param('uint8_t *', 'buffer', transfer_ownership=False, is_const=True)])
     ## mac64-address.h: void ns3::Mac64Address::CopyTo(uint8_t * buffer) const [member function]
-    cls.add_method('CopyTo', 'void', [param('uint8_t *', 'buffer')], is_const=True)
+    cls.add_method('CopyTo', 
+                   'void', 
+                   [param('uint8_t *', 'buffer')], 
+                   is_const=True)
     ## mac64-address.h: static bool ns3::Mac64Address::IsMatchingType(ns3::Address const & address) [member function]
-    cls.add_method('IsMatchingType', 'bool', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Ipv4AddressGenerator_methods(root_module, cls):
     ## ipv4-address-generator.h: static void ns3::Ipv4AddressGenerator::Init(ns3::Ipv4Address const net, ns3::Ipv4Mask const mask, ns3::Ipv4Address const addr="0.0.0.1") [member function]
-    cls.add_method('Init', 'void', [param('ns3::Ipv4Address', 'net', is_const=True), param('ns3::Ipv4Mask', 'mask', is_const=True), param('ns3::Ipv4Address', 'addr', default_value='"0.0.0.1"', is_const=True)], is_static=True)
+    cls.add_method('Init', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'net', is_const=True), param('ns3::Ipv4Mask', 'mask', is_const=True), param('ns3::Ipv4Address', 'addr', default_value='"0.0.0.1"', is_const=True)], 
+                   is_static=True)
     ## ipv4-address-generator.h: static ns3::Ipv4Address ns3::Ipv4AddressGenerator::NextNetwork(ns3::Ipv4Mask const mask) [member function]
-    cls.add_method('NextNetwork', 'ns3::Ipv4Address', [param('ns3::Ipv4Mask', 'mask', is_const=True)], is_static=True)
+    cls.add_method('NextNetwork', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask', 'mask', is_const=True)], 
+                   is_static=True)
     ## ipv4-address-generator.h: static ns3::Ipv4Address ns3::Ipv4AddressGenerator::GetNetwork(ns3::Ipv4Mask const mask) [member function]
-    cls.add_method('GetNetwork', 'ns3::Ipv4Address', [param('ns3::Ipv4Mask', 'mask', is_const=True)], is_static=True)
+    cls.add_method('GetNetwork', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask', 'mask', is_const=True)], 
+                   is_static=True)
     ## ipv4-address-generator.h: static void ns3::Ipv4AddressGenerator::InitAddress(ns3::Ipv4Address const addr, ns3::Ipv4Mask const mask) [member function]
-    cls.add_method('InitAddress', 'void', [param('ns3::Ipv4Address', 'addr', is_const=True), param('ns3::Ipv4Mask', 'mask', is_const=True)], is_static=True)
+    cls.add_method('InitAddress', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'addr', is_const=True), param('ns3::Ipv4Mask', 'mask', is_const=True)], 
+                   is_static=True)
     ## ipv4-address-generator.h: static ns3::Ipv4Address ns3::Ipv4AddressGenerator::NextAddress(ns3::Ipv4Mask const mask) [member function]
-    cls.add_method('NextAddress', 'ns3::Ipv4Address', [param('ns3::Ipv4Mask', 'mask', is_const=True)], is_static=True)
+    cls.add_method('NextAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask', 'mask', is_const=True)], 
+                   is_static=True)
     ## ipv4-address-generator.h: static ns3::Ipv4Address ns3::Ipv4AddressGenerator::GetAddress(ns3::Ipv4Mask const mask) [member function]
-    cls.add_method('GetAddress', 'ns3::Ipv4Address', [param('ns3::Ipv4Mask', 'mask', is_const=True)], is_static=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask', 'mask', is_const=True)], 
+                   is_static=True)
     ## ipv4-address-generator.h: static void ns3::Ipv4AddressGenerator::Reset() [member function]
-    cls.add_method('Reset', 'void', [], is_static=True)
+    cls.add_method('Reset', 
+                   'void', 
+                   [], 
+                   is_static=True)
     ## ipv4-address-generator.h: static bool ns3::Ipv4AddressGenerator::AddAllocated(ns3::Ipv4Address const addr) [member function]
-    cls.add_method('AddAllocated', 'bool', [param('ns3::Ipv4Address', 'addr', is_const=True)], is_static=True)
+    cls.add_method('AddAllocated', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'addr', is_const=True)], 
+                   is_static=True)
     ## ipv4-address-generator.h: static void ns3::Ipv4AddressGenerator::TestMode() [member function]
-    cls.add_method('TestMode', 'void', [], is_static=True)
+    cls.add_method('TestMode', 
+                   'void', 
+                   [], 
+                   is_static=True)
     cls.add_constructor([])
     return
 
@@ -319,63 +433,126 @@
 
 def register_Ns3Ipv4Route_methods(root_module, cls):
     ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route(ns3::Ipv4Route const & route) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv4Route&', 'route', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Route&', 'route', is_const=True)])
     ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route(ns3::Ipv4Route const * route) [constructor]
-    cls.add_constructor([param('ns3::Ipv4Route *', 'route', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Route *', 'route', transfer_ownership=False, is_const=True)])
     ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('CreateDefaultRoute', 'ns3::Ipv4Route', [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], is_static=True)
+    cls.add_method('CreateDefaultRoute', 
+                   'ns3::Ipv4Route', 
+                   [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], 
+                   is_static=True)
     ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('CreateHostRouteTo', 'ns3::Ipv4Route', [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], is_static=True)
+    cls.add_method('CreateHostRouteTo', 
+                   'ns3::Ipv4Route', 
+                   [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], 
+                   is_static=True)
     ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
-    cls.add_method('CreateHostRouteTo', 'ns3::Ipv4Route', [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')], is_static=True)
+    cls.add_method('CreateHostRouteTo', 
+                   'ns3::Ipv4Route', 
+                   [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')], 
+                   is_static=True)
     ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('CreateNetworkRouteTo', 'ns3::Ipv4Route', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], is_static=True)
+    cls.add_method('CreateNetworkRouteTo', 
+                   'ns3::Ipv4Route', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], 
+                   is_static=True)
     ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
-    cls.add_method('CreateNetworkRouteTo', 'ns3::Ipv4Route', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')], is_static=True)
+    cls.add_method('CreateNetworkRouteTo', 
+                   'ns3::Ipv4Route', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')], 
+                   is_static=True)
     ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetDest() const [member function]
-    cls.add_method('GetDest', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetDest', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetDestNetwork() const [member function]
-    cls.add_method('GetDestNetwork', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetDestNetwork', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: ns3::Ipv4Mask ns3::Ipv4Route::GetDestNetworkMask() const [member function]
-    cls.add_method('GetDestNetworkMask', 'ns3::Ipv4Mask', [], is_const=True)
+    cls.add_method('GetDestNetworkMask', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetGateway() const [member function]
-    cls.add_method('GetGateway', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetGateway', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: uint32_t ns3::Ipv4Route::GetInterface() const [member function]
-    cls.add_method('GetInterface', 'uint32_t', [], is_const=True)
+    cls.add_method('GetInterface', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: bool ns3::Ipv4Route::IsDefault() const [member function]
-    cls.add_method('IsDefault', 'bool', [], is_const=True)
+    cls.add_method('IsDefault', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: bool ns3::Ipv4Route::IsGateway() const [member function]
-    cls.add_method('IsGateway', 'bool', [], is_const=True)
+    cls.add_method('IsGateway', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: bool ns3::Ipv4Route::IsHost() const [member function]
-    cls.add_method('IsHost', 'bool', [], is_const=True)
+    cls.add_method('IsHost', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: bool ns3::Ipv4Route::IsNetwork() const [member function]
-    cls.add_method('IsNetwork', 'bool', [], is_const=True)
+    cls.add_method('IsNetwork', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Ipv4MulticastRoute_methods(root_module, cls):
     ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute(ns3::Ipv4MulticastRoute const & route) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv4MulticastRoute&', 'route', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4MulticastRoute&', 'route', is_const=True)])
     ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute(ns3::Ipv4MulticastRoute const * route) [constructor]
-    cls.add_constructor([param('ns3::Ipv4MulticastRoute *', 'route', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4MulticastRoute *', 'route', transfer_ownership=False, is_const=True)])
     ## ipv4-route.h: static ns3::Ipv4MulticastRoute ns3::Ipv4MulticastRoute::CreateMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
-    cls.add_method('CreateMulticastRoute', 'ns3::Ipv4MulticastRoute', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')], is_static=True)
+    cls.add_method('CreateMulticastRoute', 
+                   'ns3::Ipv4MulticastRoute', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')], 
+                   is_static=True)
     ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetGroup() const [member function]
-    cls.add_method('GetGroup', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetGroup', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetInputInterface() const [member function]
-    cls.add_method('GetInputInterface', 'uint32_t', [], is_const=True)
+    cls.add_method('GetInputInterface', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetNOutputInterfaces() const [member function]
-    cls.add_method('GetNOutputInterfaces', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNOutputInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetOrigin() const [member function]
-    cls.add_method('GetOrigin', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetOrigin', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetOutputInterface(uint32_t n) const [member function]
-    cls.add_method('GetOutputInterface', 'uint32_t', [param('uint32_t', 'n')], is_const=True)
+    cls.add_method('GetOutputInterface', 
+                   'uint32_t', 
+                   [param('uint32_t', 'n')], 
+                   is_const=True)
     ## ipv4-route.h: std::vector<unsigned int, std::allocator<unsigned int> > ns3::Ipv4MulticastRoute::GetOutputInterfaces() const [member function]
-    cls.add_method('GetOutputInterfaces', 'std::vector< unsigned int, std::allocator< unsigned int > >', [], is_const=True)
+    cls.add_method('GetOutputInterfaces', 
+                   'std::vector< unsigned int, std::allocator< unsigned int > >', 
+                   [], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
@@ -385,925 +562,1961 @@
 
 def register_Ns3PacketSocketAddress_methods(root_module, cls):
     ## packet-socket-address.h: ns3::PacketSocketAddress::PacketSocketAddress() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## packet-socket-address.h: void ns3::PacketSocketAddress::SetProtocol(uint16_t protocol) [member function]
-    cls.add_method('SetProtocol', 'void', [param('uint16_t', 'protocol')])
+    cls.add_method('SetProtocol', 
+                   'void', 
+                   [param('uint16_t', 'protocol')])
     ## packet-socket-address.h: void ns3::PacketSocketAddress::SetAllDevices() [member function]
-    cls.add_method('SetAllDevices', 'void', [])
+    cls.add_method('SetAllDevices', 
+                   'void', 
+                   [])
     ## packet-socket-address.h: void ns3::PacketSocketAddress::SetSingleDevice(uint32_t device) [member function]
-    cls.add_method('SetSingleDevice', 'void', [param('uint32_t', 'device')])
+    cls.add_method('SetSingleDevice', 
+                   'void', 
+                   [param('uint32_t', 'device')])
     ## packet-socket-address.h: void ns3::PacketSocketAddress::SetPhysicalAddress(ns3::Address const address) [member function]
-    cls.add_method('SetPhysicalAddress', 'void', [param('ns3::Address', 'address', is_const=True)])
+    cls.add_method('SetPhysicalAddress', 
+                   'void', 
+                   [param('ns3::Address', 'address', is_const=True)])
     ## packet-socket-address.h: uint16_t ns3::PacketSocketAddress::GetProtocol() const [member function]
-    cls.add_method('GetProtocol', 'uint16_t', [], is_const=True)
+    cls.add_method('GetProtocol', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## packet-socket-address.h: uint32_t ns3::PacketSocketAddress::GetSingleDevice() const [member function]
-    cls.add_method('GetSingleDevice', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSingleDevice', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## packet-socket-address.h: bool ns3::PacketSocketAddress::IsSingleDevice() const [member function]
-    cls.add_method('IsSingleDevice', 'bool', [], is_const=True)
+    cls.add_method('IsSingleDevice', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## packet-socket-address.h: ns3::Address ns3::PacketSocketAddress::GetPhysicalAddress() const [member function]
-    cls.add_method('GetPhysicalAddress', 'ns3::Address', [], is_const=True)
+    cls.add_method('GetPhysicalAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True)
     ## packet-socket-address.h: static ns3::PacketSocketAddress ns3::PacketSocketAddress::ConvertFrom(ns3::Address const & address) [member function]
-    cls.add_method('ConvertFrom', 'ns3::PacketSocketAddress', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('ConvertFrom', 
+                   'ns3::PacketSocketAddress', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     ## packet-socket-address.h: static bool ns3::PacketSocketAddress::IsMatchingType(ns3::Address const & address) [member function]
-    cls.add_method('IsMatchingType', 'bool', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     return
 
 def register_Ns3Ipv4Mask_methods(root_module, cls):
     ## ipv4-address.h: ns3::Ipv4Mask::Ipv4Mask(ns3::Ipv4Mask const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv4Mask&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Mask&', 'arg0', is_const=True)])
     ## ipv4-address.h: ns3::Ipv4Mask::Ipv4Mask() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-address.h: ns3::Ipv4Mask::Ipv4Mask(uint32_t mask) [constructor]
-    cls.add_constructor([param('uint32_t', 'mask')], visibility='public')
+    cls.add_constructor([param('uint32_t', 'mask')])
     ## ipv4-address.h: ns3::Ipv4Mask::Ipv4Mask(char const * mask) [constructor]
-    cls.add_constructor([param('char *', 'mask', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('char *', 'mask', transfer_ownership=False, is_const=True)])
     ## ipv4-address.h: uint32_t ns3::Ipv4Mask::Get() const [member function]
-    cls.add_method('Get', 'uint32_t', [], is_const=True)
+    cls.add_method('Get', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-address.h: uint32_t ns3::Ipv4Mask::GetInverse() const [member function]
-    cls.add_method('GetInverse', 'uint32_t', [], is_const=True)
+    cls.add_method('GetInverse', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-address.h: static ns3::Ipv4Mask ns3::Ipv4Mask::GetLoopback() [member function]
-    cls.add_method('GetLoopback', 'ns3::Ipv4Mask', [], is_static=True)
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
     ## ipv4-address.h: static ns3::Ipv4Mask ns3::Ipv4Mask::GetZero() [member function]
-    cls.add_method('GetZero', 'ns3::Ipv4Mask', [], is_static=True)
+    cls.add_method('GetZero', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_static=True)
     ## ipv4-address.h: bool ns3::Ipv4Mask::IsEqual(ns3::Ipv4Mask other) const [member function]
-    cls.add_method('IsEqual', 'bool', [param('ns3::Ipv4Mask', 'other')], is_const=True)
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv4Mask', 'other')], 
+                   is_const=True)
     ## ipv4-address.h: bool ns3::Ipv4Mask::IsMatch(ns3::Ipv4Address a, ns3::Ipv4Address b) const [member function]
-    cls.add_method('IsMatch', 'bool', [param('ns3::Ipv4Address', 'a'), param('ns3::Ipv4Address', 'b')], is_const=True)
+    cls.add_method('IsMatch', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'a'), param('ns3::Ipv4Address', 'b')], 
+                   is_const=True)
     ## ipv4-address.h: void ns3::Ipv4Mask::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## ipv4-address.h: void ns3::Ipv4Mask::Set(uint32_t mask) [member function]
-    cls.add_method('Set', 'void', [param('uint32_t', 'mask')])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint32_t', 'mask')])
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Ipv4AddressValue_methods(root_module, cls):
     ## ipv4-address.h: ns3::Ipv4AddressValue::Ipv4AddressValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-address.h: ns3::Ipv4AddressValue::Ipv4AddressValue(ns3::Ipv4Address const & value) [constructor]
-    cls.add_constructor([param('ns3::Ipv4Address&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Address&', 'value', is_const=True)])
     ## ipv4-address.h: void ns3::Ipv4AddressValue::Set(ns3::Ipv4Address const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Ipv4Address&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv4Address&', 'value', is_const=True)])
     ## ipv4-address.h: ns3::Ipv4Address ns3::Ipv4AddressValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-address.h: ns3::Ptr<ns3::AttributeValue> ns3::Ipv4AddressValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ipv4-address.h: std::string ns3::Ipv4AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## ipv4-address.h: bool ns3::Ipv4AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3Ipv4RoutingProtocol_methods(root_module, cls):
     ## ipv4.h: ns3::Ipv4RoutingProtocol::IF_INDEX_ANY [variable]
     cls.add_static_attribute('IF_INDEX_ANY', retval('uint32_t', is_const=True), is_const=True)
     ## ipv4.h: bool ns3::Ipv4RoutingProtocol::RequestRoute(uint32_t ifIndex, ns3::Ipv4Header const & ipHeader, ns3::Ptr<ns3::Packet> packet, ns3::Callback<void,bool,const ns3::Ipv4Route&,ns3::Ptr<ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty> routeReply) [member function]
-    cls.add_method('RequestRoute', 'bool', [param('uint32_t', 'ifIndex'), param('ns3::Ipv4Header&', 'ipHeader', is_const=True), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, const ns3::Ipv4Route&, ns3::Ptr< ns3::Packet >, const ns3::Ipv4Header&, ns3::empty, ns3::empty >', 'routeReply')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('RequestRoute', 
+                   'bool', 
+                   [param('uint32_t', 'ifIndex'), param('ns3::Ipv4Header&', 'ipHeader', is_const=True), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, const ns3::Ipv4Route&, ns3::Ptr< ns3::Packet >, const ns3::Ipv4Header&, ns3::empty, ns3::empty >', 'routeReply')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: bool ns3::Ipv4RoutingProtocol::RequestIfIndex(ns3::Ipv4Address destination, uint32_t & ifIndex) [member function]
-    cls.add_method('RequestIfIndex', 'bool', [param('ns3::Ipv4Address', 'destination'), param('uint32_t&', 'ifIndex')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('RequestIfIndex', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'destination'), param('uint32_t&', 'ifIndex')], 
+                   is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3Mac48AddressValue_methods(root_module, cls):
     ## mac48-address.h: ns3::Mac48AddressValue::Mac48AddressValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## mac48-address.h: ns3::Mac48AddressValue::Mac48AddressValue(ns3::Mac48Address const & value) [constructor]
-    cls.add_constructor([param('ns3::Mac48Address&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Mac48Address&', 'value', is_const=True)])
     ## mac48-address.h: void ns3::Mac48AddressValue::Set(ns3::Mac48Address const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Mac48Address&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Mac48Address&', 'value', is_const=True)])
     ## mac48-address.h: ns3::Mac48Address ns3::Mac48AddressValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Mac48Address', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True)
     ## mac48-address.h: ns3::Ptr<ns3::AttributeValue> ns3::Mac48AddressValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## mac48-address.h: std::string ns3::Mac48AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## mac48-address.h: bool ns3::Mac48AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3Ipv4MaskValue_methods(root_module, cls):
     ## ipv4-address.h: ns3::Ipv4MaskValue::Ipv4MaskValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-address.h: ns3::Ipv4MaskValue::Ipv4MaskValue(ns3::Ipv4Mask const & value) [constructor]
-    cls.add_constructor([param('ns3::Ipv4Mask&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Mask&', 'value', is_const=True)])
     ## ipv4-address.h: void ns3::Ipv4MaskValue::Set(ns3::Ipv4Mask const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Ipv4Mask&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ipv4Mask&', 'value', is_const=True)])
     ## ipv4-address.h: ns3::Ipv4Mask ns3::Ipv4MaskValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Ipv4Mask', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
     ## ipv4-address.h: ns3::Ptr<ns3::AttributeValue> ns3::Ipv4MaskValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ipv4-address.h: std::string ns3::Ipv4MaskValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## ipv4-address.h: bool ns3::Ipv4MaskValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3SocketAddressTag_methods(root_module, cls):
     ## socket.h: ns3::SocketAddressTag::SocketAddressTag() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## socket.h: void ns3::SocketAddressTag::SetAddress(ns3::Address addr) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Address', 'addr')])
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Address', 'addr')])
     ## socket.h: ns3::Address ns3::SocketAddressTag::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Address', [], is_const=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True)
     ## socket.h: static ns3::TypeId ns3::SocketAddressTag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## socket.h: ns3::TypeId ns3::SocketAddressTag::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## socket.h: uint32_t ns3::SocketAddressTag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## socket.h: void ns3::SocketAddressTag::Serialize(ns3::TagBuffer i) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::TagBuffer', 'i')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
     ## socket.h: void ns3::SocketAddressTag::Deserialize(ns3::TagBuffer i) [member function]
-    cls.add_method('Deserialize', 'void', [param('ns3::TagBuffer', 'i')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
     ## socket.h: void ns3::SocketAddressTag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3InetSocketAddress_methods(root_module, cls):
     ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4, uint16_t port) [constructor]
-    cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')])
     ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4) [constructor]
-    cls.add_constructor([param('ns3::Ipv4Address', 'ipv4')], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Address', 'ipv4')])
     ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(uint16_t port) [constructor]
-    cls.add_constructor([param('uint16_t', 'port')], visibility='public')
+    cls.add_constructor([param('uint16_t', 'port')])
     ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(char const * ipv4, uint16_t port) [constructor]
-    cls.add_constructor([param('char *', 'ipv4', transfer_ownership=False, is_const=True), param('uint16_t', 'port')], visibility='public')
+    cls.add_constructor([param('char *', 'ipv4', transfer_ownership=False, is_const=True), param('uint16_t', 'port')])
     ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(char const * ipv4) [constructor]
-    cls.add_constructor([param('char *', 'ipv4', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('char *', 'ipv4', transfer_ownership=False, is_const=True)])
     ## inet-socket-address.h: uint16_t ns3::InetSocketAddress::GetPort() const [member function]
-    cls.add_method('GetPort', 'uint16_t', [], is_const=True)
+    cls.add_method('GetPort', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## inet-socket-address.h: ns3::Ipv4Address ns3::InetSocketAddress::GetIpv4() const [member function]
-    cls.add_method('GetIpv4', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetIpv4', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## inet-socket-address.h: void ns3::InetSocketAddress::SetPort(uint16_t port) [member function]
-    cls.add_method('SetPort', 'void', [param('uint16_t', 'port')])
+    cls.add_method('SetPort', 
+                   'void', 
+                   [param('uint16_t', 'port')])
     ## inet-socket-address.h: void ns3::InetSocketAddress::SetIpv4(ns3::Ipv4Address address) [member function]
-    cls.add_method('SetIpv4', 'void', [param('ns3::Ipv4Address', 'address')])
+    cls.add_method('SetIpv4', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'address')])
     ## inet-socket-address.h: static bool ns3::InetSocketAddress::IsMatchingType(ns3::Address const & address) [member function]
-    cls.add_method('IsMatchingType', 'bool', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     ## inet-socket-address.h: static ns3::InetSocketAddress ns3::InetSocketAddress::ConvertFrom(ns3::Address const & address) [member function]
-    cls.add_method('ConvertFrom', 'ns3::InetSocketAddress', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('ConvertFrom', 
+                   'ns3::InetSocketAddress', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     return
 
 def register_Ns3Ipv4Address_methods(root_module, cls):
     ## ipv4-address.h: ns3::Ipv4Address::Ipv4Address(ns3::Ipv4Address const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ipv4Address&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ipv4Address&', 'arg0', is_const=True)])
     ## ipv4-address.h: ns3::Ipv4Address::Ipv4Address() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-address.h: ns3::Ipv4Address::Ipv4Address(uint32_t address) [constructor]
-    cls.add_constructor([param('uint32_t', 'address')], visibility='public')
+    cls.add_constructor([param('uint32_t', 'address')])
     ## ipv4-address.h: ns3::Ipv4Address::Ipv4Address(char const * address) [constructor]
-    cls.add_constructor([param('char *', 'address', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('char *', 'address', transfer_ownership=False, is_const=True)])
     ## ipv4-address.h: ns3::Ipv4Address ns3::Ipv4Address::CombineMask(ns3::Ipv4Mask const & mask) const [member function]
-    cls.add_method('CombineMask', 'ns3::Ipv4Address', [param('ns3::Ipv4Mask&', 'mask', is_const=True)], is_const=True)
+    cls.add_method('CombineMask', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask&', 'mask', is_const=True)], 
+                   is_const=True)
     ## ipv4-address.h: static ns3::Ipv4Address ns3::Ipv4Address::ConvertFrom(ns3::Address const & address) [member function]
-    cls.add_method('ConvertFrom', 'ns3::Ipv4Address', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('ConvertFrom', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     ## ipv4-address.h: static ns3::Ipv4Address ns3::Ipv4Address::Deserialize(uint8_t const * buf) [member function]
-    cls.add_method('Deserialize', 'ns3::Ipv4Address', [param('uint8_t *', 'buf', transfer_ownership=False, is_const=True)], is_static=True)
+    cls.add_method('Deserialize', 
+                   'ns3::Ipv4Address', 
+                   [param('uint8_t *', 'buf', transfer_ownership=False, is_const=True)], 
+                   is_static=True)
     ## ipv4-address.h: uint32_t ns3::Ipv4Address::Get() const [member function]
-    cls.add_method('Get', 'uint32_t', [], is_const=True)
+    cls.add_method('Get', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-address.h: static ns3::Ipv4Address ns3::Ipv4Address::GetAny() [member function]
-    cls.add_method('GetAny', 'ns3::Ipv4Address', [], is_static=True)
+    cls.add_method('GetAny', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
     ## ipv4-address.h: static ns3::Ipv4Address ns3::Ipv4Address::GetBroadcast() [member function]
-    cls.add_method('GetBroadcast', 'ns3::Ipv4Address', [], is_static=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
     ## ipv4-address.h: static ns3::Ipv4Address ns3::Ipv4Address::GetLoopback() [member function]
-    cls.add_method('GetLoopback', 'ns3::Ipv4Address', [], is_static=True)
+    cls.add_method('GetLoopback', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
     ## ipv4-address.h: ns3::Ipv4Address ns3::Ipv4Address::GetSubnetDirectedBroadcast(ns3::Ipv4Mask const & mask) const [member function]
-    cls.add_method('GetSubnetDirectedBroadcast', 'ns3::Ipv4Address', [param('ns3::Ipv4Mask&', 'mask', is_const=True)], is_const=True)
+    cls.add_method('GetSubnetDirectedBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Mask&', 'mask', is_const=True)], 
+                   is_const=True)
     ## ipv4-address.h: static ns3::Ipv4Address ns3::Ipv4Address::GetZero() [member function]
-    cls.add_method('GetZero', 'ns3::Ipv4Address', [], is_static=True)
+    cls.add_method('GetZero', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_static=True)
     ## ipv4-address.h: bool ns3::Ipv4Address::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_const=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-address.h: bool ns3::Ipv4Address::IsEqual(ns3::Ipv4Address const & other) const [member function]
-    cls.add_method('IsEqual', 'bool', [param('ns3::Ipv4Address&', 'other', is_const=True)], is_const=True)
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ipv4Address&', 'other', is_const=True)], 
+                   is_const=True)
     ## ipv4-address.h: static bool ns3::Ipv4Address::IsMatchingType(ns3::Address const & address) [member function]
-    cls.add_method('IsMatchingType', 'bool', [param('ns3::Address&', 'address', is_const=True)], is_static=True)
+    cls.add_method('IsMatchingType', 
+                   'bool', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_static=True)
     ## ipv4-address.h: bool ns3::Ipv4Address::IsMulticast() const [member function]
-    cls.add_method('IsMulticast', 'bool', [], is_const=True)
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-address.h: bool ns3::Ipv4Address::IsSubnetDirectedBroadcast(ns3::Ipv4Mask const & mask) const [member function]
-    cls.add_method('IsSubnetDirectedBroadcast', 'bool', [param('ns3::Ipv4Mask&', 'mask', is_const=True)], is_const=True)
+    cls.add_method('IsSubnetDirectedBroadcast', 
+                   'bool', 
+                   [param('ns3::Ipv4Mask&', 'mask', is_const=True)], 
+                   is_const=True)
     ## ipv4-address.h: void ns3::Ipv4Address::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## ipv4-address.h: void ns3::Ipv4Address::Serialize(uint8_t * buf) const [member function]
-    cls.add_method('Serialize', 'void', [param('uint8_t *', 'buf')], is_const=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('uint8_t *', 'buf')], 
+                   is_const=True)
     ## ipv4-address.h: void ns3::Ipv4Address::Set(uint32_t address) [member function]
-    cls.add_method('Set', 'void', [param('uint32_t', 'address')])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('uint32_t', 'address')])
     ## ipv4-address.h: void ns3::Ipv4Address::Set(char const * address) [member function]
-    cls.add_method('Set', 'void', [param('char *', 'address', transfer_ownership=False, is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('char *', 'address', transfer_ownership=False, is_const=True)])
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Application_methods(root_module, cls):
     ## application.h: static ns3::TypeId ns3::Application::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## application.h: ns3::Application::Application() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## application.h: void ns3::Application::Start(ns3::Time const & startTime) [member function]
-    cls.add_method('Start', 'void', [param('ns3::Time&', 'startTime', is_const=True)])
+    cls.add_method('Start', 
+                   'void', 
+                   [param('ns3::Time&', 'startTime', is_const=True)])
     ## application.h: void ns3::Application::Start(ns3::RandomVariable const & startVariable) [member function]
-    cls.add_method('Start', 'void', [param('ns3::RandomVariable&', 'startVariable', is_const=True)])
+    cls.add_method('Start', 
+                   'void', 
+                   [param('ns3::RandomVariable&', 'startVariable', is_const=True)])
     ## application.h: void ns3::Application::Stop(ns3::Time const & stopTime) [member function]
-    cls.add_method('Stop', 'void', [param('ns3::Time&', 'stopTime', is_const=True)])
+    cls.add_method('Stop', 
+                   'void', 
+                   [param('ns3::Time&', 'stopTime', is_const=True)])
     ## application.h: void ns3::Application::Stop(ns3::RandomVariable const & stopVariable) [member function]
-    cls.add_method('Stop', 'void', [param('ns3::RandomVariable&', 'stopVariable', is_const=True)])
+    cls.add_method('Stop', 
+                   'void', 
+                   [param('ns3::RandomVariable&', 'stopVariable', is_const=True)])
     ## application.h: ns3::Ptr<ns3::Node> ns3::Application::GetNode() const [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [], is_const=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
     ## application.h: void ns3::Application::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')])
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
     ## application.h: void ns3::Application::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## application.h: void ns3::Application::StartApplication() [member function]
-    cls.add_method('StartApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## application.h: void ns3::Application::StopApplication() [member function]
-    cls.add_method('StopApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3Queue_methods(root_module, cls):
     ## queue.h: static ns3::TypeId ns3::Queue::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## queue.h: ns3::Queue::Queue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## queue.h: bool ns3::Queue::IsEmpty() const [member function]
-    cls.add_method('IsEmpty', 'bool', [], is_const=True)
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## queue.h: bool ns3::Queue::Enqueue(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('Enqueue', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')])
+    cls.add_method('Enqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
     ## queue.h: ns3::Ptr<ns3::Packet> ns3::Queue::Dequeue() [member function]
-    cls.add_method('Dequeue', 'ns3::Ptr< ns3::Packet >', [])
+    cls.add_method('Dequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [])
     ## queue.h: ns3::Ptr<ns3::Packet> ns3::Queue::Peek() const [member function]
-    cls.add_method('Peek', 'ns3::Ptr< ns3::Packet >', [], is_const=True)
+    cls.add_method('Peek', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_const=True)
     ## queue.h: void ns3::Queue::DequeueAll() [member function]
-    cls.add_method('DequeueAll', 'void', [])
+    cls.add_method('DequeueAll', 
+                   'void', 
+                   [])
     ## queue.h: uint32_t ns3::Queue::GetNPackets() const [member function]
-    cls.add_method('GetNPackets', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## queue.h: uint32_t ns3::Queue::GetNBytes() const [member function]
-    cls.add_method('GetNBytes', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## queue.h: uint32_t ns3::Queue::GetTotalReceivedBytes() const [member function]
-    cls.add_method('GetTotalReceivedBytes', 'uint32_t', [], is_const=True)
+    cls.add_method('GetTotalReceivedBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## queue.h: uint32_t ns3::Queue::GetTotalReceivedPackets() const [member function]
-    cls.add_method('GetTotalReceivedPackets', 'uint32_t', [], is_const=True)
+    cls.add_method('GetTotalReceivedPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## queue.h: uint32_t ns3::Queue::GetTotalDroppedBytes() const [member function]
-    cls.add_method('GetTotalDroppedBytes', 'uint32_t', [], is_const=True)
+    cls.add_method('GetTotalDroppedBytes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## queue.h: uint32_t ns3::Queue::GetTotalDroppedPackets() const [member function]
-    cls.add_method('GetTotalDroppedPackets', 'uint32_t', [], is_const=True)
+    cls.add_method('GetTotalDroppedPackets', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## queue.h: void ns3::Queue::ResetStatistics() [member function]
-    cls.add_method('ResetStatistics', 'void', [])
+    cls.add_method('ResetStatistics', 
+                   'void', 
+                   [])
     ## queue.h: void ns3::Queue::Drop(ns3::Ptr<ns3::Packet> packet) [member function]
-    cls.add_method('Drop', 'void', [param('ns3::Ptr< ns3::Packet >', 'packet')], visibility='protected')
+    cls.add_method('Drop', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet')], 
+                   visibility='protected')
     ## queue.h: bool ns3::Queue::DoEnqueue(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('DoEnqueue', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('DoEnqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## queue.h: ns3::Ptr<ns3::Packet> ns3::Queue::DoDequeue() [member function]
-    cls.add_method('DoDequeue', 'ns3::Ptr< ns3::Packet >', [], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('DoDequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## queue.h: ns3::Ptr<ns3::Packet> ns3::Queue::DoPeek() const [member function]
-    cls.add_method('DoPeek', 'ns3::Ptr< ns3::Packet >', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoPeek', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3Socket_methods(root_module, cls):
     ## socket.h: ns3::Socket::Socket() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## socket.h: static ns3::Ptr<ns3::Socket> ns3::Socket::CreateSocket(ns3::Ptr<ns3::Node> node, ns3::TypeId tid) [member function]
-    cls.add_method('CreateSocket', 'ns3::Ptr< ns3::Socket >', [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], is_static=True)
+    cls.add_method('CreateSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], 
+                   is_static=True)
     ## socket.h: ns3::Socket::SocketErrno ns3::Socket::GetErrno() const [member function]
-    cls.add_method('GetErrno', 'ns3::Socket::SocketErrno', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetErrno', 
+                   'ns3::Socket::SocketErrno', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## socket.h: ns3::Ptr<ns3::Node> ns3::Socket::GetNode() const [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## socket.h: void ns3::Socket::SetConnectCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionSucceeded, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionFailed) [member function]
-    cls.add_method('SetConnectCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionSucceeded'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionFailed')])
+    cls.add_method('SetConnectCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionSucceeded'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionFailed')])
     ## socket.h: void ns3::Socket::SetAcceptCallback(ns3::Callback<bool, ns3::Ptr<ns3::Socket>, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionRequest, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty> newConnectionCreated) [member function]
-    cls.add_method('SetAcceptCallback', 'void', [param('ns3::Callback< bool, ns3::Ptr< ns3::Socket >, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionRequest'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'newConnectionCreated')])
+    cls.add_method('SetAcceptCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::Socket >, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionRequest'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'newConnectionCreated')])
     ## socket.h: bool ns3::Socket::SetDataSentCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty> dataSent) [member function]
-    cls.add_method('SetDataSentCallback', 'bool', [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')], is_virtual=True)
+    cls.add_method('SetDataSentCallback', 
+                   'bool', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')], 
+                   is_virtual=True)
     ## socket.h: void ns3::Socket::SetSendCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty> sendCb) [member function]
-    cls.add_method('SetSendCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'sendCb')])
+    cls.add_method('SetSendCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'sendCb')])
     ## socket.h: void ns3::Socket::SetRecvCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> arg0) [member function]
-    cls.add_method('SetRecvCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'arg0')])
+    cls.add_method('SetRecvCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'arg0')])
     ## socket.h: int ns3::Socket::Bind(ns3::Address const & address) [member function]
-    cls.add_method('Bind', 'int', [param('ns3::Address&', 'address', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Bind', 
+                   'int', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::Bind() [member function]
-    cls.add_method('Bind', 'int', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Bind', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::Close() [member function]
-    cls.add_method('Close', 'int', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Close', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::ShutdownSend() [member function]
-    cls.add_method('ShutdownSend', 'int', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('ShutdownSend', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::ShutdownRecv() [member function]
-    cls.add_method('ShutdownRecv', 'int', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('ShutdownRecv', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::Connect(ns3::Address const & address) [member function]
-    cls.add_method('Connect', 'int', [param('ns3::Address&', 'address', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Connect', 
+                   'int', 
+                   [param('ns3::Address&', 'address', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::Listen(uint32_t queueLimit) [member function]
-    cls.add_method('Listen', 'int', [param('uint32_t', 'queueLimit')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Listen', 
+                   'int', 
+                   [param('uint32_t', 'queueLimit')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: uint32_t ns3::Socket::GetTxAvailable() const [member function]
-    cls.add_method('GetTxAvailable', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetTxAvailable', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## socket.h: int ns3::Socket::Send(ns3::Ptr<ns3::Packet> p, uint32_t flags) [member function]
-    cls.add_method('Send', 'int', [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Send', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::SendTo(ns3::Ptr<ns3::Packet> p, uint32_t flags, ns3::Address const & toAddress) [member function]
-    cls.add_method('SendTo', 'int', [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags'), param('ns3::Address&', 'toAddress', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SendTo', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags'), param('ns3::Address&', 'toAddress', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: uint32_t ns3::Socket::GetRxAvailable() const [member function]
-    cls.add_method('GetRxAvailable', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetRxAvailable', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## socket.h: ns3::Ptr<ns3::Packet> ns3::Socket::Recv(uint32_t maxSize, uint32_t flags) [member function]
-    cls.add_method('Recv', 'ns3::Ptr< ns3::Packet >', [param('uint32_t', 'maxSize'), param('uint32_t', 'flags')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Recv', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'maxSize'), param('uint32_t', 'flags')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: ns3::Ptr<ns3::Packet> ns3::Socket::RecvFrom(uint32_t maxSize, uint32_t flags, ns3::Address & fromAddress) [member function]
-    cls.add_method('RecvFrom', 'ns3::Ptr< ns3::Packet >', [param('uint32_t', 'maxSize'), param('uint32_t', 'flags'), param('ns3::Address&', 'fromAddress')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('RecvFrom', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'maxSize'), param('uint32_t', 'flags'), param('ns3::Address&', 'fromAddress')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## socket.h: int ns3::Socket::Send(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('Send', 'int', [param('ns3::Ptr< ns3::Packet >', 'p')])
+    cls.add_method('Send', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
     ## socket.h: int ns3::Socket::Send(uint8_t const * buf, uint32_t size, uint32_t flags) [member function]
-    cls.add_method('Send', 'int', [param('uint8_t *', 'buf', transfer_ownership=False, is_const=True), param('uint32_t', 'size'), param('uint32_t', 'flags')])
+    cls.add_method('Send', 
+                   'int', 
+                   [param('uint8_t *', 'buf', transfer_ownership=False, is_const=True), param('uint32_t', 'size'), param('uint32_t', 'flags')])
     ## socket.h: int ns3::Socket::SendTo(uint8_t const * buf, uint32_t size, uint32_t flags, ns3::Address const & address) [member function]
-    cls.add_method('SendTo', 'int', [param('uint8_t *', 'buf', transfer_ownership=False, is_const=True), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address&', 'address', is_const=True)])
+    cls.add_method('SendTo', 
+                   'int', 
+                   [param('uint8_t *', 'buf', transfer_ownership=False, is_const=True), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address&', 'address', is_const=True)])
     ## socket.h: ns3::Ptr<ns3::Packet> ns3::Socket::Recv() [member function]
-    cls.add_method('Recv', 'ns3::Ptr< ns3::Packet >', [])
+    cls.add_method('Recv', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [])
     ## socket.h: int ns3::Socket::Recv(uint8_t * buf, uint32_t size, uint32_t flags) [member function]
-    cls.add_method('Recv', 'int', [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags')])
+    cls.add_method('Recv', 
+                   'int', 
+                   [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags')])
     ## socket.h: ns3::Ptr<ns3::Packet> ns3::Socket::RecvFrom(ns3::Address & fromAddress) [member function]
-    cls.add_method('RecvFrom', 'ns3::Ptr< ns3::Packet >', [param('ns3::Address&', 'fromAddress')])
+    cls.add_method('RecvFrom', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('ns3::Address&', 'fromAddress')])
     ## socket.h: int ns3::Socket::RecvFrom(uint8_t * buf, uint32_t size, uint32_t flags, ns3::Address & fromAddress) [member function]
-    cls.add_method('RecvFrom', 'int', [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address&', 'fromAddress')])
+    cls.add_method('RecvFrom', 
+                   'int', 
+                   [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address&', 'fromAddress')])
     ## socket.h: void ns3::Socket::NotifyConnectionSucceeded() [member function]
-    cls.add_method('NotifyConnectionSucceeded', 'void', [], visibility='protected')
+    cls.add_method('NotifyConnectionSucceeded', 
+                   'void', 
+                   [], 
+                   visibility='protected')
     ## socket.h: void ns3::Socket::NotifyConnectionFailed() [member function]
-    cls.add_method('NotifyConnectionFailed', 'void', [], visibility='protected')
+    cls.add_method('NotifyConnectionFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected')
     ## socket.h: bool ns3::Socket::NotifyConnectionRequest(ns3::Address const & from) [member function]
-    cls.add_method('NotifyConnectionRequest', 'bool', [param('ns3::Address&', 'from', is_const=True)], visibility='protected')
+    cls.add_method('NotifyConnectionRequest', 
+                   'bool', 
+                   [param('ns3::Address&', 'from', is_const=True)], 
+                   visibility='protected')
     ## socket.h: void ns3::Socket::NotifyNewConnectionCreated(ns3::Ptr<ns3::Socket> socket, ns3::Address const & from) [member function]
-    cls.add_method('NotifyNewConnectionCreated', 'void', [param('ns3::Ptr< ns3::Socket >', 'socket'), param('ns3::Address&', 'from', is_const=True)], visibility='protected')
+    cls.add_method('NotifyNewConnectionCreated', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Socket >', 'socket'), param('ns3::Address&', 'from', is_const=True)], 
+                   visibility='protected')
     ## socket.h: void ns3::Socket::NotifyDataSent(uint32_t size) [member function]
-    cls.add_method('NotifyDataSent', 'void', [param('uint32_t', 'size')], visibility='protected')
+    cls.add_method('NotifyDataSent', 
+                   'void', 
+                   [param('uint32_t', 'size')], 
+                   visibility='protected')
     ## socket.h: void ns3::Socket::NotifySend(uint32_t spaceAvailable) [member function]
-    cls.add_method('NotifySend', 'void', [param('uint32_t', 'spaceAvailable')], visibility='protected')
+    cls.add_method('NotifySend', 
+                   'void', 
+                   [param('uint32_t', 'spaceAvailable')], 
+                   visibility='protected')
     ## socket.h: void ns3::Socket::NotifyDataRecv() [member function]
-    cls.add_method('NotifyDataRecv', 'void', [], visibility='protected')
+    cls.add_method('NotifyDataRecv', 
+                   'void', 
+                   [], 
+                   visibility='protected')
     return
 
 def register_Ns3Ipv4Header_methods(root_module, cls):
     ## ipv4-header.h: ns3::Ipv4Header::Ipv4Header() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4-header.h: void ns3::Ipv4Header::EnableChecksum() [member function]
-    cls.add_method('EnableChecksum', 'void', [])
+    cls.add_method('EnableChecksum', 
+                   'void', 
+                   [])
     ## ipv4-header.h: void ns3::Ipv4Header::SetPayloadSize(uint16_t size) [member function]
-    cls.add_method('SetPayloadSize', 'void', [param('uint16_t', 'size')])
+    cls.add_method('SetPayloadSize', 
+                   'void', 
+                   [param('uint16_t', 'size')])
     ## ipv4-header.h: void ns3::Ipv4Header::SetIdentification(uint16_t identification) [member function]
-    cls.add_method('SetIdentification', 'void', [param('uint16_t', 'identification')])
+    cls.add_method('SetIdentification', 
+                   'void', 
+                   [param('uint16_t', 'identification')])
     ## ipv4-header.h: void ns3::Ipv4Header::SetTos(uint8_t tos) [member function]
-    cls.add_method('SetTos', 'void', [param('uint8_t', 'tos')])
+    cls.add_method('SetTos', 
+                   'void', 
+                   [param('uint8_t', 'tos')])
     ## ipv4-header.h: void ns3::Ipv4Header::SetMoreFragments() [member function]
-    cls.add_method('SetMoreFragments', 'void', [])
+    cls.add_method('SetMoreFragments', 
+                   'void', 
+                   [])
     ## ipv4-header.h: void ns3::Ipv4Header::SetLastFragment() [member function]
-    cls.add_method('SetLastFragment', 'void', [])
+    cls.add_method('SetLastFragment', 
+                   'void', 
+                   [])
     ## ipv4-header.h: void ns3::Ipv4Header::SetDontFragment() [member function]
-    cls.add_method('SetDontFragment', 'void', [])
+    cls.add_method('SetDontFragment', 
+                   'void', 
+                   [])
     ## ipv4-header.h: void ns3::Ipv4Header::SetMayFragment() [member function]
-    cls.add_method('SetMayFragment', 'void', [])
+    cls.add_method('SetMayFragment', 
+                   'void', 
+                   [])
     ## ipv4-header.h: void ns3::Ipv4Header::SetFragmentOffset(uint16_t offset) [member function]
-    cls.add_method('SetFragmentOffset', 'void', [param('uint16_t', 'offset')])
+    cls.add_method('SetFragmentOffset', 
+                   'void', 
+                   [param('uint16_t', 'offset')])
     ## ipv4-header.h: void ns3::Ipv4Header::SetTtl(uint8_t ttl) [member function]
-    cls.add_method('SetTtl', 'void', [param('uint8_t', 'ttl')])
+    cls.add_method('SetTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
     ## ipv4-header.h: void ns3::Ipv4Header::SetProtocol(uint8_t num) [member function]
-    cls.add_method('SetProtocol', 'void', [param('uint8_t', 'num')])
+    cls.add_method('SetProtocol', 
+                   'void', 
+                   [param('uint8_t', 'num')])
     ## ipv4-header.h: void ns3::Ipv4Header::SetSource(ns3::Ipv4Address source) [member function]
-    cls.add_method('SetSource', 'void', [param('ns3::Ipv4Address', 'source')])
+    cls.add_method('SetSource', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'source')])
     ## ipv4-header.h: void ns3::Ipv4Header::SetDestination(ns3::Ipv4Address destination) [member function]
-    cls.add_method('SetDestination', 'void', [param('ns3::Ipv4Address', 'destination')])
+    cls.add_method('SetDestination', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'destination')])
     ## ipv4-header.h: uint16_t ns3::Ipv4Header::GetPayloadSize() const [member function]
-    cls.add_method('GetPayloadSize', 'uint16_t', [], is_const=True)
+    cls.add_method('GetPayloadSize', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: uint16_t ns3::Ipv4Header::GetIdentification() const [member function]
-    cls.add_method('GetIdentification', 'uint16_t', [], is_const=True)
+    cls.add_method('GetIdentification', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: uint8_t ns3::Ipv4Header::GetTos() const [member function]
-    cls.add_method('GetTos', 'uint8_t', [], is_const=True)
+    cls.add_method('GetTos', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: bool ns3::Ipv4Header::IsLastFragment() const [member function]
-    cls.add_method('IsLastFragment', 'bool', [], is_const=True)
+    cls.add_method('IsLastFragment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: bool ns3::Ipv4Header::IsDontFragment() const [member function]
-    cls.add_method('IsDontFragment', 'bool', [], is_const=True)
+    cls.add_method('IsDontFragment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: uint16_t ns3::Ipv4Header::GetFragmentOffset() const [member function]
-    cls.add_method('GetFragmentOffset', 'uint16_t', [], is_const=True)
+    cls.add_method('GetFragmentOffset', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: uint8_t ns3::Ipv4Header::GetTtl() const [member function]
-    cls.add_method('GetTtl', 'uint8_t', [], is_const=True)
+    cls.add_method('GetTtl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: uint8_t ns3::Ipv4Header::GetProtocol() const [member function]
-    cls.add_method('GetProtocol', 'uint8_t', [], is_const=True)
+    cls.add_method('GetProtocol', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: ns3::Ipv4Address ns3::Ipv4Header::GetSource() const [member function]
-    cls.add_method('GetSource', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetSource', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: ns3::Ipv4Address ns3::Ipv4Header::GetDestination() const [member function]
-    cls.add_method('GetDestination', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetDestination', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: bool ns3::Ipv4Header::IsChecksumOk() const [member function]
-    cls.add_method('IsChecksumOk', 'bool', [], is_const=True)
+    cls.add_method('IsChecksumOk', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ipv4-header.h: static ns3::TypeId ns3::Ipv4Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## ipv4-header.h: ns3::TypeId ns3::Ipv4Header::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ipv4-header.h: void ns3::Ipv4Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## ipv4-header.h: uint32_t ns3::Ipv4Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ipv4-header.h: void ns3::Ipv4Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
     ## ipv4-header.h: uint32_t ns3::Ipv4Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
     return
 
 def register_Ns3UdpSocket_methods(root_module, cls):
     ## udp-socket.h: static ns3::TypeId ns3::UdpSocket::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## udp-socket.h: ns3::UdpSocket::UdpSocket() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## udp-socket.h: void ns3::UdpSocket::SetRcvBufSize(uint32_t size) [member function]
-    cls.add_method('SetRcvBufSize', 'void', [param('uint32_t', 'size')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetRcvBufSize', 
+                   'void', 
+                   [param('uint32_t', 'size')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## udp-socket.h: uint32_t ns3::UdpSocket::GetRcvBufSize() const [member function]
-    cls.add_method('GetRcvBufSize', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetRcvBufSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## udp-socket.h: void ns3::UdpSocket::SetIpTtl(uint32_t ipTtl) [member function]
-    cls.add_method('SetIpTtl', 'void', [param('uint32_t', 'ipTtl')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetIpTtl', 
+                   'void', 
+                   [param('uint32_t', 'ipTtl')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## udp-socket.h: uint32_t ns3::UdpSocket::GetIpTtl() const [member function]
-    cls.add_method('GetIpTtl', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetIpTtl', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## udp-socket.h: void ns3::UdpSocket::SetIpMulticastTtl(uint32_t ipTtl) [member function]
-    cls.add_method('SetIpMulticastTtl', 'void', [param('uint32_t', 'ipTtl')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetIpMulticastTtl', 
+                   'void', 
+                   [param('uint32_t', 'ipTtl')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## udp-socket.h: uint32_t ns3::UdpSocket::GetIpMulticastTtl() const [member function]
-    cls.add_method('GetIpMulticastTtl', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetIpMulticastTtl', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3NetDevice_methods(root_module, cls):
     ## net-device.h: static ns3::TypeId ns3::NetDevice::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## net-device.h: void ns3::NetDevice::SetName(std::string const name) [member function]
-    cls.add_method('SetName', 'void', [param('std::string', 'name', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetName', 
+                   'void', 
+                   [param('std::string', 'name', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## net-device.h: std::string ns3::NetDevice::GetName() const [member function]
-    cls.add_method('GetName', 'std::string', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: void ns3::NetDevice::SetIfIndex(uint32_t const index) [member function]
-    cls.add_method('SetIfIndex', 'void', [param('uint32_t', 'index', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t', 'index', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## net-device.h: uint32_t ns3::NetDevice::GetIfIndex() const [member function]
-    cls.add_method('GetIfIndex', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: ns3::Ptr<ns3::Channel> ns3::NetDevice::GetChannel() const [member function]
-    cls.add_method('GetChannel', 'ns3::Ptr< ns3::Channel >', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: ns3::Address ns3::NetDevice::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Address', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: bool ns3::NetDevice::SetMtu(uint16_t const mtu) [member function]
-    cls.add_method('SetMtu', 'bool', [param('uint16_t', 'mtu', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t', 'mtu', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## net-device.h: uint16_t ns3::NetDevice::GetMtu() const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: bool ns3::NetDevice::IsLinkUp() const [member function]
-    cls.add_method('IsLinkUp', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: void ns3::NetDevice::SetLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
-    cls.add_method('SetLinkChangeCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## net-device.h: bool ns3::NetDevice::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: ns3::Address ns3::NetDevice::GetBroadcast() const [member function]
-    cls.add_method('GetBroadcast', 'ns3::Address', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: bool ns3::NetDevice::IsMulticast() const [member function]
-    cls.add_method('IsMulticast', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: ns3::Address ns3::NetDevice::GetMulticast() const [member function]
-    cls.add_method('GetMulticast', 'ns3::Address', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: ns3::Address ns3::NetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
-    cls.add_method('MakeMulticastAddress', 'ns3::Address', [param('ns3::Ipv4Address', 'multicastGroup')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('MakeMulticastAddress', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: bool ns3::NetDevice::IsPointToPoint() const [member function]
-    cls.add_method('IsPointToPoint', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: bool ns3::NetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
-    cls.add_method('Send', 'bool', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h: bool ns3::NetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'source', is_const=True), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
     ## net-device.h: ns3::Ptr<ns3::Node> ns3::NetDevice::GetNode() const [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: void ns3::NetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## net-device.h: bool ns3::NetDevice::NeedsArp() const [member function]
-    cls.add_method('NeedsArp', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## net-device.h: void ns3::NetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> cb) [member function]
-    cls.add_method('SetReceiveCallback', 'void', [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## net-device.h: void ns3::NetDevice::SetPromiscReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType> cb) [member function]
+    cls.add_method('SetPromiscReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType >', 'cb')], 
+                   is_virtual=True)
+    ## net-device.h: bool ns3::NetDevice::SupportsPromiscuous() const [member function]
+    cls.add_method('SupportsPromiscuous', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     cls.add_constructor([])
     return
 
-def register_Ns3Channel_methods(root_module, cls):
-    ## channel.h: static ns3::TypeId ns3::Channel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
-    ## channel.h: ns3::Channel::Channel() [constructor]
-    cls.add_constructor([], visibility='public')
-    ## channel.h: ns3::Channel::Channel(std::string name) [constructor]
-    cls.add_constructor([param('std::string', 'name')], visibility='public')
-    ## channel.h: void ns3::Channel::SetName(std::string arg0) [member function]
-    cls.add_method('SetName', 'void', [param('std::string', 'arg0')])
-    ## channel.h: std::string ns3::Channel::GetName() [member function]
-    cls.add_method('GetName', 'std::string', [])
-    ## channel.h: uint32_t ns3::Channel::GetNDevices() const [member function]
-    cls.add_method('GetNDevices', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## channel.h: ns3::Ptr<ns3::NetDevice> ns3::Channel::GetDevice(uint32_t i) const [member function]
-    cls.add_method('GetDevice', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3SimpleChannel_methods(root_module, cls):
-    ## simple-channel.h: static ns3::TypeId ns3::SimpleChannel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
-    ## simple-channel.h: ns3::SimpleChannel::SimpleChannel() [constructor]
-    cls.add_constructor([], visibility='public')
-    ## simple-channel.h: void ns3::SimpleChannel::Send(ns3::Ptr<ns3::Packet> p, uint16_t protocol, ns3::Mac48Address to, ns3::Mac48Address from, ns3::Ptr<ns3::SimpleNetDevice> sender) [member function]
-    cls.add_method('Send', 'void', [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from'), param('ns3::Ptr< ns3::SimpleNetDevice >', 'sender')])
-    ## simple-channel.h: void ns3::SimpleChannel::Add(ns3::Ptr<ns3::SimpleNetDevice> device) [member function]
-    cls.add_method('Add', 'void', [param('ns3::Ptr< ns3::SimpleNetDevice >', 'device')])
-    ## simple-channel.h: uint32_t ns3::SimpleChannel::GetNDevices() const [member function]
-    cls.add_method('GetNDevices', 'uint32_t', [], is_const=True, is_virtual=True)
-    ## simple-channel.h: ns3::Ptr<ns3::NetDevice> ns3::SimpleChannel::GetDevice(uint32_t i) const [member function]
-    cls.add_method('GetDevice', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'i')], is_const=True, is_virtual=True)
-    return
-
 def register_Ns3AddressValue_methods(root_module, cls):
     ## address.h: ns3::AddressValue::AddressValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## address.h: ns3::AddressValue::AddressValue(ns3::Address const & value) [constructor]
-    cls.add_constructor([param('ns3::Address&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Address&', 'value', is_const=True)])
     ## address.h: void ns3::AddressValue::Set(ns3::Address const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Address&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Address&', 'value', is_const=True)])
     ## address.h: ns3::Address ns3::AddressValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Address', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True)
     ## address.h: ns3::Ptr<ns3::AttributeValue> ns3::AddressValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## address.h: std::string ns3::AddressValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## address.h: bool ns3::AddressValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3Node_methods(root_module, cls):
     ## node.h: static ns3::TypeId ns3::Node::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## node.h: ns3::Node::Node() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## node.h: ns3::Node::Node(uint32_t systemId) [constructor]
-    cls.add_constructor([param('uint32_t', 'systemId')], visibility='public')
+    cls.add_constructor([param('uint32_t', 'systemId')])
     ## node.h: uint32_t ns3::Node::GetId() const [member function]
-    cls.add_method('GetId', 'uint32_t', [], is_const=True)
+    cls.add_method('GetId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## node.h: uint32_t ns3::Node::GetSystemId() const [member function]
-    cls.add_method('GetSystemId', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSystemId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## node.h: uint32_t ns3::Node::AddDevice(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('AddDevice', 'uint32_t', [param('ns3::Ptr< ns3::NetDevice >', 'device')])
+    cls.add_method('AddDevice', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')])
     ## node.h: ns3::Ptr<ns3::NetDevice> ns3::Node::GetDevice(uint32_t index) const [member function]
-    cls.add_method('GetDevice', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'index')], is_const=True)
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'index')], 
+                   is_const=True)
     ## node.h: uint32_t ns3::Node::GetNDevices() const [member function]
-    cls.add_method('GetNDevices', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## node.h: uint32_t ns3::Node::AddApplication(ns3::Ptr<ns3::Application> application) [member function]
-    cls.add_method('AddApplication', 'uint32_t', [param('ns3::Ptr< ns3::Application >', 'application')])
+    cls.add_method('AddApplication', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::Application >', 'application')])
     ## node.h: ns3::Ptr<ns3::Application> ns3::Node::GetApplication(uint32_t index) const [member function]
-    cls.add_method('GetApplication', 'ns3::Ptr< ns3::Application >', [param('uint32_t', 'index')], is_const=True)
+    cls.add_method('GetApplication', 
+                   'ns3::Ptr< ns3::Application >', 
+                   [param('uint32_t', 'index')], 
+                   is_const=True)
     ## node.h: ns3::Ptr<ns3::Application> ns3::Node::GetFirstApplication(ns3::TypeId tid) [member function]
-    cls.add_method('GetFirstApplication', 'ns3::Ptr< ns3::Application >', [param('ns3::TypeId', 'tid')])
+    cls.add_method('GetFirstApplication', 
+                   'ns3::Ptr< ns3::Application >', 
+                   [param('ns3::TypeId', 'tid')])
     ## node.h: uint32_t ns3::Node::GetNApplications() const [member function]
-    cls.add_method('GetNApplications', 'uint32_t', [], is_const=True)
-    ## node.h: void ns3::Node::RegisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> handler, uint16_t protocolType, ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('RegisterProtocolHandler', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'handler'), param('uint16_t', 'protocolType'), param('ns3::Ptr< ns3::NetDevice >', 'device')])
-    ## node.h: void ns3::Node::UnregisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> handler) [member function]
-    cls.add_method('UnregisterProtocolHandler', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'handler')])
+    cls.add_method('GetNApplications', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## node.h: void ns3::Node::RegisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType> handler, uint16_t protocolType, ns3::Ptr<ns3::NetDevice> device, bool promiscuous=false) [member function]
+    cls.add_method('RegisterProtocolHandler', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType >', 'handler'), param('uint16_t', 'protocolType'), param('ns3::Ptr< ns3::NetDevice >', 'device'), param('bool', 'promiscuous', default_value='false')])
+    ## node.h: void ns3::Node::UnregisterProtocolHandler(ns3::Callback<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType> handler) [member function]
+    cls.add_method('UnregisterProtocolHandler', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::Address const&, ns3::NetDevice::PacketType >', 'handler')])
     ## node.h: void ns3::Node::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## node.h: void ns3::Node::NotifyDeviceAdded(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('NotifyDeviceAdded', 'void', [param('ns3::Ptr< ns3::NetDevice >', 'device')], visibility='private', is_virtual=True)
+    cls.add_method('NotifyDeviceAdded', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3Channel_methods(root_module, cls):
+    ## channel.h: static ns3::TypeId ns3::Channel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## channel.h: ns3::Channel::Channel() [constructor]
+    cls.add_constructor([])
+    ## channel.h: ns3::Channel::Channel(std::string name) [constructor]
+    cls.add_constructor([param('std::string', 'name')])
+    ## channel.h: void ns3::Channel::SetName(std::string arg0) [member function]
+    cls.add_method('SetName', 
+                   'void', 
+                   [param('std::string', 'arg0')])
+    ## channel.h: std::string ns3::Channel::GetName() [member function]
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [])
+    ## channel.h: uint32_t ns3::Channel::GetNDevices() const [member function]
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## channel.h: ns3::Ptr<ns3::NetDevice> ns3::Channel::GetDevice(uint32_t i) const [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
 def register_Ns3TcpSocket_methods(root_module, cls):
     ## tcp-socket.h: static ns3::TypeId ns3::TcpSocket::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## tcp-socket.h: ns3::TcpSocket::TcpSocket() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## tcp-socket.h: void ns3::TcpSocket::SetSndBufSize(uint32_t size) [member function]
-    cls.add_method('SetSndBufSize', 'void', [param('uint32_t', 'size')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetSndBufSize', 
+                   'void', 
+                   [param('uint32_t', 'size')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetSndBufSize() const [member function]
-    cls.add_method('GetSndBufSize', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetSndBufSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetRcvBufSize(uint32_t size) [member function]
-    cls.add_method('SetRcvBufSize', 'void', [param('uint32_t', 'size')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetRcvBufSize', 
+                   'void', 
+                   [param('uint32_t', 'size')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetRcvBufSize() const [member function]
-    cls.add_method('GetRcvBufSize', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetRcvBufSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetSegSize(uint32_t size) [member function]
-    cls.add_method('SetSegSize', 'void', [param('uint32_t', 'size')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetSegSize', 
+                   'void', 
+                   [param('uint32_t', 'size')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetSegSize() const [member function]
-    cls.add_method('GetSegSize', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetSegSize', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetAdvWin(uint32_t window) [member function]
-    cls.add_method('SetAdvWin', 'void', [param('uint32_t', 'window')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetAdvWin', 
+                   'void', 
+                   [param('uint32_t', 'window')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetAdvWin() const [member function]
-    cls.add_method('GetAdvWin', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetAdvWin', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetSSThresh(uint32_t threshold) [member function]
-    cls.add_method('SetSSThresh', 'void', [param('uint32_t', 'threshold')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetSSThresh', 
+                   'void', 
+                   [param('uint32_t', 'threshold')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetSSThresh() const [member function]
-    cls.add_method('GetSSThresh', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetSSThresh', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetInitialCwnd(uint32_t count) [member function]
-    cls.add_method('SetInitialCwnd', 'void', [param('uint32_t', 'count')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetInitialCwnd', 
+                   'void', 
+                   [param('uint32_t', 'count')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetInitialCwnd() const [member function]
-    cls.add_method('GetInitialCwnd', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetInitialCwnd', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetConnTimeout(ns3::Time timeout) [member function]
-    cls.add_method('SetConnTimeout', 'void', [param('ns3::Time', 'timeout')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetConnTimeout', 
+                   'void', 
+                   [param('ns3::Time', 'timeout')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: ns3::Time ns3::TcpSocket::GetConnTimeout() const [member function]
-    cls.add_method('GetConnTimeout', 'ns3::Time', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetConnTimeout', 
+                   'ns3::Time', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetConnCount(uint32_t count) [member function]
-    cls.add_method('SetConnCount', 'void', [param('uint32_t', 'count')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetConnCount', 
+                   'void', 
+                   [param('uint32_t', 'count')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetConnCount() const [member function]
-    cls.add_method('GetConnCount', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetConnCount', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetDelAckTimeout(ns3::Time timeout) [member function]
-    cls.add_method('SetDelAckTimeout', 'void', [param('ns3::Time', 'timeout')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetDelAckTimeout', 
+                   'void', 
+                   [param('ns3::Time', 'timeout')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: ns3::Time ns3::TcpSocket::GetDelAckTimeout() const [member function]
-    cls.add_method('GetDelAckTimeout', 'ns3::Time', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetDelAckTimeout', 
+                   'ns3::Time', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: void ns3::TcpSocket::SetDelAckMaxCount(uint32_t count) [member function]
-    cls.add_method('SetDelAckMaxCount', 'void', [param('uint32_t', 'count')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetDelAckMaxCount', 
+                   'void', 
+                   [param('uint32_t', 'count')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## tcp-socket.h: uint32_t ns3::TcpSocket::GetDelAckMaxCount() const [member function]
-    cls.add_method('GetDelAckMaxCount', 'uint32_t', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetDelAckMaxCount', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3EthernetHeader_methods(root_module, cls):
     ## ethernet-header.h: ns3::EthernetHeader::EthernetHeader(bool hasPreamble) [constructor]
-    cls.add_constructor([param('bool', 'hasPreamble')], visibility='public')
+    cls.add_constructor([param('bool', 'hasPreamble')])
     ## ethernet-header.h: ns3::EthernetHeader::EthernetHeader() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ethernet-header.h: void ns3::EthernetHeader::SetLengthType(uint16_t size) [member function]
-    cls.add_method('SetLengthType', 'void', [param('uint16_t', 'size')])
+    cls.add_method('SetLengthType', 
+                   'void', 
+                   [param('uint16_t', 'size')])
     ## ethernet-header.h: void ns3::EthernetHeader::SetSource(ns3::Mac48Address source) [member function]
-    cls.add_method('SetSource', 'void', [param('ns3::Mac48Address', 'source')])
+    cls.add_method('SetSource', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'source')])
     ## ethernet-header.h: void ns3::EthernetHeader::SetDestination(ns3::Mac48Address destination) [member function]
-    cls.add_method('SetDestination', 'void', [param('ns3::Mac48Address', 'destination')])
+    cls.add_method('SetDestination', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'destination')])
     ## ethernet-header.h: void ns3::EthernetHeader::SetPreambleSfd(uint64_t preambleSfd) [member function]
-    cls.add_method('SetPreambleSfd', 'void', [param('uint64_t', 'preambleSfd')])
+    cls.add_method('SetPreambleSfd', 
+                   'void', 
+                   [param('uint64_t', 'preambleSfd')])
     ## ethernet-header.h: uint16_t ns3::EthernetHeader::GetLengthType() const [member function]
-    cls.add_method('GetLengthType', 'uint16_t', [], is_const=True)
+    cls.add_method('GetLengthType', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## ethernet-header.h: ns3::ethernet_header_t ns3::EthernetHeader::GetPacketType() const [member function]
-    cls.add_method('GetPacketType', 'ns3::ethernet_header_t', [], is_const=True)
+    cls.add_method('GetPacketType', 
+                   'ns3::ethernet_header_t', 
+                   [], 
+                   is_const=True)
     ## ethernet-header.h: ns3::Mac48Address ns3::EthernetHeader::GetSource() const [member function]
-    cls.add_method('GetSource', 'ns3::Mac48Address', [], is_const=True)
+    cls.add_method('GetSource', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True)
     ## ethernet-header.h: ns3::Mac48Address ns3::EthernetHeader::GetDestination() const [member function]
-    cls.add_method('GetDestination', 'ns3::Mac48Address', [], is_const=True)
+    cls.add_method('GetDestination', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True)
     ## ethernet-header.h: uint64_t ns3::EthernetHeader::GetPreambleSfd() const [member function]
-    cls.add_method('GetPreambleSfd', 'uint64_t', [], is_const=True)
+    cls.add_method('GetPreambleSfd', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
     ## ethernet-header.h: uint32_t ns3::EthernetHeader::GetHeaderSize() const [member function]
-    cls.add_method('GetHeaderSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetHeaderSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ethernet-header.h: static ns3::TypeId ns3::EthernetHeader::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## ethernet-header.h: ns3::TypeId ns3::EthernetHeader::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ethernet-header.h: void ns3::EthernetHeader::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## ethernet-header.h: uint32_t ns3::EthernetHeader::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ethernet-header.h: void ns3::EthernetHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
     ## ethernet-header.h: uint32_t ns3::EthernetHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
     return
 
 def register_Ns3SocketIpTtlTag_methods(root_module, cls):
     ## socket.h: ns3::SocketIpTtlTag::SocketIpTtlTag() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## socket.h: void ns3::SocketIpTtlTag::SetTtl(uint8_t ttl) [member function]
-    cls.add_method('SetTtl', 'void', [param('uint8_t', 'ttl')])
+    cls.add_method('SetTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
     ## socket.h: uint8_t ns3::SocketIpTtlTag::GetTtl() const [member function]
-    cls.add_method('GetTtl', 'uint8_t', [], is_const=True)
+    cls.add_method('GetTtl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## socket.h: static ns3::TypeId ns3::SocketIpTtlTag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## socket.h: ns3::TypeId ns3::SocketIpTtlTag::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## socket.h: uint32_t ns3::SocketIpTtlTag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## socket.h: void ns3::SocketIpTtlTag::Serialize(ns3::TagBuffer i) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::TagBuffer', 'i')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
     ## socket.h: void ns3::SocketIpTtlTag::Deserialize(ns3::TagBuffer i) [member function]
-    cls.add_method('Deserialize', 'void', [param('ns3::TagBuffer', 'i')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
     ## socket.h: void ns3::SocketIpTtlTag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3Ipv4_methods(root_module, cls):
     ## ipv4.h: static ns3::TypeId ns3::Ipv4::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## ipv4.h: ns3::Ipv4::Ipv4() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ipv4.h: void ns3::Ipv4::AddRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol, int16_t priority) [member function]
-    cls.add_method('AddRoutingProtocol', 'void', [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int16_t', 'priority')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('AddRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int16_t', 'priority')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('AddHostRouteTo', 'void', [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('AddHostRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::AddHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
-    cls.add_method('AddHostRouteTo', 'void', [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('AddHostRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('AddNetworkRouteTo', 'void', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('AddNetworkRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
-    cls.add_method('AddNetworkRouteTo', 'void', [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('AddNetworkRouteTo', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::SetDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
-    cls.add_method('SetDefaultRoute', 'void', [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetDefaultRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: uint32_t ns3::Ipv4::GetNRoutes() [member function]
-    cls.add_method('GetNRoutes', 'uint32_t', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('GetNRoutes', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: ns3::Ipv4Route ns3::Ipv4::GetRoute(uint32_t i) [member function]
-    cls.add_method('GetRoute', 'ns3::Ipv4Route', [param('uint32_t', 'i')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('GetRoute', 
+                   'ns3::Ipv4Route', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::RemoveRoute(uint32_t i) [member function]
-    cls.add_method('RemoveRoute', 'void', [param('uint32_t', 'i')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('RemoveRoute', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::AddMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
-    cls.add_method('AddMulticastRoute', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('AddMulticastRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int, std::allocator< unsigned int > >', 'outputInterfaces')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::RemoveMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface) [member function]
-    cls.add_method('RemoveMulticastRoute', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('RemoveMulticastRoute', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
-    cls.add_method('SetDefaultMulticastRoute', 'void', [param('uint32_t', 'outputInterface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetDefaultMulticastRoute', 
+                   'void', 
+                   [param('uint32_t', 'outputInterface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: uint32_t ns3::Ipv4::GetNMulticastRoutes() const [member function]
-    cls.add_method('GetNMulticastRoutes', 'uint32_t', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetNMulticastRoutes', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: ns3::Ipv4MulticastRoute ns3::Ipv4::GetMulticastRoute(uint32_t i) const [member function]
-    cls.add_method('GetMulticastRoute', 'ns3::Ipv4MulticastRoute', [param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetMulticastRoute', 
+                   'ns3::Ipv4MulticastRoute', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::RemoveMulticastRoute(uint32_t i) [member function]
-    cls.add_method('RemoveMulticastRoute', 'void', [param('uint32_t', 'i')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('RemoveMulticastRoute', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: uint32_t ns3::Ipv4::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
-    cls.add_method('AddInterface', 'uint32_t', [param('ns3::Ptr< ns3::NetDevice >', 'device')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: uint32_t ns3::Ipv4::GetNInterfaces() [member function]
-    cls.add_method('GetNInterfaces', 'uint32_t', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: uint32_t ns3::Ipv4::FindInterfaceForAddr(ns3::Ipv4Address addr) const [member function]
-    cls.add_method('FindInterfaceForAddr', 'uint32_t', [param('ns3::Ipv4Address', 'addr')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('FindInterfaceForAddr', 
+                   'uint32_t', 
+                   [param('ns3::Ipv4Address', 'addr')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: uint32_t ns3::Ipv4::FindInterfaceForAddr(ns3::Ipv4Address addr, ns3::Ipv4Mask mask) const [member function]
-    cls.add_method('FindInterfaceForAddr', 'uint32_t', [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('FindInterfaceForAddr', 
+                   'uint32_t', 
+                   [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: int32_t ns3::Ipv4::FindInterfaceForDevice(ns3::Ptr<ns3::NetDevice> nd) const [member function]
-    cls.add_method('FindInterfaceForDevice', 'int32_t', [param('ns3::Ptr< ns3::NetDevice >', 'nd')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('FindInterfaceForDevice', 
+                   'int32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'nd')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: ns3::Ptr<ns3::NetDevice> ns3::Ipv4::GetNetDevice(uint32_t i) [member function]
-    cls.add_method('GetNetDevice', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'i')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('GetNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::JoinMulticastGroup(ns3::Ipv4Address origin, ns3::Ipv4Address group) [member function]
-    cls.add_method('JoinMulticastGroup', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('JoinMulticastGroup', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::LeaveMulticastGroup(ns3::Ipv4Address origin, ns3::Ipv4Address group) [member function]
-    cls.add_method('LeaveMulticastGroup', 'void', [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('LeaveMulticastGroup', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::SetAddress(uint32_t i, ns3::Ipv4Address address) [member function]
-    cls.add_method('SetAddress', 'void', [param('uint32_t', 'i'), param('ns3::Ipv4Address', 'address')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv4Address', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::SetNetworkMask(uint32_t i, ns3::Ipv4Mask mask) [member function]
-    cls.add_method('SetNetworkMask', 'void', [param('uint32_t', 'i'), param('ns3::Ipv4Mask', 'mask')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetNetworkMask', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv4Mask', 'mask')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: ns3::Ipv4Mask ns3::Ipv4::GetNetworkMask(uint32_t i) const [member function]
-    cls.add_method('GetNetworkMask', 'ns3::Ipv4Mask', [param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetNetworkMask', 
+                   'ns3::Ipv4Mask', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::SetMetric(uint32_t i, uint16_t metric) [member function]
-    cls.add_method('SetMetric', 'void', [param('uint32_t', 'i'), param('uint16_t', 'metric')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('uint16_t', 'metric')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: uint16_t ns3::Ipv4::GetMetric(uint32_t i) const [member function]
-    cls.add_method('GetMetric', 'uint16_t', [param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: ns3::Ipv4Address ns3::Ipv4::GetAddress(uint32_t i) const [member function]
-    cls.add_method('GetAddress', 'ns3::Ipv4Address', [param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: ns3::Ipv4Address ns3::Ipv4::GetSourceAddress(ns3::Ipv4Address destination) const [member function]
-    cls.add_method('GetSourceAddress', 'ns3::Ipv4Address', [param('ns3::Ipv4Address', 'destination')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetSourceAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ipv4Address', 'destination')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: bool ns3::Ipv4::GetIfIndexForDestination(ns3::Ipv4Address dest, uint32_t & ifIndex) const [member function]
-    cls.add_method('GetIfIndexForDestination', 'bool', [param('ns3::Ipv4Address', 'dest'), param('uint32_t&', 'ifIndex')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetIfIndexForDestination', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'dest'), param('uint32_t&', 'ifIndex')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: uint16_t ns3::Ipv4::GetMtu(uint32_t i) const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: bool ns3::Ipv4::IsUp(uint32_t i) const [member function]
-    cls.add_method('IsUp', 'bool', [param('uint32_t', 'i')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('IsUp', 
+                   'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::SetUp(uint32_t i) [member function]
-    cls.add_method('SetUp', 'void', [param('uint32_t', 'i')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: void ns3::Ipv4::SetDown(uint32_t i) [member function]
-    cls.add_method('SetDown', 'void', [param('uint32_t', 'i')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## ipv4.h: uint32_t ns3::Ipv4::GetIfIndexByAddress(ns3::Ipv4Address addr, ns3::Ipv4Mask mask=ns3::Ipv4Mask(((const char*)"255.255.255.255"))) [member function]
-    cls.add_method('GetIfIndexByAddress', 'uint32_t', [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask', default_value='ns3::Ipv4Mask(((const char*)"255.255.255.255"))')], is_virtual=True)
+    cls.add_method('GetIfIndexByAddress', 
+                   'uint32_t', 
+                   [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask', default_value='ns3::Ipv4Mask(((const char*)"255.255.255.255"))')], 
+                   is_virtual=True)
     return
 
 def register_Ns3SocketFactory_methods(root_module, cls):
     ## socket-factory.h: static ns3::TypeId ns3::SocketFactory::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## socket-factory.h: ns3::SocketFactory::SocketFactory() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## socket-factory.h: ns3::Ptr<ns3::Socket> ns3::SocketFactory::CreateSocket() [member function]
-    cls.add_method('CreateSocket', 'ns3::Ptr< ns3::Socket >', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('CreateSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     return
 
 def register_Ns3DropTailQueue_methods(root_module, cls):
     ## drop-tail-queue.h: static ns3::TypeId ns3::DropTailQueue::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## drop-tail-queue.h: ns3::DropTailQueue::DropTailQueue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## drop-tail-queue.h: bool ns3::DropTailQueue::DoEnqueue(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('DoEnqueue', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], visibility='private', is_virtual=True)
+    cls.add_method('DoEnqueue', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   visibility='private', is_virtual=True)
     ## drop-tail-queue.h: ns3::Ptr<ns3::Packet> ns3::DropTailQueue::DoDequeue() [member function]
-    cls.add_method('DoDequeue', 'ns3::Ptr< ns3::Packet >', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDequeue', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## drop-tail-queue.h: ns3::Ptr<ns3::Packet> ns3::DropTailQueue::DoPeek() const [member function]
-    cls.add_method('DoPeek', 'ns3::Ptr< ns3::Packet >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('DoPeek', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3EthernetTrailer_methods(root_module, cls):
     ## ethernet-trailer.h: ns3::EthernetTrailer::EthernetTrailer() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ethernet-trailer.h: static void ns3::EthernetTrailer::EnableFcs(bool enable) [member function]
-    cls.add_method('EnableFcs', 'void', [param('bool', 'enable')], is_static=True)
+    cls.add_method('EnableFcs', 
+                   'void', 
+                   [param('bool', 'enable')], 
+                   is_static=True)
     ## ethernet-trailer.h: void ns3::EthernetTrailer::CalcFcs(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('CalcFcs', 'void', [param('ns3::Ptr< ns3::Packet >', 'p')])
+    cls.add_method('CalcFcs', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
     ## ethernet-trailer.h: void ns3::EthernetTrailer::SetFcs(uint32_t fcs) [member function]
-    cls.add_method('SetFcs', 'void', [param('uint32_t', 'fcs')])
+    cls.add_method('SetFcs', 
+                   'void', 
+                   [param('uint32_t', 'fcs')])
     ## ethernet-trailer.h: uint32_t ns3::EthernetTrailer::GetFcs() [member function]
-    cls.add_method('GetFcs', 'uint32_t', [])
+    cls.add_method('GetFcs', 
+                   'uint32_t', 
+                   [])
     ## ethernet-trailer.h: bool ns3::EthernetTrailer::CheckFcs(ns3::Ptr<ns3::Packet> p) const [member function]
-    cls.add_method('CheckFcs', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p')], is_const=True)
+    cls.add_method('CheckFcs', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')], 
+                   is_const=True)
     ## ethernet-trailer.h: uint32_t ns3::EthernetTrailer::GetTrailerSize() const [member function]
-    cls.add_method('GetTrailerSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetTrailerSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ethernet-trailer.h: static ns3::TypeId ns3::EthernetTrailer::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## ethernet-trailer.h: ns3::TypeId ns3::EthernetTrailer::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ethernet-trailer.h: void ns3::EthernetTrailer::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## ethernet-trailer.h: uint32_t ns3::EthernetTrailer::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ethernet-trailer.h: void ns3::EthernetTrailer::Serialize(ns3::Buffer::Iterator end) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'end')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'end')], 
+                   is_const=True, is_virtual=True)
     ## ethernet-trailer.h: uint32_t ns3::EthernetTrailer::Deserialize(ns3::Buffer::Iterator end) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'end')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'end')], 
+                   is_virtual=True)
     return
 
 def register_Ns3LlcSnapHeader_methods(root_module, cls):
     ## llc-snap-header.h: ns3::LlcSnapHeader::LlcSnapHeader() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## llc-snap-header.h: void ns3::LlcSnapHeader::SetType(uint16_t type) [member function]
-    cls.add_method('SetType', 'void', [param('uint16_t', 'type')])
+    cls.add_method('SetType', 
+                   'void', 
+                   [param('uint16_t', 'type')])
     ## llc-snap-header.h: uint16_t ns3::LlcSnapHeader::GetType() [member function]
-    cls.add_method('GetType', 'uint16_t', [])
+    cls.add_method('GetType', 
+                   'uint16_t', 
+                   [])
     ## llc-snap-header.h: static ns3::TypeId ns3::LlcSnapHeader::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## llc-snap-header.h: ns3::TypeId ns3::LlcSnapHeader::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## llc-snap-header.h: void ns3::LlcSnapHeader::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## llc-snap-header.h: uint32_t ns3::LlcSnapHeader::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## llc-snap-header.h: void ns3::LlcSnapHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
     ## llc-snap-header.h: uint32_t ns3::LlcSnapHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
     return
 
 def register_Ns3UdpSocketFactory_methods(root_module, cls):
     ## udp-socket-factory.h: static ns3::TypeId ns3::UdpSocketFactory::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     cls.add_constructor([])
     return
 
 def register_Ns3SimpleNetDevice_methods(root_module, cls):
     ## simple-net-device.h: static ns3::TypeId ns3::SimpleNetDevice::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## simple-net-device.h: ns3::SimpleNetDevice::SimpleNetDevice() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## simple-net-device.h: void ns3::SimpleNetDevice::Receive(ns3::Ptr<ns3::Packet> packet, uint16_t protocol, ns3::Mac48Address to, ns3::Mac48Address from) [member function]
-    cls.add_method('Receive', 'void', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')])
+    cls.add_method('Receive', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from')])
     ## simple-net-device.h: void ns3::SimpleNetDevice::SetChannel(ns3::Ptr<ns3::SimpleChannel> channel) [member function]
-    cls.add_method('SetChannel', 'void', [param('ns3::Ptr< ns3::SimpleChannel >', 'channel')])
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SimpleChannel >', 'channel')])
     ## simple-net-device.h: void ns3::SimpleNetDevice::SetAddress(ns3::Mac48Address address) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Mac48Address', 'address')])
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'address')])
     ## simple-net-device.h: void ns3::SimpleNetDevice::SetName(std::string const name) [member function]
-    cls.add_method('SetName', 'void', [param('std::string', 'name', is_const=True)], is_virtual=True)
+    cls.add_method('SetName', 
+                   'void', 
+                   [param('std::string', 'name', is_const=True)], 
+                   is_virtual=True)
     ## simple-net-device.h: std::string ns3::SimpleNetDevice::GetName() const [member function]
-    cls.add_method('GetName', 'std::string', [], is_const=True, is_virtual=True)
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: void ns3::SimpleNetDevice::SetIfIndex(uint32_t const index) [member function]
-    cls.add_method('SetIfIndex', 'void', [param('uint32_t', 'index', is_const=True)], is_virtual=True)
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t', 'index', is_const=True)], 
+                   is_virtual=True)
     ## simple-net-device.h: uint32_t ns3::SimpleNetDevice::GetIfIndex() const [member function]
-    cls.add_method('GetIfIndex', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: ns3::Ptr<ns3::Channel> ns3::SimpleNetDevice::GetChannel() const [member function]
-    cls.add_method('GetChannel', 'ns3::Ptr< ns3::Channel >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: ns3::Address ns3::SimpleNetDevice::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: bool ns3::SimpleNetDevice::SetMtu(uint16_t const mtu) [member function]
-    cls.add_method('SetMtu', 'bool', [param('uint16_t', 'mtu', is_const=True)], is_virtual=True)
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t', 'mtu', is_const=True)], 
+                   is_virtual=True)
     ## simple-net-device.h: uint16_t ns3::SimpleNetDevice::GetMtu() const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: bool ns3::SimpleNetDevice::IsLinkUp() const [member function]
-    cls.add_method('IsLinkUp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: void ns3::SimpleNetDevice::SetLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
-    cls.add_method('SetLinkChangeCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], is_virtual=True)
+    cls.add_method('SetLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_virtual=True)
     ## simple-net-device.h: bool ns3::SimpleNetDevice::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: ns3::Address ns3::SimpleNetDevice::GetBroadcast() const [member function]
-    cls.add_method('GetBroadcast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: bool ns3::SimpleNetDevice::IsMulticast() const [member function]
-    cls.add_method('IsMulticast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: ns3::Address ns3::SimpleNetDevice::GetMulticast() const [member function]
-    cls.add_method('GetMulticast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: ns3::Address ns3::SimpleNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
-    cls.add_method('MakeMulticastAddress', 'ns3::Address', [param('ns3::Ipv4Address', 'multicastGroup')], is_const=True, is_virtual=True)
+    cls.add_method('MakeMulticastAddress', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: bool ns3::SimpleNetDevice::IsPointToPoint() const [member function]
-    cls.add_method('IsPointToPoint', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: bool ns3::SimpleNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
-    cls.add_method('Send', 'bool', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], is_virtual=True)
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## simple-net-device.h: bool ns3::SimpleNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'source', is_const=True), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
     ## simple-net-device.h: ns3::Ptr<ns3::Node> ns3::SimpleNetDevice::GetNode() const [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: void ns3::SimpleNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')], is_virtual=True)
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_virtual=True)
     ## simple-net-device.h: bool ns3::SimpleNetDevice::NeedsArp() const [member function]
-    cls.add_method('NeedsArp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## simple-net-device.h: void ns3::SimpleNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> cb) [member function]
-    cls.add_method('SetReceiveCallback', 'void', [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], is_virtual=True)
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
     ## simple-net-device.h: void ns3::SimpleNetDevice::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    return
+
+def register_Ns3SimpleChannel_methods(root_module, cls):
+    ## simple-channel.h: static ns3::TypeId ns3::SimpleChannel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## simple-channel.h: ns3::SimpleChannel::SimpleChannel() [constructor]
+    cls.add_constructor([])
+    ## simple-channel.h: void ns3::SimpleChannel::Send(ns3::Ptr<ns3::Packet> p, uint16_t protocol, ns3::Mac48Address to, ns3::Mac48Address from, ns3::Ptr<ns3::SimpleNetDevice> sender) [member function]
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'protocol'), param('ns3::Mac48Address', 'to'), param('ns3::Mac48Address', 'from'), param('ns3::Ptr< ns3::SimpleNetDevice >', 'sender')])
+    ## simple-channel.h: void ns3::SimpleChannel::Add(ns3::Ptr<ns3::SimpleNetDevice> device) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::SimpleNetDevice >', 'device')])
+    ## simple-channel.h: uint32_t ns3::SimpleChannel::GetNDevices() const [member function]
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## simple-channel.h: ns3::Ptr<ns3::NetDevice> ns3::SimpleChannel::GetDevice(uint32_t i) const [member function]
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3TcpSocketFactory_methods(root_module, cls):
     ## tcp-socket-factory.h: static ns3::TypeId ns3::TcpSocketFactory::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     cls.add_constructor([])
     return
 
 def register_Ns3PacketSocketFactory_methods(root_module, cls):
     ## packet-socket-factory.h: static ns3::TypeId ns3::PacketSocketFactory::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## packet-socket-factory.h: ns3::PacketSocketFactory::PacketSocketFactory() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## packet-socket-factory.h: ns3::Ptr<ns3::Socket> ns3::PacketSocketFactory::CreateSocket() [member function]
-    cls.add_method('CreateSocket', 'ns3::Ptr< ns3::Socket >', [], is_virtual=True)
+    cls.add_method('CreateSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [], 
+                   is_virtual=True)
     return
 
 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 >', [])
+    module.add_function('MakeMac48AddressChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## ipv4-address.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeIpv4AddressChecker() [free function]
-    module.add_function('MakeIpv4AddressChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeIpv4AddressChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## address-utils.h: extern void ns3::WriteTo(ns3::Buffer::Iterator & i, ns3::Mac48Address ad) [free function]
-    module.add_function('WriteTo', 'void', [param('ns3::Buffer::Iterator&', 'i'), param('ns3::Mac48Address', 'ad')])
+    module.add_function('WriteTo', 
+                        'void', 
+                        [param('ns3::Buffer::Iterator&', 'i'), param('ns3::Mac48Address', 'ad')])
     ## address-utils.h: extern void ns3::WriteTo(ns3::Buffer::Iterator & i, ns3::Address const & ad) [free function]
-    module.add_function('WriteTo', 'void', [param('ns3::Buffer::Iterator&', 'i'), param('ns3::Address&', 'ad', is_const=True)])
+    module.add_function('WriteTo', 
+                        'void', 
+                        [param('ns3::Buffer::Iterator&', 'i'), param('ns3::Address&', 'ad', is_const=True)])
     ## address-utils.h: extern void ns3::WriteTo(ns3::Buffer::Iterator & i, ns3::Ipv4Address ad) [free function]
-    module.add_function('WriteTo', 'void', [param('ns3::Buffer::Iterator&', 'i'), param('ns3::Ipv4Address', 'ad')])
+    module.add_function('WriteTo', 
+                        'void', 
+                        [param('ns3::Buffer::Iterator&', 'i'), param('ns3::Ipv4Address', 'ad')])
     ## address.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeAddressChecker() [free function]
-    module.add_function('MakeAddressChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeAddressChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## ipv4-address.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeIpv4MaskChecker() [free function]
-    module.add_function('MakeIpv4MaskChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    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')])
+    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')])
+    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')])
+    module.add_function('ReadFrom', 
+                        'void', 
+                        [param('ns3::Buffer::Iterator&', 'i'), param('ns3::Ipv4Address&', 'ad')])
     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_olsr.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_olsr.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -44,7 +44,7 @@
     root_module = module.get_root()
     
     ## olsr-header.h: ns3::olsr::MessageHeader [class]
-    module.add_class('MessageHeader', allow_subclassing=True, parent=root_module['ns3::Header'])
+    module.add_class('MessageHeader', parent=root_module['ns3::Header'])
     ## olsr-header.h: ns3::olsr::MessageHeader::MessageType [enumeration]
     module.add_enum('MessageType', ['HELLO_MESSAGE', 'TC_MESSAGE', 'MID_MESSAGE', 'HNA_MESSAGE'], outer_class=root_module['ns3::olsr::MessageHeader'])
     ## olsr-header.h: ns3::olsr::MessageHeader::Mid [struct]
@@ -60,9 +60,9 @@
     ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Association [struct]
     module.add_class('Association', outer_class=root_module['ns3::olsr::MessageHeader::Hna'])
     ## olsr-agent.h: ns3::olsr::Agent [class]
-    module.add_class('Agent', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Agent', parent=root_module['ns3::Object'])
     ## olsr-header.h: ns3::olsr::PacketHeader [class]
-    module.add_class('PacketHeader', allow_subclassing=True, parent=root_module['ns3::Header'])
+    module.add_class('PacketHeader', parent=root_module['ns3::Header'])
 
 def register_methods(root_module):
     register_Ns3OlsrMessageHeader_methods(root_module, root_module['ns3::olsr::MessageHeader'])
@@ -78,94 +78,189 @@
 
 def register_Ns3OlsrMessageHeader_methods(root_module, cls):
     ## olsr-header.h: ns3::olsr::MessageHeader::MessageHeader(ns3::olsr::MessageHeader const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::olsr::MessageHeader&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::olsr::MessageHeader&', 'arg0', is_const=True)])
     ## olsr-header.h: ns3::olsr::MessageHeader::MessageHeader() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::Hello & ns3::olsr::MessageHeader::GetHello() [member function]
-    cls.add_method('GetHello', 'ns3::olsr::MessageHeader::Hello&', [])
+    cls.add_method('GetHello', 
+                   'ns3::olsr::MessageHeader::Hello&', 
+                   [])
     ## olsr-header.h: ns3::olsr::MessageHeader::Hello const & ns3::olsr::MessageHeader::GetHello() const [member function]
-    cls.add_method('GetHello', retval('ns3::olsr::MessageHeader::Hello&', is_const=True), [], is_const=True)
+    cls.add_method('GetHello', 
+                   retval('ns3::olsr::MessageHeader::Hello&', is_const=True), 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::Hna & ns3::olsr::MessageHeader::GetHna() [member function]
-    cls.add_method('GetHna', 'ns3::olsr::MessageHeader::Hna&', [])
+    cls.add_method('GetHna', 
+                   'ns3::olsr::MessageHeader::Hna&', 
+                   [])
     ## olsr-header.h: ns3::olsr::MessageHeader::Hna const & ns3::olsr::MessageHeader::GetHna() const [member function]
-    cls.add_method('GetHna', retval('ns3::olsr::MessageHeader::Hna&', is_const=True), [], is_const=True)
+    cls.add_method('GetHna', 
+                   retval('ns3::olsr::MessageHeader::Hna&', is_const=True), 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: uint8_t ns3::olsr::MessageHeader::GetHopCount() const [member function]
-    cls.add_method('GetHopCount', 'uint8_t', [], is_const=True)
+    cls.add_method('GetHopCount', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: ns3::TypeId ns3::olsr::MessageHeader::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: uint16_t ns3::olsr::MessageHeader::GetMessageSequenceNumber() const [member function]
-    cls.add_method('GetMessageSequenceNumber', 'uint16_t', [], is_const=True)
+    cls.add_method('GetMessageSequenceNumber', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::MessageType ns3::olsr::MessageHeader::GetMessageType() const [member function]
-    cls.add_method('GetMessageType', 'ns3::olsr::MessageHeader::MessageType', [], is_const=True)
+    cls.add_method('GetMessageType', 
+                   'ns3::olsr::MessageHeader::MessageType', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::Mid & ns3::olsr::MessageHeader::GetMid() [member function]
-    cls.add_method('GetMid', 'ns3::olsr::MessageHeader::Mid&', [])
+    cls.add_method('GetMid', 
+                   'ns3::olsr::MessageHeader::Mid&', 
+                   [])
     ## olsr-header.h: ns3::olsr::MessageHeader::Mid const & ns3::olsr::MessageHeader::GetMid() const [member function]
-    cls.add_method('GetMid', retval('ns3::olsr::MessageHeader::Mid&', is_const=True), [], is_const=True)
+    cls.add_method('GetMid', 
+                   retval('ns3::olsr::MessageHeader::Mid&', is_const=True), 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: ns3::Ipv4Address ns3::olsr::MessageHeader::GetOriginatorAddress() const [member function]
-    cls.add_method('GetOriginatorAddress', 'ns3::Ipv4Address', [], is_const=True)
+    cls.add_method('GetOriginatorAddress', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::Tc & ns3::olsr::MessageHeader::GetTc() [member function]
-    cls.add_method('GetTc', 'ns3::olsr::MessageHeader::Tc&', [])
+    cls.add_method('GetTc', 
+                   'ns3::olsr::MessageHeader::Tc&', 
+                   [])
     ## olsr-header.h: ns3::olsr::MessageHeader::Tc const & ns3::olsr::MessageHeader::GetTc() const [member function]
-    cls.add_method('GetTc', retval('ns3::olsr::MessageHeader::Tc&', is_const=True), [], is_const=True)
+    cls.add_method('GetTc', 
+                   retval('ns3::olsr::MessageHeader::Tc&', is_const=True), 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: uint8_t ns3::olsr::MessageHeader::GetTimeToLive() const [member function]
-    cls.add_method('GetTimeToLive', 'uint8_t', [], is_const=True)
+    cls.add_method('GetTimeToLive', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: static ns3::TypeId ns3::olsr::MessageHeader::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## olsr-header.h: ns3::Time ns3::olsr::MessageHeader::GetVTime() const [member function]
-    cls.add_method('GetVTime', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetVTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::SetHopCount(uint8_t hopCount) [member function]
-    cls.add_method('SetHopCount', 'void', [param('uint8_t', 'hopCount')])
+    cls.add_method('SetHopCount', 
+                   'void', 
+                   [param('uint8_t', 'hopCount')])
     ## olsr-header.h: void ns3::olsr::MessageHeader::SetMessageSequenceNumber(uint16_t messageSequenceNumber) [member function]
-    cls.add_method('SetMessageSequenceNumber', 'void', [param('uint16_t', 'messageSequenceNumber')])
+    cls.add_method('SetMessageSequenceNumber', 
+                   'void', 
+                   [param('uint16_t', 'messageSequenceNumber')])
     ## olsr-header.h: void ns3::olsr::MessageHeader::SetMessageType(ns3::olsr::MessageHeader::MessageType messageType) [member function]
-    cls.add_method('SetMessageType', 'void', [param('ns3::olsr::MessageHeader::MessageType', 'messageType')])
+    cls.add_method('SetMessageType', 
+                   'void', 
+                   [param('ns3::olsr::MessageHeader::MessageType', 'messageType')])
     ## olsr-header.h: void ns3::olsr::MessageHeader::SetOriginatorAddress(ns3::Ipv4Address originatorAddress) [member function]
-    cls.add_method('SetOriginatorAddress', 'void', [param('ns3::Ipv4Address', 'originatorAddress')])
+    cls.add_method('SetOriginatorAddress', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'originatorAddress')])
     ## olsr-header.h: void ns3::olsr::MessageHeader::SetTimeToLive(uint8_t timeToLive) [member function]
-    cls.add_method('SetTimeToLive', 'void', [param('uint8_t', 'timeToLive')])
+    cls.add_method('SetTimeToLive', 
+                   'void', 
+                   [param('uint8_t', 'timeToLive')])
     ## olsr-header.h: void ns3::olsr::MessageHeader::SetVTime(ns3::Time time) [member function]
-    cls.add_method('SetVTime', 'void', [param('ns3::Time', 'time')])
+    cls.add_method('SetVTime', 
+                   'void', 
+                   [param('ns3::Time', 'time')])
     cls.add_output_stream_operator()
     return
 
 def register_Ns3OlsrMessageHeaderMid_methods(root_module, cls):
     ## olsr-header.h: ns3::olsr::MessageHeader::Mid::Mid(ns3::olsr::MessageHeader::Mid const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::olsr::MessageHeader::Mid&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::olsr::MessageHeader::Mid&', 'arg0', is_const=True)])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Mid::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Mid::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Mid::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Mid::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::Mid::interfaceAddresses [variable]
     cls.add_instance_attribute('interfaceAddresses', 'std::vector< ns3::Ipv4Address, std::allocator< ns3::Ipv4Address > >', is_const=False)
     return
 
 def register_Ns3OlsrMessageHeaderHello_methods(root_module, cls):
     ## olsr-header.h: ns3::olsr::MessageHeader::Hello::Hello(ns3::olsr::MessageHeader::Hello const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::olsr::MessageHeader::Hello&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::olsr::MessageHeader::Hello&', 'arg0', is_const=True)])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Hello::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
     ## olsr-header.h: ns3::Time ns3::olsr::MessageHeader::Hello::GetHTime() const [member function]
-    cls.add_method('GetHTime', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetHTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Hello::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Hello::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Hello::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Hello::SetHTime(ns3::Time time) [member function]
-    cls.add_method('SetHTime', 'void', [param('ns3::Time', 'time')])
+    cls.add_method('SetHTime', 
+                   'void', 
+                   [param('ns3::Time', 'time')])
     ## olsr-header.h: ns3::olsr::MessageHeader::Hello::hTime [variable]
     cls.add_instance_attribute('hTime', 'uint8_t', is_const=False)
     ## olsr-header.h: ns3::olsr::MessageHeader::Hello::linkMessages [variable]
@@ -184,15 +279,26 @@
 
 def register_Ns3OlsrMessageHeaderTc_methods(root_module, cls):
     ## olsr-header.h: ns3::olsr::MessageHeader::Tc::Tc(ns3::olsr::MessageHeader::Tc const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::olsr::MessageHeader::Tc&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::olsr::MessageHeader::Tc&', 'arg0', is_const=True)])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Tc::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Tc::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Tc::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Tc::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::Tc::ansn [variable]
     cls.add_instance_attribute('ansn', 'uint16_t', is_const=False)
     ## olsr-header.h: ns3::olsr::MessageHeader::Tc::neighborAddresses [variable]
@@ -201,15 +307,26 @@
 
 def register_Ns3OlsrMessageHeaderHna_methods(root_module, cls):
     ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Hna(ns3::olsr::MessageHeader::Hna const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::olsr::MessageHeader::Hna&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::olsr::MessageHeader::Hna&', 'arg0', is_const=True)])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Hna::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'messageSize')])
     ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Hna::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Hna::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True)
     ## olsr-header.h: void ns3::olsr::MessageHeader::Hna::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True)
     ## olsr-header.h: ns3::olsr::MessageHeader::Hna::associations [variable]
     cls.add_instance_attribute('associations', 'std::vector< ns3::olsr::MessageHeader::Hna::Association, std::allocator< ns3::olsr::MessageHeader::Hna::Association > >', is_const=False)
     return
@@ -224,41 +341,81 @@
 
 def register_Ns3OlsrAgent_methods(root_module, cls):
     ## olsr-agent.h: static ns3::TypeId ns3::olsr::Agent::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## olsr-agent.h: void ns3::olsr::Agent::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## olsr-agent.h: void ns3::olsr::Agent::SetMainInterface(uint32_t interface) [member function]
-    cls.add_method('SetMainInterface', 'void', [param('uint32_t', 'interface')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetMainInterface', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## olsr-agent.h: void ns3::olsr::Agent::Start() [member function]
-    cls.add_method('Start', 'void', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Start', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3OlsrPacketHeader_methods(root_module, cls):
     ## olsr-header.h: ns3::olsr::PacketHeader::PacketHeader(ns3::olsr::PacketHeader const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::olsr::PacketHeader&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::olsr::PacketHeader&', 'arg0', is_const=True)])
     ## olsr-header.h: ns3::olsr::PacketHeader::PacketHeader() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## olsr-header.h: uint32_t ns3::olsr::PacketHeader::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'uint32_t', [param('ns3::Buffer::Iterator', 'start')], is_virtual=True)
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
     ## olsr-header.h: ns3::TypeId ns3::olsr::PacketHeader::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 'ns3::TypeId', [], is_const=True, is_virtual=True)
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: uint16_t ns3::olsr::PacketHeader::GetPacketLength() const [member function]
-    cls.add_method('GetPacketLength', 'uint16_t', [], is_const=True)
+    cls.add_method('GetPacketLength', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: uint16_t ns3::olsr::PacketHeader::GetPacketSequenceNumber() const [member function]
-    cls.add_method('GetPacketSequenceNumber', 'uint16_t', [], is_const=True)
+    cls.add_method('GetPacketSequenceNumber', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
     ## olsr-header.h: uint32_t ns3::olsr::PacketHeader::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: static ns3::TypeId ns3::olsr::PacketHeader::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## olsr-header.h: void ns3::olsr::PacketHeader::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 'void', [param('std::ostream&', 'os')], is_const=True, is_virtual=True)
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream&', 'os')], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: void ns3::olsr::PacketHeader::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'void', [param('ns3::Buffer::Iterator', 'start')], is_const=True, is_virtual=True)
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
     ## olsr-header.h: void ns3::olsr::PacketHeader::SetPacketLength(uint16_t length) [member function]
-    cls.add_method('SetPacketLength', 'void', [param('uint16_t', 'length')])
+    cls.add_method('SetPacketLength', 
+                   'void', 
+                   [param('uint16_t', 'length')])
     ## olsr-header.h: void ns3::olsr::PacketHeader::SetPacketSequenceNumber(uint16_t seqnum) [member function]
-    cls.add_method('SetPacketSequenceNumber', 'void', [param('uint16_t', 'seqnum')])
+    cls.add_method('SetPacketSequenceNumber', 
+                   'void', 
+                   [param('uint16_t', 'seqnum')])
     cls.add_output_stream_operator()
     return
 
@@ -281,8 +438,12 @@
 
 def register_functions_ns3_olsr(module, root_module):
     ## olsr-header.h: extern double ns3::olsr::EmfToSeconds(uint8_t emf) [free function]
-    module.add_function('EmfToSeconds', 'double', [param('uint8_t', 'emf')])
+    module.add_function('EmfToSeconds', 
+                        'double', 
+                        [param('uint8_t', 'emf')])
     ## olsr-header.h: extern uint8_t ns3::olsr::SecondsToEmf(double seconds) [free function]
-    module.add_function('SecondsToEmf', 'uint8_t', [param('double', 'seconds')])
+    module.add_function('SecondsToEmf', 
+                        'uint8_t', 
+                        [param('double', 'seconds')])
     return
 
--- a/bindings/python/ns3_module_onoff.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_onoff.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,10 +1,10 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
     
     ## onoff-application.h: ns3::OnOffApplication [class]
-    module.add_class('OnOffApplication', allow_subclassing=True, parent=root_module['ns3::Application'])
+    module.add_class('OnOffApplication', parent=root_module['ns3::Application'])
     
     ## Register a nested module for the namespace internal
     
@@ -52,17 +52,31 @@
 
 def register_Ns3OnOffApplication_methods(root_module, cls):
     ## onoff-application.h: static ns3::TypeId ns3::OnOffApplication::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## onoff-application.h: ns3::OnOffApplication::OnOffApplication() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## onoff-application.h: void ns3::OnOffApplication::SetMaxBytes(uint32_t maxBytes) [member function]
-    cls.add_method('SetMaxBytes', 'void', [param('uint32_t', 'maxBytes')])
+    cls.add_method('SetMaxBytes', 
+                   'void', 
+                   [param('uint32_t', 'maxBytes')])
     ## onoff-application.h: void ns3::OnOffApplication::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## onoff-application.h: void ns3::OnOffApplication::StartApplication() [member function]
-    cls.add_method('StartApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## onoff-application.h: void ns3::OnOffApplication::StopApplication() [member function]
-    cls.add_method('StopApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_packet_sink.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_packet_sink.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,10 +1,10 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
     
     ## packet-sink.h: ns3::PacketSink [class]
-    module.add_class('PacketSink', allow_subclassing=True, parent=root_module['ns3::Application'])
+    module.add_class('PacketSink', parent=root_module['ns3::Application'])
     
     ## Register a nested module for the namespace internal
     
@@ -52,15 +52,27 @@
 
 def register_Ns3PacketSink_methods(root_module, cls):
     ## packet-sink.h: static ns3::TypeId ns3::PacketSink::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## packet-sink.h: ns3::PacketSink::PacketSink() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## packet-sink.h: void ns3::PacketSink::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## packet-sink.h: void ns3::PacketSink::StartApplication() [member function]
-    cls.add_method('StartApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## packet-sink.h: void ns3::PacketSink::StopApplication() [member function]
-    cls.add_method('StopApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_point_to_point.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_point_to_point.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,12 +1,12 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
     
     ## point-to-point-channel.h: ns3::PointToPointChannel [class]
-    module.add_class('PointToPointChannel', allow_subclassing=True, parent=root_module['ns3::Channel'])
+    module.add_class('PointToPointChannel', parent=root_module['ns3::Channel'])
     ## point-to-point-net-device.h: ns3::PointToPointNetDevice [class]
-    module.add_class('PointToPointNetDevice', allow_subclassing=True, parent=root_module['ns3::NetDevice'])
+    module.add_class('PointToPointNetDevice', parent=root_module['ns3::NetDevice'])
     
     ## Register a nested module for the namespace internal
     
@@ -55,84 +55,188 @@
 
 def register_Ns3PointToPointChannel_methods(root_module, cls):
     ## point-to-point-channel.h: static ns3::TypeId ns3::PointToPointChannel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## point-to-point-channel.h: ns3::PointToPointChannel::PointToPointChannel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## point-to-point-channel.h: void ns3::PointToPointChannel::Attach(ns3::Ptr<ns3::PointToPointNetDevice> device) [member function]
-    cls.add_method('Attach', 'void', [param('ns3::Ptr< ns3::PointToPointNetDevice >', 'device')])
+    cls.add_method('Attach', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::PointToPointNetDevice >', 'device')])
     ## point-to-point-channel.h: bool ns3::PointToPointChannel::TransmitStart(ns3::Ptr<ns3::Packet> p, ns3::Ptr<ns3::PointToPointNetDevice> src, ns3::Time txTime) [member function]
-    cls.add_method('TransmitStart', 'bool', [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ptr< ns3::PointToPointNetDevice >', 'src'), param('ns3::Time', 'txTime')])
+    cls.add_method('TransmitStart', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ptr< ns3::PointToPointNetDevice >', 'src'), param('ns3::Time', 'txTime')])
     ## point-to-point-channel.h: uint32_t ns3::PointToPointChannel::GetNDevices() const [member function]
-    cls.add_method('GetNDevices', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-channel.h: ns3::Ptr<ns3::PointToPointNetDevice> ns3::PointToPointChannel::GetPointToPointDevice(uint32_t i) const [member function]
-    cls.add_method('GetPointToPointDevice', 'ns3::Ptr< ns3::PointToPointNetDevice >', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetPointToPointDevice', 
+                   'ns3::Ptr< ns3::PointToPointNetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## point-to-point-channel.h: ns3::Ptr<ns3::NetDevice> ns3::PointToPointChannel::GetDevice(uint32_t i) const [member function]
-    cls.add_method('GetDevice', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'i')], is_const=True, is_virtual=True)
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3PointToPointNetDevice_methods(root_module, cls):
     ## point-to-point-net-device.h: static ns3::TypeId ns3::PointToPointNetDevice::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## point-to-point-net-device.h: ns3::PointToPointNetDevice::PointToPointNetDevice() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetDataRate(ns3::DataRate bps) [member function]
-    cls.add_method('SetDataRate', 'void', [param('ns3::DataRate', 'bps')])
+    cls.add_method('SetDataRate', 
+                   'void', 
+                   [param('ns3::DataRate', 'bps')])
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetInterframeGap(ns3::Time t) [member function]
-    cls.add_method('SetInterframeGap', 'void', [param('ns3::Time', 't')])
+    cls.add_method('SetInterframeGap', 
+                   'void', 
+                   [param('ns3::Time', 't')])
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::Attach(ns3::Ptr<ns3::PointToPointChannel> ch) [member function]
-    cls.add_method('Attach', 'bool', [param('ns3::Ptr< ns3::PointToPointChannel >', 'ch')])
+    cls.add_method('Attach', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::PointToPointChannel >', 'ch')])
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetQueue(ns3::Ptr<ns3::Queue> queue) [member function]
-    cls.add_method('SetQueue', 'void', [param('ns3::Ptr< ns3::Queue >', 'queue')])
+    cls.add_method('SetQueue', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Queue >', 'queue')])
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetReceiveErrorModel(ns3::Ptr<ns3::ErrorModel> em) [member function]
-    cls.add_method('SetReceiveErrorModel', 'void', [param('ns3::Ptr< ns3::ErrorModel >', 'em')])
+    cls.add_method('SetReceiveErrorModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::ErrorModel >', 'em')])
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::Receive(ns3::Ptr<ns3::Packet> p) [member function]
-    cls.add_method('Receive', 'void', [param('ns3::Ptr< ns3::Packet >', 'p')])
+    cls.add_method('Receive', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetAddress(ns3::Mac48Address addr) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Mac48Address', 'addr')])
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'addr')])
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetName(std::string const name) [member function]
-    cls.add_method('SetName', 'void', [param('std::string', 'name', is_const=True)], is_virtual=True)
+    cls.add_method('SetName', 
+                   'void', 
+                   [param('std::string', 'name', is_const=True)], 
+                   is_virtual=True)
     ## point-to-point-net-device.h: std::string ns3::PointToPointNetDevice::GetName() const [member function]
-    cls.add_method('GetName', 'std::string', [], is_const=True, is_virtual=True)
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetIfIndex(uint32_t const index) [member function]
-    cls.add_method('SetIfIndex', 'void', [param('uint32_t', 'index', is_const=True)], is_virtual=True)
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t', 'index', is_const=True)], 
+                   is_virtual=True)
     ## point-to-point-net-device.h: uint32_t ns3::PointToPointNetDevice::GetIfIndex() const [member function]
-    cls.add_method('GetIfIndex', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: ns3::Ptr<ns3::Channel> ns3::PointToPointNetDevice::GetChannel() const [member function]
-    cls.add_method('GetChannel', 'ns3::Ptr< ns3::Channel >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: ns3::Address ns3::PointToPointNetDevice::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::SetMtu(uint16_t const mtu) [member function]
-    cls.add_method('SetMtu', 'bool', [param('uint16_t', 'mtu', is_const=True)], is_virtual=True)
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t', 'mtu', is_const=True)], 
+                   is_virtual=True)
     ## point-to-point-net-device.h: uint16_t ns3::PointToPointNetDevice::GetMtu() const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::IsLinkUp() const [member function]
-    cls.add_method('IsLinkUp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
-    cls.add_method('SetLinkChangeCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], is_virtual=True)
+    cls.add_method('SetLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_virtual=True)
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: ns3::Address ns3::PointToPointNetDevice::GetBroadcast() const [member function]
-    cls.add_method('GetBroadcast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::IsMulticast() const [member function]
-    cls.add_method('IsMulticast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: ns3::Address ns3::PointToPointNetDevice::GetMulticast() const [member function]
-    cls.add_method('GetMulticast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: ns3::Address ns3::PointToPointNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
-    cls.add_method('MakeMulticastAddress', 'ns3::Address', [param('ns3::Ipv4Address', 'multicastGroup')], is_const=True, is_virtual=True)
+    cls.add_method('MakeMulticastAddress', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::IsPointToPoint() const [member function]
-    cls.add_method('IsPointToPoint', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
-    cls.add_method('Send', 'bool', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], is_virtual=True)
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
+    ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::SendFrom(ns3::Ptr<ns3::Packet> packet, ns3::Address const & source, ns3::Address const & dest, uint16_t protocolNumber) [member function]
+    cls.add_method('SendFrom', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'source', is_const=True), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
     ## point-to-point-net-device.h: ns3::Ptr<ns3::Node> ns3::PointToPointNetDevice::GetNode() const [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')], is_virtual=True)
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_virtual=True)
     ## point-to-point-net-device.h: bool ns3::PointToPointNetDevice::NeedsArp() const [member function]
-    cls.add_method('NeedsArp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> cb) [member function]
-    cls.add_method('SetReceiveCallback', 'void', [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], is_virtual=True)
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
     ## point-to-point-net-device.h: void ns3::PointToPointNetDevice::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_simulator.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_simulator.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -28,17 +28,17 @@
     ## nstime.h: ns3::TimeChecker [class]
     module.add_class('TimeChecker', parent=root_module['ns3::AttributeChecker'])
     ## scheduler.h: ns3::Scheduler [class]
-    module.add_class('Scheduler', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('Scheduler', parent=root_module['ns3::Object'])
     ## scheduler.h: ns3::Scheduler::EventKey [struct]
     module.add_class('EventKey', outer_class=root_module['ns3::Scheduler'])
     ## nstime.h: ns3::TimeValue [class]
-    module.add_class('TimeValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('TimeValue', parent=root_module['ns3::AttributeValue'])
     ## heap-scheduler.h: ns3::HeapScheduler [class]
-    module.add_class('HeapScheduler', allow_subclassing=True, parent=root_module['ns3::Scheduler'])
+    module.add_class('HeapScheduler', parent=root_module['ns3::Scheduler'])
     ## list-scheduler.h: ns3::ListScheduler [class]
-    module.add_class('ListScheduler', allow_subclassing=True, parent=root_module['ns3::Scheduler'])
+    module.add_class('ListScheduler', parent=root_module['ns3::Scheduler'])
     ## map-scheduler.h: ns3::MapScheduler [class]
-    module.add_class('MapScheduler', allow_subclassing=True, parent=root_module['ns3::Scheduler'])
+    module.add_class('MapScheduler', parent=root_module['ns3::Scheduler'])
     
     ## Register a nested module for the namespace internal
     
@@ -103,217 +103,421 @@
 
 def register_Ns3Timer_methods(root_module, cls):
     ## timer.h: ns3::Timer::Timer() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## timer.h: ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
-    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')], visibility='public')
+    cls.add_constructor([param('ns3::Timer::DestroyPolicy', 'destroyPolicy')])
     ## timer.h: void ns3::Timer::SetDelay(ns3::Time const & delay) [member function]
-    cls.add_method('SetDelay', 'void', [param('ns3::Time&', 'delay', is_const=True)])
+    cls.add_method('SetDelay', 
+                   'void', 
+                   [param('ns3::Time&', 'delay', is_const=True)])
     ## timer.h: ns3::Time ns3::Timer::GetDelay() const [member function]
-    cls.add_method('GetDelay', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetDelay', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## timer.h: ns3::Time ns3::Timer::GetDelayLeft() const [member function]
-    cls.add_method('GetDelayLeft', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetDelayLeft', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## timer.h: void ns3::Timer::Cancel() [member function]
-    cls.add_method('Cancel', 'void', [])
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
     ## timer.h: void ns3::Timer::Remove() [member function]
-    cls.add_method('Remove', 'void', [])
+    cls.add_method('Remove', 
+                   'void', 
+                   [])
     ## timer.h: bool ns3::Timer::IsExpired() const [member function]
-    cls.add_method('IsExpired', 'bool', [], is_const=True)
+    cls.add_method('IsExpired', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## timer.h: bool ns3::Timer::IsRunning() const [member function]
-    cls.add_method('IsRunning', 'bool', [], is_const=True)
+    cls.add_method('IsRunning', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## timer.h: bool ns3::Timer::IsSuspended() const [member function]
-    cls.add_method('IsSuspended', 'bool', [], is_const=True)
+    cls.add_method('IsSuspended', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## timer.h: ns3::Timer::State ns3::Timer::GetState() const [member function]
-    cls.add_method('GetState', 'ns3::Timer::State', [], is_const=True)
+    cls.add_method('GetState', 
+                   'ns3::Timer::State', 
+                   [], 
+                   is_const=True)
     ## timer.h: void ns3::Timer::Schedule() [member function]
-    cls.add_method('Schedule', 'void', [])
+    cls.add_method('Schedule', 
+                   'void', 
+                   [])
     ## timer.h: void ns3::Timer::Schedule(ns3::Time delay) [member function]
-    cls.add_method('Schedule', 'void', [param('ns3::Time', 'delay')])
+    cls.add_method('Schedule', 
+                   'void', 
+                   [param('ns3::Time', 'delay')])
     ## timer.h: void ns3::Timer::Suspend() [member function]
-    cls.add_method('Suspend', 'void', [])
+    cls.add_method('Suspend', 
+                   'void', 
+                   [])
     ## timer.h: void ns3::Timer::Resume() [member function]
-    cls.add_method('Resume', 'void', [])
+    cls.add_method('Resume', 
+                   'void', 
+                   [])
     return
 
 def register_Ns3TimerImpl_methods(root_module, cls):
     ## timer-impl.h: ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
-    cls.add_method('Schedule', 'ns3::EventId', [param('ns3::Time&', 'delay', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Schedule', 
+                   'ns3::EventId', 
+                   [param('ns3::Time&', 'delay', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## timer-impl.h: void ns3::TimerImpl::Invoke() [member function]
-    cls.add_method('Invoke', 'void', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Invoke', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3Time_methods(root_module, cls):
     ## nstime.h: ns3::TimeUnit<1>::TimeUnit(std::string const & s) [constructor]
-    cls.add_constructor([param('std::string&', 's', is_const=True)], visibility='public')
+    cls.add_constructor([param('std::string&', 's', is_const=True)])
     ## nstime.h: ns3::TimeUnit<1>::TimeUnit() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## nstime.h: ns3::TimeUnit<1>::TimeUnit(ns3::TimeUnit<1> const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Time&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Time&', 'o', is_const=True)])
     ## nstime.h: ns3::TimeUnit<1>::TimeUnit(ns3::HighPrecision data) [constructor]
-    cls.add_constructor([param('ns3::HighPrecision', 'data')], visibility='public')
+    cls.add_constructor([param('ns3::HighPrecision', 'data')])
     ## nstime.h: int64_t ns3::TimeUnit<1>::GetFemtoSeconds() const [member function]
-    cls.add_method('GetFemtoSeconds', 'int64_t', [], is_const=True)
+    cls.add_method('GetFemtoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## nstime.h: ns3::HighPrecision const & ns3::TimeUnit<1>::GetHighPrecision() const [member function]
-    cls.add_method('GetHighPrecision', retval('ns3::HighPrecision&', is_const=True), [], is_const=True)
+    cls.add_method('GetHighPrecision', 
+                   retval('ns3::HighPrecision&', is_const=True), 
+                   [], 
+                   is_const=True)
     ## nstime.h: int64_t ns3::TimeUnit<1>::GetMicroSeconds() const [member function]
-    cls.add_method('GetMicroSeconds', 'int64_t', [], is_const=True)
+    cls.add_method('GetMicroSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## nstime.h: int64_t ns3::TimeUnit<1>::GetMilliSeconds() const [member function]
-    cls.add_method('GetMilliSeconds', 'int64_t', [], is_const=True)
+    cls.add_method('GetMilliSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## nstime.h: int64_t ns3::TimeUnit<1>::GetNanoSeconds() const [member function]
-    cls.add_method('GetNanoSeconds', 'int64_t', [], is_const=True)
+    cls.add_method('GetNanoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## nstime.h: int64_t ns3::TimeUnit<1>::GetPicoSeconds() const [member function]
-    cls.add_method('GetPicoSeconds', 'int64_t', [], is_const=True)
+    cls.add_method('GetPicoSeconds', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## nstime.h: double ns3::TimeUnit<1>::GetSeconds() const [member function]
-    cls.add_method('GetSeconds', 'double', [], is_const=True)
+    cls.add_method('GetSeconds', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h: int64_t ns3::TimeUnit<1>::GetTimeStep() const [member function]
-    cls.add_method('GetTimeStep', 'int64_t', [], is_const=True)
+    cls.add_method('GetTimeStep', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<1>::IsNegative() const [member function]
-    cls.add_method('IsNegative', 'bool', [], is_const=True)
+    cls.add_method('IsNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<1>::IsPositive() const [member function]
-    cls.add_method('IsPositive', 'bool', [], is_const=True)
+    cls.add_method('IsPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<1>::IsStrictlyNegative() const [member function]
-    cls.add_method('IsStrictlyNegative', 'bool', [], is_const=True)
+    cls.add_method('IsStrictlyNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<1>::IsStrictlyPositive() const [member function]
-    cls.add_method('IsStrictlyPositive', 'bool', [], is_const=True)
+    cls.add_method('IsStrictlyPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<1>::IsZero() const [member function]
-    cls.add_method('IsZero', 'bool', [], is_const=True)
+    cls.add_method('IsZero', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: ns3::HighPrecision * ns3::TimeUnit<1>::PeekHighPrecision() [member function]
-    cls.add_method('PeekHighPrecision', 'ns3::HighPrecision *', [])
+    cls.add_method('PeekHighPrecision', 
+                   'ns3::HighPrecision *', 
+                   [])
     ## nstime.h: static uint64_t ns3::TimeUnit<1>::UnitsToTimestep(uint64_t unitValue, uint64_t unitFactor) [member function]
-    cls.add_method('UnitsToTimestep', 'uint64_t', [param('uint64_t', 'unitValue'), param('uint64_t', 'unitFactor')], is_static=True)
+    cls.add_method('UnitsToTimestep', 
+                   'uint64_t', 
+                   [param('uint64_t', 'unitValue'), param('uint64_t', 'unitFactor')], 
+                   is_static=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3Scalar_methods(root_module, cls):
     ## nstime.h: ns3::TimeUnit<0>::TimeUnit(double scalar) [constructor]
-    cls.add_constructor([param('double', 'scalar')], visibility='public')
+    cls.add_constructor([param('double', 'scalar')])
     ## nstime.h: ns3::TimeUnit<0>::TimeUnit() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## nstime.h: ns3::TimeUnit<0>::TimeUnit(ns3::TimeUnit<0> const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Scalar&', 'o', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Scalar&', 'o', is_const=True)])
     ## nstime.h: ns3::TimeUnit<0>::TimeUnit(ns3::HighPrecision data) [constructor]
-    cls.add_constructor([param('ns3::HighPrecision', 'data')], visibility='public')
+    cls.add_constructor([param('ns3::HighPrecision', 'data')])
     ## nstime.h: double ns3::TimeUnit<0>::GetDouble() const [member function]
-    cls.add_method('GetDouble', 'double', [], is_const=True)
+    cls.add_method('GetDouble', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## nstime.h: ns3::HighPrecision const & ns3::TimeUnit<0>::GetHighPrecision() const [member function]
-    cls.add_method('GetHighPrecision', retval('ns3::HighPrecision&', is_const=True), [], is_const=True)
+    cls.add_method('GetHighPrecision', 
+                   retval('ns3::HighPrecision&', is_const=True), 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<0>::IsNegative() const [member function]
-    cls.add_method('IsNegative', 'bool', [], is_const=True)
+    cls.add_method('IsNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<0>::IsPositive() const [member function]
-    cls.add_method('IsPositive', 'bool', [], is_const=True)
+    cls.add_method('IsPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<0>::IsStrictlyNegative() const [member function]
-    cls.add_method('IsStrictlyNegative', 'bool', [], is_const=True)
+    cls.add_method('IsStrictlyNegative', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<0>::IsStrictlyPositive() const [member function]
-    cls.add_method('IsStrictlyPositive', 'bool', [], is_const=True)
+    cls.add_method('IsStrictlyPositive', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: bool ns3::TimeUnit<0>::IsZero() const [member function]
-    cls.add_method('IsZero', 'bool', [], is_const=True)
+    cls.add_method('IsZero', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## nstime.h: ns3::HighPrecision * ns3::TimeUnit<0>::PeekHighPrecision() [member function]
-    cls.add_method('PeekHighPrecision', 'ns3::HighPrecision *', [])
+    cls.add_method('PeekHighPrecision', 
+                   'ns3::HighPrecision *', 
+                   [])
     return
 
 def register_Ns3Watchdog_methods(root_module, cls):
     ## watchdog.h: ns3::Watchdog::Watchdog() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## watchdog.h: void ns3::Watchdog::Ping(ns3::Time delay) [member function]
-    cls.add_method('Ping', 'void', [param('ns3::Time', 'delay')])
+    cls.add_method('Ping', 
+                   'void', 
+                   [param('ns3::Time', 'delay')])
     return
 
 def register_Ns3Simulator_methods(root_module, cls):
     ## simulator.h: static void ns3::Simulator::SetScheduler(ns3::Ptr<ns3::Scheduler> scheduler) [member function]
-    cls.add_method('SetScheduler', 'void', [param('ns3::Ptr< ns3::Scheduler >', 'scheduler')], is_static=True)
+    cls.add_method('SetScheduler', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Scheduler >', 'scheduler')], 
+                   is_static=True)
     ## simulator.h: static void ns3::Simulator::EnableLogTo(char const * filename) [member function]
-    cls.add_method('EnableLogTo', 'void', [param('char *', 'filename', transfer_ownership=False, is_const=True)], is_static=True)
+    cls.add_method('EnableLogTo', 
+                   'void', 
+                   [param('char *', 'filename', transfer_ownership=False, is_const=True)], 
+                   is_static=True)
     ## simulator.h: static void ns3::Simulator::Destroy() [member function]
-    cls.add_method('Destroy', 'void', [], is_static=True)
+    cls.add_method('Destroy', 
+                   'void', 
+                   [], 
+                   is_static=True)
     ## simulator.h: static bool ns3::Simulator::IsFinished() [member function]
-    cls.add_method('IsFinished', 'bool', [], is_static=True)
+    cls.add_method('IsFinished', 
+                   'bool', 
+                   [], 
+                   is_static=True)
     ## simulator.h: static ns3::Time ns3::Simulator::Next() [member function]
-    cls.add_method('Next', 'ns3::Time', [], is_static=True)
+    cls.add_method('Next', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
     ## simulator.h: static void ns3::Simulator::Run() [member function]
-    cls.add_method('Run', 'void', [], is_static=True)
+    cls.add_method('Run', 
+                   'void', 
+                   [], 
+                   is_static=True)
     ## simulator.h: static void ns3::Simulator::Stop() [member function]
-    cls.add_method('Stop', 'void', [], is_static=True)
+    cls.add_method('Stop', 
+                   'void', 
+                   [], 
+                   is_static=True)
     ## simulator.h: static void ns3::Simulator::Stop(ns3::Time const & time) [member function]
-    cls.add_method('Stop', 'void', [param('ns3::Time&', 'time', is_const=True)], is_static=True)
+    cls.add_method('Stop', 
+                   'void', 
+                   [param('ns3::Time&', 'time', is_const=True)], 
+                   is_static=True)
     ## simulator.h: static void ns3::Simulator::Remove(ns3::EventId const & id) [member function]
-    cls.add_method('Remove', 'void', [param('ns3::EventId&', 'id', is_const=True)], is_static=True)
+    cls.add_method('Remove', 
+                   'void', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_static=True)
     ## simulator.h: static void ns3::Simulator::Cancel(ns3::EventId const & id) [member function]
-    cls.add_method('Cancel', 'void', [param('ns3::EventId&', 'id', is_const=True)], is_static=True)
+    cls.add_method('Cancel', 
+                   'void', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_static=True)
     ## simulator.h: static bool ns3::Simulator::IsExpired(ns3::EventId const & id) [member function]
-    cls.add_method('IsExpired', 'bool', [param('ns3::EventId&', 'id', is_const=True)], is_static=True)
+    cls.add_method('IsExpired', 
+                   'bool', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_static=True)
     ## simulator.h: static ns3::Time ns3::Simulator::Now() [member function]
-    cls.add_method('Now', 'ns3::Time', [], is_static=True)
+    cls.add_method('Now', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
     ## simulator.h: static ns3::Time ns3::Simulator::GetDelayLeft(ns3::EventId const & id) [member function]
-    cls.add_method('GetDelayLeft', 'ns3::Time', [param('ns3::EventId&', 'id', is_const=True)], is_static=True)
+    cls.add_method('GetDelayLeft', 
+                   'ns3::Time', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_static=True)
     ## simulator.h: static ns3::Time ns3::Simulator::GetMaximumSimulationTime() [member function]
-    cls.add_method('GetMaximumSimulationTime', 'ns3::Time', [], is_static=True)
+    cls.add_method('GetMaximumSimulationTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True)
     return
 
 def register_Ns3EventId_methods(root_module, cls):
     ## event-id.h: ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventId&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::EventId&', 'arg0', is_const=True)])
     ## event-id.h: ns3::EventId::EventId() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## event-id.h: ns3::EventId::EventId(ns3::Ptr<ns3::EventImpl> const & impl, uint64_t ts, uint32_t uid) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl >&', 'impl', is_const=True), param('uint64_t', 'ts'), param('uint32_t', 'uid')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl >&', 'impl', is_const=True), param('uint64_t', 'ts'), param('uint32_t', 'uid')])
     ## event-id.h: void ns3::EventId::Cancel() [member function]
-    cls.add_method('Cancel', 'void', [])
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
     ## event-id.h: bool ns3::EventId::IsExpired() const [member function]
-    cls.add_method('IsExpired', 'bool', [], is_const=True)
+    cls.add_method('IsExpired', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## event-id.h: bool ns3::EventId::IsRunning() const [member function]
-    cls.add_method('IsRunning', 'bool', [], is_const=True)
+    cls.add_method('IsRunning', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## event-id.h: ns3::EventImpl * ns3::EventId::PeekEventImpl() const [member function]
-    cls.add_method('PeekEventImpl', 'ns3::EventImpl *', [], is_const=True)
+    cls.add_method('PeekEventImpl', 
+                   'ns3::EventImpl *', 
+                   [], 
+                   is_const=True)
     ## event-id.h: uint64_t ns3::EventId::GetTs() const [member function]
-    cls.add_method('GetTs', 'uint64_t', [], is_const=True)
+    cls.add_method('GetTs', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
     ## event-id.h: uint32_t ns3::EventId::GetUid() const [member function]
-    cls.add_method('GetUid', 'uint32_t', [], is_const=True)
+    cls.add_method('GetUid', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     return
 
 def register_Ns3EventImpl_methods(root_module, cls):
     ## event-impl.h: ns3::EventImpl::EventImpl() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## event-impl.h: void ns3::EventImpl::Ref() const [member function]
-    cls.add_method('Ref', 'void', [], is_const=True)
+    cls.add_method('Ref', 
+                   'void', 
+                   [], 
+                   is_const=True)
     ## event-impl.h: void ns3::EventImpl::Unref() const [member function]
-    cls.add_method('Unref', 'void', [], is_const=True)
+    cls.add_method('Unref', 
+                   'void', 
+                   [], 
+                   is_const=True)
     ## event-impl.h: void ns3::EventImpl::Invoke() [member function]
-    cls.add_method('Invoke', 'void', [])
+    cls.add_method('Invoke', 
+                   'void', 
+                   [])
     ## event-impl.h: void ns3::EventImpl::Cancel() [member function]
-    cls.add_method('Cancel', 'void', [])
+    cls.add_method('Cancel', 
+                   'void', 
+                   [])
     ## event-impl.h: bool ns3::EventImpl::IsCancelled() [member function]
-    cls.add_method('IsCancelled', 'bool', [])
+    cls.add_method('IsCancelled', 
+                   'bool', 
+                   [])
     ## event-impl.h: void ns3::EventImpl::Notify() [member function]
-    cls.add_method('Notify', 'void', [], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('Notify', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     return
 
 def register_Ns3HighPrecision_methods(root_module, cls):
     ## high-precision-128.h: ns3::HighPrecision::HighPrecision(ns3::HighPrecision const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::HighPrecision&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::HighPrecision&', 'arg0', is_const=True)])
     ## high-precision-128.h: ns3::HighPrecision::HighPrecision() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## high-precision-128.h: ns3::HighPrecision::HighPrecision(int64_t value, bool dummy) [constructor]
-    cls.add_constructor([param('int64_t', 'value'), param('bool', 'dummy')], visibility='public')
+    cls.add_constructor([param('int64_t', 'value'), param('bool', 'dummy')])
     ## high-precision-128.h: ns3::HighPrecision::HighPrecision(double value) [constructor]
-    cls.add_constructor([param('double', 'value')], visibility='public')
+    cls.add_constructor([param('double', 'value')])
     ## high-precision-128.h: static void ns3::HighPrecision::PrintStats() [member function]
-    cls.add_method('PrintStats', 'void', [], is_static=True)
+    cls.add_method('PrintStats', 
+                   'void', 
+                   [], 
+                   is_static=True)
     ## high-precision-128.h: int64_t ns3::HighPrecision::GetInteger() const [member function]
-    cls.add_method('GetInteger', 'int64_t', [], is_const=True)
+    cls.add_method('GetInteger', 
+                   'int64_t', 
+                   [], 
+                   is_const=True)
     ## high-precision-128.h: double ns3::HighPrecision::GetDouble() const [member function]
-    cls.add_method('GetDouble', 'double', [], is_const=True)
+    cls.add_method('GetDouble', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## high-precision-128.h: bool ns3::HighPrecision::Add(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Add', 'bool', [param('ns3::HighPrecision&', 'o', is_const=True)])
+    cls.add_method('Add', 
+                   'bool', 
+                   [param('ns3::HighPrecision&', 'o', is_const=True)])
     ## high-precision-128.h: bool ns3::HighPrecision::Sub(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Sub', 'bool', [param('ns3::HighPrecision&', 'o', is_const=True)])
+    cls.add_method('Sub', 
+                   'bool', 
+                   [param('ns3::HighPrecision&', 'o', is_const=True)])
     ## high-precision-128.h: bool ns3::HighPrecision::Mul(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Mul', 'bool', [param('ns3::HighPrecision&', 'o', is_const=True)])
+    cls.add_method('Mul', 
+                   'bool', 
+                   [param('ns3::HighPrecision&', 'o', is_const=True)])
     ## high-precision-128.h: bool ns3::HighPrecision::Div(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Div', 'bool', [param('ns3::HighPrecision&', 'o', is_const=True)])
+    cls.add_method('Div', 
+                   'bool', 
+                   [param('ns3::HighPrecision&', 'o', is_const=True)])
     ## high-precision-128.h: int ns3::HighPrecision::Compare(ns3::HighPrecision const & o) const [member function]
-    cls.add_method('Compare', 'int', [param('ns3::HighPrecision&', 'o', is_const=True)], is_const=True)
+    cls.add_method('Compare', 
+                   'int', 
+                   [param('ns3::HighPrecision&', 'o', is_const=True)], 
+                   is_const=True)
     ## high-precision-128.h: static ns3::HighPrecision ns3::HighPrecision::Zero() [member function]
-    cls.add_method('Zero', 'ns3::HighPrecision', [], is_static=True)
+    cls.add_method('Zero', 
+                   'ns3::HighPrecision', 
+                   [], 
+                   is_static=True)
     return
 
 def register_Ns3TimeChecker_methods(root_module, cls):
@@ -322,17 +526,35 @@
 
 def register_Ns3Scheduler_methods(root_module, cls):
     ## scheduler.h: static ns3::TypeId ns3::Scheduler::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## scheduler.h: void ns3::Scheduler::Insert(ns3::EventId const & id) [member function]
-    cls.add_method('Insert', 'void', [param('ns3::EventId&', 'id', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     ## scheduler.h: bool ns3::Scheduler::IsEmpty() const [member function]
-    cls.add_method('IsEmpty', 'bool', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## scheduler.h: ns3::EventId ns3::Scheduler::PeekNext() const [member function]
-    cls.add_method('PeekNext', 'ns3::EventId', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('PeekNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## scheduler.h: ns3::EventId ns3::Scheduler::RemoveNext() [member function]
-    cls.add_method('RemoveNext', 'ns3::EventId', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('RemoveNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## scheduler.h: bool ns3::Scheduler::Remove(ns3::EventId const & id) [member function]
-    cls.add_method('Remove', 'bool', [param('ns3::EventId&', 'id', is_const=True)], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('Remove', 
+                   'bool', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
     return
 
@@ -346,92 +568,175 @@
 
 def register_Ns3TimeValue_methods(root_module, cls):
     ## nstime.h: ns3::TimeValue::TimeValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## nstime.h: ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
-    cls.add_constructor([param('ns3::Time&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Time&', 'value', is_const=True)])
     ## nstime.h: void ns3::TimeValue::Set(ns3::Time const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Time&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Time&', 'value', is_const=True)])
     ## nstime.h: ns3::Time ns3::TimeValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Time', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## nstime.h: ns3::Ptr<ns3::AttributeValue> ns3::TimeValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nstime.h: std::string ns3::TimeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## nstime.h: bool ns3::TimeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3HeapScheduler_methods(root_module, cls):
     ## heap-scheduler.h: ns3::HeapScheduler::HeapScheduler() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## heap-scheduler.h: void ns3::HeapScheduler::Insert(ns3::EventId const & id) [member function]
-    cls.add_method('Insert', 'void', [param('ns3::EventId&', 'id', is_const=True)], is_virtual=True)
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_virtual=True)
     ## heap-scheduler.h: bool ns3::HeapScheduler::IsEmpty() const [member function]
-    cls.add_method('IsEmpty', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## heap-scheduler.h: ns3::EventId ns3::HeapScheduler::PeekNext() const [member function]
-    cls.add_method('PeekNext', 'ns3::EventId', [], is_const=True, is_virtual=True)
+    cls.add_method('PeekNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## heap-scheduler.h: ns3::EventId ns3::HeapScheduler::RemoveNext() [member function]
-    cls.add_method('RemoveNext', 'ns3::EventId', [], is_virtual=True)
+    cls.add_method('RemoveNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_virtual=True)
     ## heap-scheduler.h: bool ns3::HeapScheduler::Remove(ns3::EventId const & ev) [member function]
-    cls.add_method('Remove', 'bool', [param('ns3::EventId&', 'ev', is_const=True)], is_virtual=True)
+    cls.add_method('Remove', 
+                   'bool', 
+                   [param('ns3::EventId&', 'ev', is_const=True)], 
+                   is_virtual=True)
     return
 
 def register_Ns3ListScheduler_methods(root_module, cls):
     ## list-scheduler.h: ns3::ListScheduler::ListScheduler() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## list-scheduler.h: void ns3::ListScheduler::Insert(ns3::EventId const & id) [member function]
-    cls.add_method('Insert', 'void', [param('ns3::EventId&', 'id', is_const=True)], is_virtual=True)
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_virtual=True)
     ## list-scheduler.h: bool ns3::ListScheduler::IsEmpty() const [member function]
-    cls.add_method('IsEmpty', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## list-scheduler.h: ns3::EventId ns3::ListScheduler::PeekNext() const [member function]
-    cls.add_method('PeekNext', 'ns3::EventId', [], is_const=True, is_virtual=True)
+    cls.add_method('PeekNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## list-scheduler.h: ns3::EventId ns3::ListScheduler::RemoveNext() [member function]
-    cls.add_method('RemoveNext', 'ns3::EventId', [], is_virtual=True)
+    cls.add_method('RemoveNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_virtual=True)
     ## list-scheduler.h: bool ns3::ListScheduler::Remove(ns3::EventId const & ev) [member function]
-    cls.add_method('Remove', 'bool', [param('ns3::EventId&', 'ev', is_const=True)], is_virtual=True)
+    cls.add_method('Remove', 
+                   'bool', 
+                   [param('ns3::EventId&', 'ev', is_const=True)], 
+                   is_virtual=True)
     return
 
 def register_Ns3MapScheduler_methods(root_module, cls):
     ## map-scheduler.h: ns3::MapScheduler::MapScheduler() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## map-scheduler.h: void ns3::MapScheduler::Insert(ns3::EventId const & id) [member function]
-    cls.add_method('Insert', 'void', [param('ns3::EventId&', 'id', is_const=True)], is_virtual=True)
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::EventId&', 'id', is_const=True)], 
+                   is_virtual=True)
     ## map-scheduler.h: bool ns3::MapScheduler::IsEmpty() const [member function]
-    cls.add_method('IsEmpty', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsEmpty', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## map-scheduler.h: ns3::EventId ns3::MapScheduler::PeekNext() const [member function]
-    cls.add_method('PeekNext', 'ns3::EventId', [], is_const=True, is_virtual=True)
+    cls.add_method('PeekNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## map-scheduler.h: ns3::EventId ns3::MapScheduler::RemoveNext() [member function]
-    cls.add_method('RemoveNext', 'ns3::EventId', [], is_virtual=True)
+    cls.add_method('RemoveNext', 
+                   'ns3::EventId', 
+                   [], 
+                   is_virtual=True)
     ## map-scheduler.h: bool ns3::MapScheduler::Remove(ns3::EventId const & ev) [member function]
-    cls.add_method('Remove', 'bool', [param('ns3::EventId&', 'ev', is_const=True)], is_virtual=True)
+    cls.add_method('Remove', 
+                   'bool', 
+                   [param('ns3::EventId&', 'ev', is_const=True)], 
+                   is_virtual=True)
     return
 
 def register_functions(root_module):
     module = root_module
     ## high-precision.h: extern ns3::HighPrecision ns3::Max(ns3::HighPrecision const & a, ns3::HighPrecision const & b) [free function]
-    module.add_function('Max', 'ns3::HighPrecision', [param('ns3::HighPrecision&', 'a', is_const=True), param('ns3::HighPrecision&', 'b', is_const=True)])
+    module.add_function('Max', 
+                        'ns3::HighPrecision', 
+                        [param('ns3::HighPrecision&', 'a', is_const=True), param('ns3::HighPrecision&', 'b', is_const=True)])
     ## nstime.h: extern ns3::Time ns3::FemtoSeconds(uint64_t fs) [free function]
-    module.add_function('FemtoSeconds', 'ns3::Time', [param('uint64_t', 'fs')])
+    module.add_function('FemtoSeconds', 
+                        'ns3::Time', 
+                        [param('uint64_t', 'fs')])
     ## nstime.h: extern ns3::Time ns3::MicroSeconds(uint64_t us) [free function]
-    module.add_function('MicroSeconds', 'ns3::Time', [param('uint64_t', 'us')])
+    module.add_function('MicroSeconds', 
+                        'ns3::Time', 
+                        [param('uint64_t', 'us')])
     ## simulator.h: extern ns3::Time ns3::Now() [free function]
-    module.add_function('Now', 'ns3::Time', [])
+    module.add_function('Now', 
+                        'ns3::Time', 
+                        [])
     ## nstime.h: extern ns3::Time ns3::MilliSeconds(uint64_t ms) [free function]
-    module.add_function('MilliSeconds', 'ns3::Time', [param('uint64_t', 'ms')])
+    module.add_function('MilliSeconds', 
+                        'ns3::Time', 
+                        [param('uint64_t', 'ms')])
     ## nstime.h: extern ns3::Time ns3::NanoSeconds(uint64_t ns) [free function]
-    module.add_function('NanoSeconds', 'ns3::Time', [param('uint64_t', 'ns')])
+    module.add_function('NanoSeconds', 
+                        'ns3::Time', 
+                        [param('uint64_t', 'ns')])
     ## high-precision.h: extern ns3::HighPrecision ns3::Abs(ns3::HighPrecision const & value) [free function]
-    module.add_function('Abs', 'ns3::HighPrecision', [param('ns3::HighPrecision&', 'value', is_const=True)])
+    module.add_function('Abs', 
+                        'ns3::HighPrecision', 
+                        [param('ns3::HighPrecision&', 'value', is_const=True)])
     ## nstime.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeTimeChecker() [free function]
-    module.add_function('MakeTimeChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeTimeChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## nstime.h: extern ns3::Time ns3::Seconds(double seconds) [free function]
-    module.add_function('Seconds', 'ns3::Time', [param('double', 'seconds')])
+    module.add_function('Seconds', 
+                        'ns3::Time', 
+                        [param('double', 'seconds')])
     ## nstime.h: extern ns3::Time ns3::PicoSeconds(uint64_t ps) [free function]
-    module.add_function('PicoSeconds', 'ns3::Time', [param('uint64_t', 'ps')])
+    module.add_function('PicoSeconds', 
+                        'ns3::Time', 
+                        [param('uint64_t', 'ps')])
     ## high-precision.h: extern ns3::HighPrecision ns3::Min(ns3::HighPrecision const & a, ns3::HighPrecision const & b) [free function]
-    module.add_function('Min', 'ns3::HighPrecision', [param('ns3::HighPrecision&', 'a', is_const=True), param('ns3::HighPrecision&', 'b', is_const=True)])
+    module.add_function('Min', 
+                        'ns3::HighPrecision', 
+                        [param('ns3::HighPrecision&', 'a', is_const=True), param('ns3::HighPrecision&', 'b', is_const=True)])
     ## nstime.h: extern ns3::Time ns3::TimeStep(uint64_t ts) [free function]
-    module.add_function('TimeStep', 'ns3::Time', [param('uint64_t', 'ts')])
+    module.add_function('TimeStep', 
+                        'ns3::Time', 
+                        [param('uint64_t', 'ts')])
     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)
@@ -443,9 +748,13 @@
 
 def register_functions_ns3_TimeStepPrecision(module, root_module):
     ## nstime.h: extern void ns3::TimeStepPrecision::Set(ns3::TimeStepPrecision::precision_t precision) [free function]
-    module.add_function('Set', 'void', [param('ns3::TimeStepPrecision::precision_t', 'precision')])
+    module.add_function('Set', 
+                        'void', 
+                        [param('ns3::TimeStepPrecision::precision_t', 'precision')])
     ## nstime.h: extern ns3::TimeStepPrecision::precision_t ns3::TimeStepPrecision::Get() [free function]
-    module.add_function('Get', 'ns3::TimeStepPrecision::precision_t', [])
+    module.add_function('Get', 
+                        'ns3::TimeStepPrecision::precision_t', 
+                        [])
     return
 
 def register_functions_ns3_Config(module, root_module):
--- a/bindings/python/ns3_module_udp_echo.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_udp_echo.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,12 +1,12 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
     
     ## udp-echo-client.h: ns3::UdpEchoClient [class]
-    module.add_class('UdpEchoClient', allow_subclassing=True, parent=root_module['ns3::Application'])
+    module.add_class('UdpEchoClient', parent=root_module['ns3::Application'])
     ## udp-echo-server.h: ns3::UdpEchoServer [class]
-    module.add_class('UdpEchoServer', allow_subclassing=True, parent=root_module['ns3::Application'])
+    module.add_class('UdpEchoServer', parent=root_module['ns3::Application'])
     
     ## Register a nested module for the namespace internal
     
@@ -55,30 +55,56 @@
 
 def register_Ns3UdpEchoClient_methods(root_module, cls):
     ## udp-echo-client.h: static ns3::TypeId ns3::UdpEchoClient::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## udp-echo-client.h: ns3::UdpEchoClient::UdpEchoClient() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## udp-echo-client.h: void ns3::UdpEchoClient::SetRemote(ns3::Ipv4Address ip, uint16_t port) [member function]
-    cls.add_method('SetRemote', 'void', [param('ns3::Ipv4Address', 'ip'), param('uint16_t', 'port')])
+    cls.add_method('SetRemote', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'ip'), param('uint16_t', 'port')])
     ## udp-echo-client.h: void ns3::UdpEchoClient::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## udp-echo-client.h: void ns3::UdpEchoClient::StartApplication() [member function]
-    cls.add_method('StartApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## udp-echo-client.h: void ns3::UdpEchoClient::StopApplication() [member function]
-    cls.add_method('StopApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3UdpEchoServer_methods(root_module, cls):
     ## udp-echo-server.h: static ns3::TypeId ns3::UdpEchoServer::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## udp-echo-server.h: ns3::UdpEchoServer::UdpEchoServer() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## udp-echo-server.h: void ns3::UdpEchoServer::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## udp-echo-server.h: void ns3::UdpEchoServer::StartApplication() [member function]
-    cls.add_method('StartApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StartApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## udp-echo-server.h: void ns3::UdpEchoServer::StopApplication() [member function]
-    cls.add_method('StopApplication', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('StopApplication', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_wifi.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3_module_wifi.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 def register_types(module):
     root_module = module.get_root()
@@ -16,15 +16,15 @@
     ## supported-rates.h: ns3::SupportedRates [class]
     module.add_class('SupportedRates')
     ## ideal-wifi-manager.h: ns3::IdealWifiRemoteStation [class]
-    module.add_class('IdealWifiRemoteStation', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStation'])
+    module.add_class('IdealWifiRemoteStation', parent=root_module['ns3::WifiRemoteStation'])
     ## wifi-mode.h: ns3::WifiModeChecker [class]
     module.add_class('WifiModeChecker', parent=root_module['ns3::AttributeChecker'])
     ## wifi-mode.h: ns3::WifiModeFactory [class]
     module.add_class('WifiModeFactory')
     ## onoe-wifi-manager.h: ns3::OnoeWifiRemoteStation [class]
-    module.add_class('OnoeWifiRemoteStation', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStation'])
+    module.add_class('OnoeWifiRemoteStation', parent=root_module['ns3::WifiRemoteStation'])
     ## rraa-wifi-manager.h: ns3::RraaWifiRemoteStation [class]
-    module.add_class('RraaWifiRemoteStation', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStation'])
+    module.add_class('RraaWifiRemoteStation', parent=root_module['ns3::WifiRemoteStation'])
     ## ssid.h: ns3::Ssid [class]
     module.add_class('Ssid')
     ## wifi-mode.h: ns3::WifiMode [class]
@@ -32,69 +32,69 @@
     ## wifi-mode.h: ns3::WifiMode::ModulationType [enumeration]
     module.add_enum('ModulationType', ['BPSK', 'QAM'], outer_class=root_module['ns3::WifiMode'])
     ## ssid.h: ns3::SsidValue [class]
-    module.add_class('SsidValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('SsidValue', parent=root_module['ns3::AttributeValue'])
     ## ssid.h: ns3::SsidChecker [class]
     module.add_class('SsidChecker', parent=root_module['ns3::AttributeChecker'])
     ## constant-rate-wifi-manager.h: ns3::ConstantRateWifiRemoteStation [class]
-    module.add_class('ConstantRateWifiRemoteStation', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStation'])
+    module.add_class('ConstantRateWifiRemoteStation', parent=root_module['ns3::WifiRemoteStation'])
     ## propagation-loss-model.h: ns3::PropagationLossModel [class]
-    module.add_class('PropagationLossModel', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('PropagationLossModel', parent=root_module['ns3::Object'])
     ## arf-wifi-manager.h: ns3::ArfWifiRemoteStation [class]
-    module.add_class('ArfWifiRemoteStation', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStation'])
+    module.add_class('ArfWifiRemoteStation', parent=root_module['ns3::WifiRemoteStation'])
     ## wifi-mac.h: ns3::WifiMac [class]
-    module.add_class('WifiMac', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('WifiMac', parent=root_module['ns3::Object'])
     ## nqap-wifi-mac.h: ns3::NqapWifiMac [class]
-    module.add_class('NqapWifiMac', allow_subclassing=True, parent=root_module['ns3::WifiMac'])
+    module.add_class('NqapWifiMac', parent=root_module['ns3::WifiMac'])
     ## amrr-wifi-manager.h: ns3::AmrrWifiRemoteStation [class]
-    module.add_class('AmrrWifiRemoteStation', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStation'])
+    module.add_class('AmrrWifiRemoteStation', parent=root_module['ns3::WifiRemoteStation'])
     ## composite-propagation-loss-model.h: ns3::CompositePropagationLossModel [class]
-    module.add_class('CompositePropagationLossModel', allow_subclassing=True, parent=root_module['ns3::PropagationLossModel'])
+    module.add_class('CompositePropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## propagation-loss-model.h: ns3::FriisPropagationLossModel [class]
-    module.add_class('FriisPropagationLossModel', allow_subclassing=True, parent=root_module['ns3::PropagationLossModel'])
+    module.add_class('FriisPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## wifi-remote-station-manager.h: ns3::WifiRemoteStationManager [class]
-    module.add_class('WifiRemoteStationManager', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('WifiRemoteStationManager', parent=root_module['ns3::Object'])
     ## wifi-mode.h: ns3::WifiModeValue [class]
-    module.add_class('WifiModeValue', allow_subclassing=True, parent=root_module['ns3::AttributeValue'])
+    module.add_class('WifiModeValue', parent=root_module['ns3::AttributeValue'])
     ## onoe-wifi-manager.h: ns3::OnoeWifiManager [class]
-    module.add_class('OnoeWifiManager', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStationManager'])
+    module.add_class('OnoeWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
     ## wifi-phy.h: ns3::WifiPhy [class]
-    module.add_class('WifiPhy', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('WifiPhy', parent=root_module['ns3::Object'])
     ## wifi-phy.h: ns3::WifiPhy::State [enumeration]
     module.add_enum('State', ['SYNC', 'TX', 'CCA_BUSY', 'IDLE'], outer_class=root_module['ns3::WifiPhy'])
     ## wifi-channel.h: ns3::WifiChannel [class]
-    module.add_class('WifiChannel', allow_subclassing=True, parent=root_module['ns3::Channel'])
+    module.add_class('WifiChannel', parent=root_module['ns3::Channel'])
     ## propagation-loss-model.h: ns3::LogDistancePropagationLossModel [class]
-    module.add_class('LogDistancePropagationLossModel', allow_subclassing=True, parent=root_module['ns3::PropagationLossModel'])
+    module.add_class('LogDistancePropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## constant-rate-wifi-manager.h: ns3::ConstantRateWifiManager [class]
-    module.add_class('ConstantRateWifiManager', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStationManager'])
+    module.add_class('ConstantRateWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
     ## aarf-wifi-manager.h: ns3::AarfWifiRemoteStation [class]
-    module.add_class('AarfWifiRemoteStation', allow_subclassing=True, parent=root_module['ns3::ArfWifiRemoteStation'])
+    module.add_class('AarfWifiRemoteStation', parent=root_module['ns3::ArfWifiRemoteStation'])
     ## propagation-delay-model.h: ns3::PropagationDelayModel [class]
-    module.add_class('PropagationDelayModel', allow_subclassing=True, parent=root_module['ns3::Object'])
+    module.add_class('PropagationDelayModel', parent=root_module['ns3::Object'])
     ## adhoc-wifi-mac.h: ns3::AdhocWifiMac [class]
-    module.add_class('AdhocWifiMac', allow_subclassing=True, parent=root_module['ns3::WifiMac'])
+    module.add_class('AdhocWifiMac', parent=root_module['ns3::WifiMac'])
     ## jakes-propagation-loss-model.h: ns3::JakesPropagationLossModel [class]
-    module.add_class('JakesPropagationLossModel', allow_subclassing=True, parent=root_module['ns3::PropagationLossModel'])
+    module.add_class('JakesPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## propagation-delay-model.h: ns3::ConstantSpeedPropagationDelayModel [class]
-    module.add_class('ConstantSpeedPropagationDelayModel', allow_subclassing=True, parent=root_module['ns3::PropagationDelayModel'])
+    module.add_class('ConstantSpeedPropagationDelayModel', parent=root_module['ns3::PropagationDelayModel'])
     ## wifi-net-device.h: ns3::WifiNetDevice [class]
-    module.add_class('WifiNetDevice', allow_subclassing=True, parent=root_module['ns3::NetDevice'])
+    module.add_class('WifiNetDevice', parent=root_module['ns3::NetDevice'])
     ## nqsta-wifi-mac.h: ns3::NqstaWifiMac [class]
-    module.add_class('NqstaWifiMac', allow_subclassing=True, parent=root_module['ns3::WifiMac'])
+    module.add_class('NqstaWifiMac', parent=root_module['ns3::WifiMac'])
     ## propagation-loss-model.h: ns3::RandomPropagationLossModel [class]
-    module.add_class('RandomPropagationLossModel', allow_subclassing=True, parent=root_module['ns3::PropagationLossModel'])
+    module.add_class('RandomPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## propagation-delay-model.h: ns3::RandomPropagationDelayModel [class]
-    module.add_class('RandomPropagationDelayModel', allow_subclassing=True, parent=root_module['ns3::PropagationDelayModel'])
+    module.add_class('RandomPropagationDelayModel', parent=root_module['ns3::PropagationDelayModel'])
     ## amrr-wifi-manager.h: ns3::AmrrWifiManager [class]
-    module.add_class('AmrrWifiManager', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStationManager'])
+    module.add_class('AmrrWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
     ## rraa-wifi-manager.h: ns3::RraaWifiManager [class]
-    module.add_class('RraaWifiManager', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStationManager'])
+    module.add_class('RraaWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
     ## ideal-wifi-manager.h: ns3::IdealWifiManager [class]
-    module.add_class('IdealWifiManager', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStationManager'])
+    module.add_class('IdealWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
     ## arf-wifi-manager.h: ns3::ArfWifiManager [class]
-    module.add_class('ArfWifiManager', allow_subclassing=True, parent=root_module['ns3::WifiRemoteStationManager'])
+    module.add_class('ArfWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
     ## aarf-wifi-manager.h: ns3::AarfWifiManager [class]
-    module.add_class('AarfWifiManager', allow_subclassing=True, parent=root_module['ns3::ArfWifiManager'])
+    module.add_class('AarfWifiManager', parent=root_module['ns3::ArfWifiManager'])
     
     ## Register a nested module for the namespace internal
     
@@ -183,102 +183,222 @@
 
 def register_Ns3WifiRemoteStation_methods(root_module, cls):
     ## wifi-remote-station-manager.h: static ns3::TypeId ns3::WifiRemoteStation::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## wifi-remote-station-manager.h: ns3::WifiRemoteStation::WifiRemoteStation() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::Reset() [member function]
-    cls.add_method('Reset', 'void', [])
+    cls.add_method('Reset', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::AddSupportedMode(ns3::WifiMode mode) [member function]
-    cls.add_method('AddSupportedMode', 'void', [param('ns3::WifiMode', 'mode')])
+    cls.add_method('AddSupportedMode', 
+                   'void', 
+                   [param('ns3::WifiMode', 'mode')])
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::IsBrandNew() const [member function]
-    cls.add_method('IsBrandNew', 'bool', [], is_const=True)
+    cls.add_method('IsBrandNew', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::IsAssociated() const [member function]
-    cls.add_method('IsAssociated', 'bool', [], is_const=True)
+    cls.add_method('IsAssociated', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::IsWaitAssocTxOk() const [member function]
-    cls.add_method('IsWaitAssocTxOk', 'bool', [], is_const=True)
+    cls.add_method('IsWaitAssocTxOk', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::RecordWaitAssocTxOk() [member function]
-    cls.add_method('RecordWaitAssocTxOk', 'void', [])
+    cls.add_method('RecordWaitAssocTxOk', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::RecordGotAssocTxOk() [member function]
-    cls.add_method('RecordGotAssocTxOk', 'void', [])
+    cls.add_method('RecordGotAssocTxOk', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::RecordGotAssocTxFailed() [member function]
-    cls.add_method('RecordGotAssocTxFailed', 'void', [])
+    cls.add_method('RecordGotAssocTxFailed', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::RecordDisassociated() [member function]
-    cls.add_method('RecordDisassociated', 'void', [])
+    cls.add_method('RecordDisassociated', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::PrepareForQueue(ns3::Ptr<const ns3::Packet> packet, uint32_t fullPacketSize) [member function]
-    cls.add_method('PrepareForQueue', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fullPacketSize')])
+    cls.add_method('PrepareForQueue', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fullPacketSize')])
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetDataMode(ns3::Ptr<const ns3::Packet> packet, uint32_t fullPacketSize) [member function]
-    cls.add_method('GetDataMode', 'ns3::WifiMode', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fullPacketSize')])
+    cls.add_method('GetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fullPacketSize')])
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetRtsMode(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('GetRtsMode', 'ns3::WifiMode', [param('ns3::Ptr< const ns3::Packet >', 'packet')])
+    cls.add_method('GetRtsMode', 
+                   'ns3::WifiMode', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::ReportRtsFailed() [member function]
-    cls.add_method('ReportRtsFailed', 'void', [])
+    cls.add_method('ReportRtsFailed', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::ReportDataFailed() [member function]
-    cls.add_method('ReportDataFailed', 'void', [])
+    cls.add_method('ReportDataFailed', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::ReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('ReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')])
+    cls.add_method('ReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::ReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('ReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')])
+    cls.add_method('ReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::ReportFinalRtsFailed() [member function]
-    cls.add_method('ReportFinalRtsFailed', 'void', [])
+    cls.add_method('ReportFinalRtsFailed', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::ReportFinalDataFailed() [member function]
-    cls.add_method('ReportFinalDataFailed', 'void', [])
+    cls.add_method('ReportFinalDataFailed', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::ReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('ReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')])
+    cls.add_method('ReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')])
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedRts(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('NeedRts', 'bool', [param('ns3::Ptr< const ns3::Packet >', 'packet')], is_virtual=True)
+    cls.add_method('NeedRts', 
+                   'bool', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedRtsRetransmission(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('NeedRtsRetransmission', 'bool', [param('ns3::Ptr< const ns3::Packet >', 'packet')], is_virtual=True)
+    cls.add_method('NeedRtsRetransmission', 
+                   'bool', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedDataRetransmission(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('NeedDataRetransmission', 'bool', [param('ns3::Ptr< const ns3::Packet >', 'packet')], is_virtual=True)
+    cls.add_method('NeedDataRetransmission', 
+                   'bool', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::NeedFragmentation(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('NeedFragmentation', 'bool', [param('ns3::Ptr< const ns3::Packet >', 'packet')], is_virtual=True)
+    cls.add_method('NeedFragmentation', 
+                   'bool', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStation::GetNFragments(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('GetNFragments', 'uint32_t', [param('ns3::Ptr< const ns3::Packet >', 'packet')], is_virtual=True)
+    cls.add_method('GetNFragments', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStation::GetFragmentSize(ns3::Ptr<const ns3::Packet> packet, uint32_t fragmentNumber) [member function]
-    cls.add_method('GetFragmentSize', 'uint32_t', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fragmentNumber')], is_virtual=True)
+    cls.add_method('GetFragmentSize', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fragmentNumber')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStation::IsLastFragment(ns3::Ptr<const ns3::Packet> packet, uint32_t fragmentNumber) [member function]
-    cls.add_method('IsLastFragment', 'bool', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fragmentNumber')], is_virtual=True)
+    cls.add_method('IsLastFragment', 
+                   'bool', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('uint32_t', 'fragmentNumber')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetCtsMode(ns3::WifiMode rtsMode) [member function]
-    cls.add_method('GetCtsMode', 'ns3::WifiMode', [param('ns3::WifiMode', 'rtsMode')])
+    cls.add_method('GetCtsMode', 
+                   'ns3::WifiMode', 
+                   [param('ns3::WifiMode', 'rtsMode')])
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetAckMode(ns3::WifiMode dataMode) [member function]
-    cls.add_method('GetAckMode', 'ns3::WifiMode', [param('ns3::WifiMode', 'dataMode')])
+    cls.add_method('GetAckMode', 
+                   'ns3::WifiMode', 
+                   [param('ns3::WifiMode', 'dataMode')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::DoReportRtsFailed() [member function]
-    cls.add_method('DoReportRtsFailed', 'void', [], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsFailed', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::DoReportDataFailed() [member function]
-    cls.add_method('DoReportDataFailed', 'void', [], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataFailed', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::DoReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('DoReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::DoReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('DoReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::DoReportFinalRtsFailed() [member function]
-    cls.add_method('DoReportFinalRtsFailed', 'void', [], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalRtsFailed', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::DoReportFinalDataFailed() [member function]
-    cls.add_method('DoReportFinalDataFailed', 'void', [], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalDataFailed', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('DoReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], 
+                   is_pure_virtual=True, visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStation::GetNSupportedModes() const [member function]
-    cls.add_method('GetNSupportedModes', 'uint32_t', [], is_const=True, visibility='protected')
+    cls.add_method('GetNSupportedModes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, visibility='protected')
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::GetSupportedMode(uint32_t i) const [member function]
-    cls.add_method('GetSupportedMode', 'ns3::WifiMode', [param('uint32_t', 'i')], is_const=True, visibility='protected')
+    cls.add_method('GetSupportedMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, visibility='protected')
     ## wifi-remote-station-manager.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::WifiRemoteStation::GetManager() const [member function]
-    cls.add_method('GetManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::DoGetDataMode(uint32_t size) [member function]
-    cls.add_method('DoGetDataMode', 'ns3::WifiMode', [param('uint32_t', 'size')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'size')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStation::DoGetRtsMode() [member function]
-    cls.add_method('DoGetRtsMode', 'ns3::WifiMode', [], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('DoGetRtsMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3WifiPhyListener_methods(root_module, cls):
     ## wifi-phy.h: void ns3::WifiPhyListener::NotifyRxStart(ns3::Time duration) [member function]
-    cls.add_method('NotifyRxStart', 'void', [param('ns3::Time', 'duration')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('NotifyRxStart', 
+                   'void', 
+                   [param('ns3::Time', 'duration')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h: void ns3::WifiPhyListener::NotifyRxEndOk() [member function]
-    cls.add_method('NotifyRxEndOk', 'void', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('NotifyRxEndOk', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h: void ns3::WifiPhyListener::NotifyRxEndError() [member function]
-    cls.add_method('NotifyRxEndError', 'void', [], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('NotifyRxEndError', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h: void ns3::WifiPhyListener::NotifyTxStart(ns3::Time duration) [member function]
-    cls.add_method('NotifyTxStart', 'void', [param('ns3::Time', 'duration')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('NotifyTxStart', 
+                   'void', 
+                   [param('ns3::Time', 'duration')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-phy.h: void ns3::WifiPhyListener::NotifyCcaBusyStart(ns3::Time duration) [member function]
-    cls.add_method('NotifyCcaBusyStart', 'void', [param('ns3::Time', 'duration')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('NotifyCcaBusyStart', 
+                   'void', 
+                   [param('ns3::Time', 'duration')], 
+                   is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
     return
 
@@ -296,53 +416,107 @@
 
 def register_Ns3SupportedRates_methods(root_module, cls):
     ## supported-rates.h: ns3::SupportedRates::SupportedRates(ns3::SupportedRates const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::SupportedRates&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::SupportedRates&', 'arg0', is_const=True)])
     ## supported-rates.h: ns3::SupportedRates::SupportedRates() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## supported-rates.h: void ns3::SupportedRates::AddSupportedRate(uint32_t bs) [member function]
-    cls.add_method('AddSupportedRate', 'void', [param('uint32_t', 'bs')])
+    cls.add_method('AddSupportedRate', 
+                   'void', 
+                   [param('uint32_t', 'bs')])
     ## supported-rates.h: ns3::Buffer::Iterator ns3::SupportedRates::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 'ns3::Buffer::Iterator', [param('ns3::Buffer::Iterator', 'start')])
+    cls.add_method('Deserialize', 
+                   'ns3::Buffer::Iterator', 
+                   [param('ns3::Buffer::Iterator', 'start')])
     ## supported-rates.h: uint8_t ns3::SupportedRates::GetNRates() const [member function]
-    cls.add_method('GetNRates', 'uint8_t', [], is_const=True)
+    cls.add_method('GetNRates', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## supported-rates.h: uint32_t ns3::SupportedRates::GetRate(uint8_t i) const [member function]
-    cls.add_method('GetRate', 'uint32_t', [param('uint8_t', 'i')], is_const=True)
+    cls.add_method('GetRate', 
+                   'uint32_t', 
+                   [param('uint8_t', 'i')], 
+                   is_const=True)
     ## supported-rates.h: uint32_t ns3::SupportedRates::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## supported-rates.h: bool ns3::SupportedRates::IsBasicRate(uint32_t bs) const [member function]
-    cls.add_method('IsBasicRate', 'bool', [param('uint32_t', 'bs')], is_const=True)
+    cls.add_method('IsBasicRate', 
+                   'bool', 
+                   [param('uint32_t', 'bs')], 
+                   is_const=True)
     ## supported-rates.h: bool ns3::SupportedRates::IsSupportedRate(uint32_t bs) const [member function]
-    cls.add_method('IsSupportedRate', 'bool', [param('uint32_t', 'bs')], is_const=True)
+    cls.add_method('IsSupportedRate', 
+                   'bool', 
+                   [param('uint32_t', 'bs')], 
+                   is_const=True)
     ## supported-rates.h: ns3::Buffer::Iterator ns3::SupportedRates::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 'ns3::Buffer::Iterator', [param('ns3::Buffer::Iterator', 'start')], is_const=True)
+    cls.add_method('Serialize', 
+                   'ns3::Buffer::Iterator', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True)
     ## supported-rates.h: void ns3::SupportedRates::SetBasicRate(uint32_t bs) [member function]
-    cls.add_method('SetBasicRate', 'void', [param('uint32_t', 'bs')])
+    cls.add_method('SetBasicRate', 
+                   'void', 
+                   [param('uint32_t', 'bs')])
     cls.add_output_stream_operator()
     return
 
 def register_Ns3IdealWifiRemoteStation_methods(root_module, cls):
     ## ideal-wifi-manager.h: ns3::IdealWifiRemoteStation::IdealWifiRemoteStation(ns3::Ptr<ns3::IdealWifiManager> stations) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::IdealWifiManager >', 'stations')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::IdealWifiManager >', 'stations')])
     ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('DoReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], 
+                   visibility='protected', is_virtual=True)
     ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportRtsFailed() [member function]
-    cls.add_method('DoReportRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportDataFailed() [member function]
-    cls.add_method('DoReportDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('DoReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], 
+                   visibility='protected', is_virtual=True)
     ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('DoReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], 
+                   visibility='protected', is_virtual=True)
     ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportFinalRtsFailed() [member function]
-    cls.add_method('DoReportFinalRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportFinalDataFailed() [member function]
-    cls.add_method('DoReportFinalDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## ideal-wifi-manager.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::IdealWifiRemoteStation::GetManager() const [member function]
-    cls.add_method('GetManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## ideal-wifi-manager.h: ns3::WifiMode ns3::IdealWifiRemoteStation::DoGetDataMode(uint32_t size) [member function]
-    cls.add_method('DoGetDataMode', 'ns3::WifiMode', [param('uint32_t', 'size')], visibility='private', is_virtual=True)
+    cls.add_method('DoGetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'size')], 
+                   visibility='private', is_virtual=True)
     ## ideal-wifi-manager.h: ns3::WifiMode ns3::IdealWifiRemoteStation::DoGetRtsMode() [member function]
-    cls.add_method('DoGetRtsMode', 'ns3::WifiMode', [], visibility='private', is_virtual=True)
+    cls.add_method('DoGetRtsMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3WifiModeChecker_methods(root_module, cls):
@@ -351,132 +525,265 @@
 
 def register_Ns3WifiModeFactory_methods(root_module, cls):
     ## wifi-mode.h: static ns3::WifiMode ns3::WifiModeFactory::CreateBpsk(std::string uniqueName, bool isMandatory, uint32_t bandwidth, uint32_t dataRate, uint32_t phyRate) [member function]
-    cls.add_method('CreateBpsk', 'ns3::WifiMode', [param('std::string', 'uniqueName'), param('bool', 'isMandatory'), param('uint32_t', 'bandwidth'), param('uint32_t', 'dataRate'), param('uint32_t', 'phyRate')], is_static=True)
+    cls.add_method('CreateBpsk', 
+                   'ns3::WifiMode', 
+                   [param('std::string', 'uniqueName'), param('bool', 'isMandatory'), param('uint32_t', 'bandwidth'), param('uint32_t', 'dataRate'), param('uint32_t', 'phyRate')], 
+                   is_static=True)
     ## wifi-mode.h: static ns3::WifiMode ns3::WifiModeFactory::CreateQam(std::string uniqueName, bool isMandatory, uint32_t bandwidth, uint32_t dataRate, uint32_t phyRate, uint8_t constellationSize) [member function]
-    cls.add_method('CreateQam', 'ns3::WifiMode', [param('std::string', 'uniqueName'), param('bool', 'isMandatory'), param('uint32_t', 'bandwidth'), param('uint32_t', 'dataRate'), param('uint32_t', 'phyRate'), param('uint8_t', 'constellationSize')], is_static=True)
+    cls.add_method('CreateQam', 
+                   'ns3::WifiMode', 
+                   [param('std::string', 'uniqueName'), param('bool', 'isMandatory'), param('uint32_t', 'bandwidth'), param('uint32_t', 'dataRate'), param('uint32_t', 'phyRate'), param('uint8_t', 'constellationSize')], 
+                   is_static=True)
     return
 
 def register_Ns3OnoeWifiRemoteStation_methods(root_module, cls):
     ## onoe-wifi-manager.h: ns3::OnoeWifiRemoteStation::OnoeWifiRemoteStation(ns3::Ptr<ns3::OnoeWifiManager> stations) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::OnoeWifiManager >', 'stations')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::OnoeWifiManager >', 'stations')])
     ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('DoReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], 
+                   visibility='protected', is_virtual=True)
     ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportRtsFailed() [member function]
-    cls.add_method('DoReportRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportDataFailed() [member function]
-    cls.add_method('DoReportDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('DoReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], 
+                   visibility='protected', is_virtual=True)
     ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('DoReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], 
+                   visibility='protected', is_virtual=True)
     ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportFinalRtsFailed() [member function]
-    cls.add_method('DoReportFinalRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportFinalDataFailed() [member function]
-    cls.add_method('DoReportFinalDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## onoe-wifi-manager.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::OnoeWifiRemoteStation::GetManager() const [member function]
-    cls.add_method('GetManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## onoe-wifi-manager.h: ns3::WifiMode ns3::OnoeWifiRemoteStation::DoGetDataMode(uint32_t size) [member function]
-    cls.add_method('DoGetDataMode', 'ns3::WifiMode', [param('uint32_t', 'size')], visibility='private', is_virtual=True)
+    cls.add_method('DoGetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'size')], 
+                   visibility='private', is_virtual=True)
     ## onoe-wifi-manager.h: ns3::WifiMode ns3::OnoeWifiRemoteStation::DoGetRtsMode() [member function]
-    cls.add_method('DoGetRtsMode', 'ns3::WifiMode', [], visibility='private', is_virtual=True)
+    cls.add_method('DoGetRtsMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3RraaWifiRemoteStation_methods(root_module, cls):
     ## rraa-wifi-manager.h: ns3::RraaWifiRemoteStation::RraaWifiRemoteStation(ns3::Ptr<ns3::RraaWifiManager> stations) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::RraaWifiManager >', 'stations')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::RraaWifiManager >', 'stations')])
     ## rraa-wifi-manager.h: bool ns3::RraaWifiRemoteStation::NeedRts(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('NeedRts', 'bool', [param('ns3::Ptr< const ns3::Packet >', 'packet')], is_virtual=True)
+    cls.add_method('NeedRts', 
+                   'bool', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet')], 
+                   is_virtual=True)
     ## rraa-wifi-manager.h: void ns3::RraaWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('DoReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], 
+                   visibility='protected', is_virtual=True)
     ## rraa-wifi-manager.h: void ns3::RraaWifiRemoteStation::DoReportRtsFailed() [member function]
-    cls.add_method('DoReportRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## rraa-wifi-manager.h: void ns3::RraaWifiRemoteStation::DoReportDataFailed() [member function]
-    cls.add_method('DoReportDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## rraa-wifi-manager.h: void ns3::RraaWifiRemoteStation::DoReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('DoReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], 
+                   visibility='protected', is_virtual=True)
     ## rraa-wifi-manager.h: void ns3::RraaWifiRemoteStation::DoReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('DoReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], 
+                   visibility='protected', is_virtual=True)
     ## rraa-wifi-manager.h: void ns3::RraaWifiRemoteStation::DoReportFinalRtsFailed() [member function]
-    cls.add_method('DoReportFinalRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## rraa-wifi-manager.h: void ns3::RraaWifiRemoteStation::DoReportFinalDataFailed() [member function]
-    cls.add_method('DoReportFinalDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## rraa-wifi-manager.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::RraaWifiRemoteStation::GetManager() const [member function]
-    cls.add_method('GetManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## rraa-wifi-manager.h: ns3::WifiMode ns3::RraaWifiRemoteStation::DoGetDataMode(uint32_t size) [member function]
-    cls.add_method('DoGetDataMode', 'ns3::WifiMode', [param('uint32_t', 'size')], visibility='private', is_virtual=True)
+    cls.add_method('DoGetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'size')], 
+                   visibility='private', is_virtual=True)
     ## rraa-wifi-manager.h: ns3::WifiMode ns3::RraaWifiRemoteStation::DoGetRtsMode() [member function]
-    cls.add_method('DoGetRtsMode', 'ns3::WifiMode', [], visibility='private', is_virtual=True)
+    cls.add_method('DoGetRtsMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3Ssid_methods(root_module, cls):
     ## ssid.h: ns3::Ssid::Ssid(ns3::Ssid const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Ssid&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ssid&', 'arg0', is_const=True)])
     ## ssid.h: ns3::Ssid::Ssid() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ssid.h: ns3::Ssid::Ssid(char const * ssid) [constructor]
-    cls.add_constructor([param('char *', 'ssid', transfer_ownership=False, is_const=True)], visibility='public')
+    cls.add_constructor([param('char *', 'ssid', transfer_ownership=False, is_const=True)])
     ## ssid.h: ns3::Ssid::Ssid(char const * ssid, uint8_t length) [constructor]
-    cls.add_constructor([param('char *', 'ssid', transfer_ownership=False, is_const=True), param('uint8_t', 'length')], visibility='public')
+    cls.add_constructor([param('char *', 'ssid', transfer_ownership=False, is_const=True), param('uint8_t', 'length')])
     ## ssid.h: ns3::Buffer::Iterator ns3::Ssid::Deserialize(ns3::Buffer::Iterator i) [member function]
-    cls.add_method('Deserialize', 'ns3::Buffer::Iterator', [param('ns3::Buffer::Iterator', 'i')])
+    cls.add_method('Deserialize', 
+                   'ns3::Buffer::Iterator', 
+                   [param('ns3::Buffer::Iterator', 'i')])
     ## ssid.h: uint32_t ns3::Ssid::GetLength() const [member function]
-    cls.add_method('GetLength', 'uint32_t', [], is_const=True)
+    cls.add_method('GetLength', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ssid.h: uint32_t ns3::Ssid::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## ssid.h: bool ns3::Ssid::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_const=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## ssid.h: bool ns3::Ssid::IsEqual(ns3::Ssid const & o) const [member function]
-    cls.add_method('IsEqual', 'bool', [param('ns3::Ssid&', 'o', is_const=True)], is_const=True)
+    cls.add_method('IsEqual', 
+                   'bool', 
+                   [param('ns3::Ssid&', 'o', is_const=True)], 
+                   is_const=True)
     ## ssid.h: char * ns3::Ssid::PeekString() const [member function]
-    cls.add_method('PeekString', 'char *', [], is_const=True)
+    cls.add_method('PeekString', 
+                   'char *', 
+                   [], 
+                   is_const=True)
     ## ssid.h: ns3::Buffer::Iterator ns3::Ssid::Serialize(ns3::Buffer::Iterator i) const [member function]
-    cls.add_method('Serialize', 'ns3::Buffer::Iterator', [param('ns3::Buffer::Iterator', 'i')], is_const=True)
+    cls.add_method('Serialize', 
+                   'ns3::Buffer::Iterator', 
+                   [param('ns3::Buffer::Iterator', 'i')], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3WifiMode_methods(root_module, cls):
     ## wifi-mode.h: ns3::WifiMode::WifiMode(ns3::WifiMode const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::WifiMode&', 'arg0', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::WifiMode&', 'arg0', is_const=True)])
     ## wifi-mode.h: ns3::WifiMode::WifiMode() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-mode.h: uint32_t ns3::WifiMode::GetBandwidth() const [member function]
-    cls.add_method('GetBandwidth', 'uint32_t', [], is_const=True)
+    cls.add_method('GetBandwidth', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: uint8_t ns3::WifiMode::GetConstellationSize() const [member function]
-    cls.add_method('GetConstellationSize', 'uint8_t', [], is_const=True)
+    cls.add_method('GetConstellationSize', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: uint32_t ns3::WifiMode::GetDataRate() const [member function]
-    cls.add_method('GetDataRate', 'uint32_t', [], is_const=True)
+    cls.add_method('GetDataRate', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: ns3::WifiMode::ModulationType ns3::WifiMode::GetModulationType() const [member function]
-    cls.add_method('GetModulationType', 'ns3::WifiMode::ModulationType', [], is_const=True)
+    cls.add_method('GetModulationType', 
+                   'ns3::WifiMode::ModulationType', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: uint32_t ns3::WifiMode::GetPhyRate() const [member function]
-    cls.add_method('GetPhyRate', 'uint32_t', [], is_const=True)
+    cls.add_method('GetPhyRate', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: uint32_t ns3::WifiMode::GetUid() const [member function]
-    cls.add_method('GetUid', 'uint32_t', [], is_const=True)
+    cls.add_method('GetUid', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: std::string ns3::WifiMode::GetUniqueName() const [member function]
-    cls.add_method('GetUniqueName', 'std::string', [], is_const=True)
+    cls.add_method('GetUniqueName', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: bool ns3::WifiMode::IsMandatory() const [member function]
-    cls.add_method('IsMandatory', 'bool', [], is_const=True)
+    cls.add_method('IsMandatory', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: bool ns3::WifiMode::IsModulationBpsk() const [member function]
-    cls.add_method('IsModulationBpsk', 'bool', [], is_const=True)
+    cls.add_method('IsModulationBpsk', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: bool ns3::WifiMode::IsModulationQam() const [member function]
-    cls.add_method('IsModulationQam', 'bool', [], is_const=True)
+    cls.add_method('IsModulationQam', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     cls.add_output_stream_operator()
     return
 
 def register_Ns3SsidValue_methods(root_module, cls):
     ## ssid.h: ns3::SsidValue::SsidValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ssid.h: ns3::SsidValue::SsidValue(ns3::Ssid const & value) [constructor]
-    cls.add_constructor([param('ns3::Ssid&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::Ssid&', 'value', is_const=True)])
     ## ssid.h: void ns3::SsidValue::Set(ns3::Ssid const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::Ssid&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Ssid&', 'value', is_const=True)])
     ## ssid.h: ns3::Ssid ns3::SsidValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::Ssid', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::Ssid', 
+                   [], 
+                   is_const=True)
     ## ssid.h: ns3::Ptr<ns3::AttributeValue> ns3::SsidValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## ssid.h: std::string ns3::SsidValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## ssid.h: bool ns3::SsidValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3SsidChecker_methods(root_module, cls):
@@ -485,732 +792,1543 @@
 
 def register_Ns3ConstantRateWifiRemoteStation_methods(root_module, cls):
     ## constant-rate-wifi-manager.h: ns3::ConstantRateWifiRemoteStation::ConstantRateWifiRemoteStation(ns3::Ptr<ns3::ConstantRateWifiManager> stations) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::ConstantRateWifiManager >', 'stations')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::ConstantRateWifiManager >', 'stations')])
     ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('DoReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], 
+                   visibility='protected', is_virtual=True)
     ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportRtsFailed() [member function]
-    cls.add_method('DoReportRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportDataFailed() [member function]
-    cls.add_method('DoReportDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('DoReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], 
+                   visibility='protected', is_virtual=True)
     ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('DoReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], 
+                   visibility='protected', is_virtual=True)
     ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportFinalRtsFailed() [member function]
-    cls.add_method('DoReportFinalRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportFinalDataFailed() [member function]
-    cls.add_method('DoReportFinalDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## constant-rate-wifi-manager.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::ConstantRateWifiRemoteStation::GetManager() const [member function]
-    cls.add_method('GetManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## constant-rate-wifi-manager.h: ns3::WifiMode ns3::ConstantRateWifiRemoteStation::DoGetDataMode(uint32_t size) [member function]
-    cls.add_method('DoGetDataMode', 'ns3::WifiMode', [param('uint32_t', 'size')], visibility='private', is_virtual=True)
+    cls.add_method('DoGetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'size')], 
+                   visibility='private', is_virtual=True)
     ## constant-rate-wifi-manager.h: ns3::WifiMode ns3::ConstantRateWifiRemoteStation::DoGetRtsMode() [member function]
-    cls.add_method('DoGetRtsMode', 'ns3::WifiMode', [], visibility='private', is_virtual=True)
+    cls.add_method('DoGetRtsMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3PropagationLossModel_methods(root_module, cls):
     ## propagation-loss-model.h: static ns3::TypeId ns3::PropagationLossModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## propagation-loss-model.h: double ns3::PropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetLoss', 'double', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetLoss', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3ArfWifiRemoteStation_methods(root_module, cls):
     ## arf-wifi-manager.h: ns3::ArfWifiRemoteStation::ArfWifiRemoteStation(ns3::Ptr<ns3::ArfWifiManager> stations, int minTimerTimeout, int minSuccessThreshold) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::ArfWifiManager >', 'stations'), param('int', 'minTimerTimeout'), param('int', 'minSuccessThreshold')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::ArfWifiManager >', 'stations'), param('int', 'minTimerTimeout'), param('int', 'minSuccessThreshold')])
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('DoReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], 
+                   visibility='protected', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportRtsFailed() [member function]
-    cls.add_method('DoReportRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportDataFailed() [member function]
-    cls.add_method('DoReportDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('DoReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], 
+                   visibility='protected', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('DoReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], 
+                   visibility='protected', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportFinalRtsFailed() [member function]
-    cls.add_method('DoReportFinalRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportFinalDataFailed() [member function]
-    cls.add_method('DoReportFinalDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## arf-wifi-manager.h: uint32_t ns3::ArfWifiRemoteStation::GetMinTimerTimeout() [member function]
-    cls.add_method('GetMinTimerTimeout', 'uint32_t', [], visibility='protected')
+    cls.add_method('GetMinTimerTimeout', 
+                   'uint32_t', 
+                   [], 
+                   visibility='protected')
     ## arf-wifi-manager.h: uint32_t ns3::ArfWifiRemoteStation::GetMinSuccessThreshold() [member function]
-    cls.add_method('GetMinSuccessThreshold', 'uint32_t', [], visibility='protected')
+    cls.add_method('GetMinSuccessThreshold', 
+                   'uint32_t', 
+                   [], 
+                   visibility='protected')
     ## arf-wifi-manager.h: uint32_t ns3::ArfWifiRemoteStation::GetTimerTimeout() [member function]
-    cls.add_method('GetTimerTimeout', 'uint32_t', [], visibility='protected')
+    cls.add_method('GetTimerTimeout', 
+                   'uint32_t', 
+                   [], 
+                   visibility='protected')
     ## arf-wifi-manager.h: uint32_t ns3::ArfWifiRemoteStation::GetSuccessThreshold() [member function]
-    cls.add_method('GetSuccessThreshold', 'uint32_t', [], visibility='protected')
+    cls.add_method('GetSuccessThreshold', 
+                   'uint32_t', 
+                   [], 
+                   visibility='protected')
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::SetTimerTimeout(uint32_t timerTimeout) [member function]
-    cls.add_method('SetTimerTimeout', 'void', [param('uint32_t', 'timerTimeout')], visibility='protected')
+    cls.add_method('SetTimerTimeout', 
+                   'void', 
+                   [param('uint32_t', 'timerTimeout')], 
+                   visibility='protected')
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::SetSuccessThreshold(uint32_t successThreshold) [member function]
-    cls.add_method('SetSuccessThreshold', 'void', [param('uint32_t', 'successThreshold')], visibility='protected')
+    cls.add_method('SetSuccessThreshold', 
+                   'void', 
+                   [param('uint32_t', 'successThreshold')], 
+                   visibility='protected')
     ## arf-wifi-manager.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::ArfWifiRemoteStation::GetManager() const [member function]
-    cls.add_method('GetManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## arf-wifi-manager.h: ns3::WifiMode ns3::ArfWifiRemoteStation::DoGetDataMode(uint32_t size) [member function]
-    cls.add_method('DoGetDataMode', 'ns3::WifiMode', [param('uint32_t', 'size')], visibility='private', is_virtual=True)
+    cls.add_method('DoGetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'size')], 
+                   visibility='private', is_virtual=True)
     ## arf-wifi-manager.h: ns3::WifiMode ns3::ArfWifiRemoteStation::DoGetRtsMode() [member function]
-    cls.add_method('DoGetRtsMode', 'ns3::WifiMode', [], visibility='private', is_virtual=True)
+    cls.add_method('DoGetRtsMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::ReportRecoveryFailure() [member function]
-    cls.add_method('ReportRecoveryFailure', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('ReportRecoveryFailure', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::ReportFailure() [member function]
-    cls.add_method('ReportFailure', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('ReportFailure', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3WifiMac_methods(root_module, cls):
     ## wifi-mac.h: static ns3::TypeId ns3::WifiMac::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## wifi-mac.h: void ns3::WifiMac::SetSlot(ns3::Time slotTime) [member function]
-    cls.add_method('SetSlot', 'void', [param('ns3::Time', 'slotTime')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetSlot', 
+                   'void', 
+                   [param('ns3::Time', 'slotTime')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetSifs(ns3::Time sifs) [member function]
-    cls.add_method('SetSifs', 'void', [param('ns3::Time', 'sifs')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetSifs', 
+                   'void', 
+                   [param('ns3::Time', 'sifs')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetEifsNoDifs(ns3::Time eifsNoDifs) [member function]
-    cls.add_method('SetEifsNoDifs', 'void', [param('ns3::Time', 'eifsNoDifs')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetEifsNoDifs', 
+                   'void', 
+                   [param('ns3::Time', 'eifsNoDifs')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetPifs(ns3::Time pifs) [member function]
-    cls.add_method('SetPifs', 'void', [param('ns3::Time', 'pifs')])
+    cls.add_method('SetPifs', 
+                   'void', 
+                   [param('ns3::Time', 'pifs')])
     ## wifi-mac.h: void ns3::WifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function]
-    cls.add_method('SetCtsTimeout', 'void', [param('ns3::Time', 'ctsTimeout')])
+    cls.add_method('SetCtsTimeout', 
+                   'void', 
+                   [param('ns3::Time', 'ctsTimeout')])
     ## wifi-mac.h: void ns3::WifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function]
-    cls.add_method('SetAckTimeout', 'void', [param('ns3::Time', 'ackTimeout')])
+    cls.add_method('SetAckTimeout', 
+                   'void', 
+                   [param('ns3::Time', 'ackTimeout')])
     ## wifi-mac.h: void ns3::WifiMac::SetMaxPropagationDelay(ns3::Time delay) [member function]
-    cls.add_method('SetMaxPropagationDelay', 'void', [param('ns3::Time', 'delay')])
+    cls.add_method('SetMaxPropagationDelay', 
+                   'void', 
+                   [param('ns3::Time', 'delay')])
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetPifs() const [member function]
-    cls.add_method('GetPifs', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetPifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetSifs() const [member function]
-    cls.add_method('GetSifs', 'ns3::Time', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetSifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetSlot() const [member function]
-    cls.add_method('GetSlot', 'ns3::Time', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetSlot', 
+                   'ns3::Time', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetEifsNoDifs() const [member function]
-    cls.add_method('GetEifsNoDifs', 'ns3::Time', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetEifsNoDifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetCtsTimeout() const [member function]
-    cls.add_method('GetCtsTimeout', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetCtsTimeout', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetAckTimeout() const [member function]
-    cls.add_method('GetAckTimeout', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetAckTimeout', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetMsduLifetime() const [member function]
-    cls.add_method('GetMsduLifetime', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetMsduLifetime', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## wifi-mac.h: ns3::Time ns3::WifiMac::GetMaxPropagationDelay() const [member function]
-    cls.add_method('GetMaxPropagationDelay', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetMaxPropagationDelay', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## wifi-mac.h: uint32_t ns3::WifiMac::GetMaxMsduSize() const [member function]
-    cls.add_method('GetMaxMsduSize', 'uint32_t', [], is_const=True)
+    cls.add_method('GetMaxMsduSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-mac.h: ns3::Mac48Address ns3::WifiMac::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Mac48Address', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-mac.h: ns3::Ssid ns3::WifiMac::GetSsid() const [member function]
-    cls.add_method('GetSsid', 'ns3::Ssid', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetSsid', 
+                   'ns3::Ssid', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-mac.h: ns3::Mac48Address ns3::WifiMac::GetBssid() const [member function]
-    cls.add_method('GetBssid', 'ns3::Mac48Address', [], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetBssid', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetAddress(ns3::Mac48Address address) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Mac48Address', 'address')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetSsid(ns3::Ssid ssid) [member function]
-    cls.add_method('SetSsid', 'void', [param('ns3::Ssid', 'ssid')], is_pure_virtual=True, is_virtual=True)
+    cls.add_method('SetSsid', 
+                   'void', 
+                   [param('ns3::Ssid', 'ssid')], 
+                   is_pure_virtual=True, is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::Enqueue(ns3::Ptr<const ns3::Packet> packet, ns3::Mac48Address to) [member function]
-    cls.add_method('Enqueue', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('Enqueue', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetWifiPhy(ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('SetWifiPhy', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetWifiPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetWifiRemoteStationManager(ns3::Ptr<ns3::WifiRemoteStationManager> stationManager) [member function]
-    cls.add_method('SetWifiRemoteStationManager', 'void', [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetWifiRemoteStationManager', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetForwardUpCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty> upCallback) [member function]
-    cls.add_method('SetForwardUpCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetForwardUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetLinkUpCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkUp) [member function]
-    cls.add_method('SetLinkUpCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetLinkUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     ## wifi-mac.h: void ns3::WifiMac::SetLinkDownCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkDown) [member function]
-    cls.add_method('SetLinkDownCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('SetLinkDownCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3NqapWifiMac_methods(root_module, cls):
     ## nqap-wifi-mac.h: static ns3::TypeId ns3::NqapWifiMac::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## nqap-wifi-mac.h: ns3::NqapWifiMac::NqapWifiMac() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetSlot(ns3::Time slotTime) [member function]
-    cls.add_method('SetSlot', 'void', [param('ns3::Time', 'slotTime')], is_virtual=True)
+    cls.add_method('SetSlot', 
+                   'void', 
+                   [param('ns3::Time', 'slotTime')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetSifs(ns3::Time sifs) [member function]
-    cls.add_method('SetSifs', 'void', [param('ns3::Time', 'sifs')], is_virtual=True)
+    cls.add_method('SetSifs', 
+                   'void', 
+                   [param('ns3::Time', 'sifs')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetEifsNoDifs(ns3::Time eifsNoDifs) [member function]
-    cls.add_method('SetEifsNoDifs', 'void', [param('ns3::Time', 'eifsNoDifs')], is_virtual=True)
+    cls.add_method('SetEifsNoDifs', 
+                   'void', 
+                   [param('ns3::Time', 'eifsNoDifs')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetSlot() const [member function]
-    cls.add_method('GetSlot', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSlot', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetSifs() const [member function]
-    cls.add_method('GetSifs', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetEifsNoDifs() const [member function]
-    cls.add_method('GetEifsNoDifs', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetEifsNoDifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetWifiPhy(ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('SetWifiPhy', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], is_virtual=True)
+    cls.add_method('SetWifiPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetWifiRemoteStationManager(ns3::Ptr<ns3::WifiRemoteStationManager> stationManager) [member function]
-    cls.add_method('SetWifiRemoteStationManager', 'void', [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], is_virtual=True)
+    cls.add_method('SetWifiRemoteStationManager', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::Enqueue(ns3::Ptr<const ns3::Packet> packet, ns3::Mac48Address to) [member function]
-    cls.add_method('Enqueue', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], is_virtual=True)
+    cls.add_method('Enqueue', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetForwardUpCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty> upCallback) [member function]
-    cls.add_method('SetForwardUpCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], is_virtual=True)
+    cls.add_method('SetForwardUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetLinkUpCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkUp) [member function]
-    cls.add_method('SetLinkUpCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], is_virtual=True)
+    cls.add_method('SetLinkUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetLinkDownCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkDown) [member function]
-    cls.add_method('SetLinkDownCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], is_virtual=True)
+    cls.add_method('SetLinkDownCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: ns3::Mac48Address ns3::NqapWifiMac::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Mac48Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqap-wifi-mac.h: ns3::Ssid ns3::NqapWifiMac::GetSsid() const [member function]
-    cls.add_method('GetSsid', 'ns3::Ssid', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSsid', 
+                   'ns3::Ssid', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqap-wifi-mac.h: ns3::Mac48Address ns3::NqapWifiMac::GetBssid() const [member function]
-    cls.add_method('GetBssid', 'ns3::Mac48Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetBssid', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetAddress(ns3::Mac48Address address) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Mac48Address', 'address')], is_virtual=True)
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'address')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetSsid(ns3::Ssid ssid) [member function]
-    cls.add_method('SetSsid', 'void', [param('ns3::Ssid', 'ssid')], is_virtual=True)
+    cls.add_method('SetSsid', 
+                   'void', 
+                   [param('ns3::Ssid', 'ssid')], 
+                   is_virtual=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetBeaconInterval(ns3::Time interval) [member function]
-    cls.add_method('SetBeaconInterval', 'void', [param('ns3::Time', 'interval')])
+    cls.add_method('SetBeaconInterval', 
+                   'void', 
+                   [param('ns3::Time', 'interval')])
     ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetBeaconInterval() const [member function]
-    cls.add_method('GetBeaconInterval', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetBeaconInterval', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::StartBeaconing() [member function]
-    cls.add_method('StartBeaconing', 'void', [])
+    cls.add_method('StartBeaconing', 
+                   'void', 
+                   [])
     ## nqap-wifi-mac.h: void ns3::NqapWifiMac::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3AmrrWifiRemoteStation_methods(root_module, cls):
     ## amrr-wifi-manager.h: ns3::AmrrWifiRemoteStation::AmrrWifiRemoteStation(ns3::Ptr<ns3::AmrrWifiManager> stations) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::AmrrWifiManager >', 'stations')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::AmrrWifiManager >', 'stations')])
     ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
-    cls.add_method('DoReportRxOk', 'void', [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRxOk', 
+                   'void', 
+                   [param('double', 'rxSnr'), param('ns3::WifiMode', 'txMode')], 
+                   visibility='protected', is_virtual=True)
     ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportRtsFailed() [member function]
-    cls.add_method('DoReportRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportDataFailed() [member function]
-    cls.add_method('DoReportDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportRtsOk(double ctsSnr, ns3::WifiMode ctsMode, double rtsSnr) [member function]
-    cls.add_method('DoReportRtsOk', 'void', [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportRtsOk', 
+                   'void', 
+                   [param('double', 'ctsSnr'), param('ns3::WifiMode', 'ctsMode'), param('double', 'rtsSnr')], 
+                   visibility='protected', is_virtual=True)
     ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportDataOk(double ackSnr, ns3::WifiMode ackMode, double dataSnr) [member function]
-    cls.add_method('DoReportDataOk', 'void', [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportDataOk', 
+                   'void', 
+                   [param('double', 'ackSnr'), param('ns3::WifiMode', 'ackMode'), param('double', 'dataSnr')], 
+                   visibility='protected', is_virtual=True)
     ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportFinalRtsFailed() [member function]
-    cls.add_method('DoReportFinalRtsFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalRtsFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportFinalDataFailed() [member function]
-    cls.add_method('DoReportFinalDataFailed', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoReportFinalDataFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## amrr-wifi-manager.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::AmrrWifiRemoteStation::GetManager() const [member function]
-    cls.add_method('GetManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_const=True, visibility='private', is_virtual=True)
+    cls.add_method('GetManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
     ## amrr-wifi-manager.h: ns3::WifiMode ns3::AmrrWifiRemoteStation::DoGetDataMode(uint32_t size) [member function]
-    cls.add_method('DoGetDataMode', 'ns3::WifiMode', [param('uint32_t', 'size')], visibility='private', is_virtual=True)
+    cls.add_method('DoGetDataMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'size')], 
+                   visibility='private', is_virtual=True)
     ## amrr-wifi-manager.h: ns3::WifiMode ns3::AmrrWifiRemoteStation::DoGetRtsMode() [member function]
-    cls.add_method('DoGetRtsMode', 'ns3::WifiMode', [], visibility='private', is_virtual=True)
+    cls.add_method('DoGetRtsMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3CompositePropagationLossModel_methods(root_module, cls):
     ## composite-propagation-loss-model.h: static ns3::TypeId ns3::CompositePropagationLossModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## composite-propagation-loss-model.h: ns3::CompositePropagationLossModel::CompositePropagationLossModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## composite-propagation-loss-model.h: double ns3::CompositePropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetLoss', 'double', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_const=True, is_virtual=True)
+    cls.add_method('GetLoss', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_const=True, is_virtual=True)
     ## composite-propagation-loss-model.h: void ns3::CompositePropagationLossModel::AddPropagationLossModel(ns3::Ptr<ns3::PropagationLossModel> pl) [member function]
-    cls.add_method('AddPropagationLossModel', 'void', [param('ns3::Ptr< ns3::PropagationLossModel >', 'pl')])
+    cls.add_method('AddPropagationLossModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::PropagationLossModel >', 'pl')])
     ## composite-propagation-loss-model.h: void ns3::CompositePropagationLossModel::AddDefaults() [member function]
-    cls.add_method('AddDefaults', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('AddDefaults', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     return
 
 def register_Ns3FriisPropagationLossModel_methods(root_module, cls):
     ## propagation-loss-model.h: static ns3::TypeId ns3::FriisPropagationLossModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## propagation-loss-model.h: ns3::FriisPropagationLossModel::FriisPropagationLossModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## propagation-loss-model.h: void ns3::FriisPropagationLossModel::SetLambda(double frequency, double speed) [member function]
-    cls.add_method('SetLambda', 'void', [param('double', 'frequency'), param('double', 'speed')])
+    cls.add_method('SetLambda', 
+                   'void', 
+                   [param('double', 'frequency'), param('double', 'speed')])
     ## propagation-loss-model.h: void ns3::FriisPropagationLossModel::SetLambda(double lambda) [member function]
-    cls.add_method('SetLambda', 'void', [param('double', 'lambda')])
+    cls.add_method('SetLambda', 
+                   'void', 
+                   [param('double', 'lambda')])
     ## propagation-loss-model.h: void ns3::FriisPropagationLossModel::SetSystemLoss(double systemLoss) [member function]
-    cls.add_method('SetSystemLoss', 'void', [param('double', 'systemLoss')])
+    cls.add_method('SetSystemLoss', 
+                   'void', 
+                   [param('double', 'systemLoss')])
     ## propagation-loss-model.h: void ns3::FriisPropagationLossModel::SetMinDistance(double minDistance) [member function]
-    cls.add_method('SetMinDistance', 'void', [param('double', 'minDistance')])
+    cls.add_method('SetMinDistance', 
+                   'void', 
+                   [param('double', 'minDistance')])
     ## propagation-loss-model.h: double ns3::FriisPropagationLossModel::GetMinDistance() const [member function]
-    cls.add_method('GetMinDistance', 'double', [], is_const=True)
+    cls.add_method('GetMinDistance', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## propagation-loss-model.h: double ns3::FriisPropagationLossModel::GetLambda() const [member function]
-    cls.add_method('GetLambda', 'double', [], is_const=True)
+    cls.add_method('GetLambda', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## propagation-loss-model.h: double ns3::FriisPropagationLossModel::GetSystemLoss() const [member function]
-    cls.add_method('GetSystemLoss', 'double', [], is_const=True)
+    cls.add_method('GetSystemLoss', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## propagation-loss-model.h: double ns3::FriisPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetLoss', 'double', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_const=True, is_virtual=True)
+    cls.add_method('GetLoss', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3WifiRemoteStationManager_methods(root_module, cls):
     ## wifi-remote-station-manager.h: static ns3::TypeId ns3::WifiRemoteStationManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## wifi-remote-station-manager.h: ns3::WifiRemoteStationManager::WifiRemoteStationManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::SetupPhy(ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('SetupPhy', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], is_virtual=True)
+    cls.add_method('SetupPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], 
+                   is_virtual=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStationManager::GetMaxSsrc() const [member function]
-    cls.add_method('GetMaxSsrc', 'uint32_t', [], is_const=True)
+    cls.add_method('GetMaxSsrc', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStationManager::GetMaxSlrc() const [member function]
-    cls.add_method('GetMaxSlrc', 'uint32_t', [], is_const=True)
+    cls.add_method('GetMaxSlrc', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStationManager::GetRtsCtsThreshold() const [member function]
-    cls.add_method('GetRtsCtsThreshold', 'uint32_t', [], is_const=True)
+    cls.add_method('GetRtsCtsThreshold', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStationManager::GetFragmentationThreshold() const [member function]
-    cls.add_method('GetFragmentationThreshold', 'uint32_t', [], is_const=True)
+    cls.add_method('GetFragmentationThreshold', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::SetMaxSsrc(uint32_t maxSsrc) [member function]
-    cls.add_method('SetMaxSsrc', 'void', [param('uint32_t', 'maxSsrc')])
+    cls.add_method('SetMaxSsrc', 
+                   'void', 
+                   [param('uint32_t', 'maxSsrc')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::SetMaxSlrc(uint32_t maxSlrc) [member function]
-    cls.add_method('SetMaxSlrc', 'void', [param('uint32_t', 'maxSlrc')])
+    cls.add_method('SetMaxSlrc', 
+                   'void', 
+                   [param('uint32_t', 'maxSlrc')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::SetRtsCtsThreshold(uint32_t threshold) [member function]
-    cls.add_method('SetRtsCtsThreshold', 'void', [param('uint32_t', 'threshold')])
+    cls.add_method('SetRtsCtsThreshold', 
+                   'void', 
+                   [param('uint32_t', 'threshold')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::SetFragmentationThreshold(uint32_t threshold) [member function]
-    cls.add_method('SetFragmentationThreshold', 'void', [param('uint32_t', 'threshold')])
+    cls.add_method('SetFragmentationThreshold', 
+                   'void', 
+                   [param('uint32_t', 'threshold')])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::Reset() [member function]
-    cls.add_method('Reset', 'void', [])
+    cls.add_method('Reset', 
+                   'void', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::AddBasicMode(ns3::WifiMode mode) [member function]
-    cls.add_method('AddBasicMode', 'void', [param('ns3::WifiMode', 'mode')])
+    cls.add_method('AddBasicMode', 
+                   'void', 
+                   [param('ns3::WifiMode', 'mode')])
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStationManager::GetDefaultMode() const [member function]
-    cls.add_method('GetDefaultMode', 'ns3::WifiMode', [], is_const=True)
+    cls.add_method('GetDefaultMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: uint32_t ns3::WifiRemoteStationManager::GetNBasicModes() const [member function]
-    cls.add_method('GetNBasicModes', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNBasicModes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: ns3::WifiMode ns3::WifiRemoteStationManager::GetBasicMode(uint32_t i) const [member function]
-    cls.add_method('GetBasicMode', 'ns3::WifiMode', [param('uint32_t', 'i')], is_const=True)
+    cls.add_method('GetBasicMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: __gnu_cxx::__normal_iterator<const ns3::WifiMode*,std::vector<ns3::WifiMode, std::allocator<ns3::WifiMode> > > ns3::WifiRemoteStationManager::BeginBasicModes() const [member function]
-    cls.add_method('BeginBasicModes', '__gnu_cxx::__normal_iterator< const ns3::WifiMode*, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', [], is_const=True)
+    cls.add_method('BeginBasicModes', 
+                   '__gnu_cxx::__normal_iterator< const ns3::WifiMode*, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: __gnu_cxx::__normal_iterator<const ns3::WifiMode*,std::vector<ns3::WifiMode, std::allocator<ns3::WifiMode> > > ns3::WifiRemoteStationManager::EndBasicModes() const [member function]
-    cls.add_method('EndBasicModes', '__gnu_cxx::__normal_iterator< const ns3::WifiMode*, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', [], is_const=True)
+    cls.add_method('EndBasicModes', 
+                   '__gnu_cxx::__normal_iterator< const ns3::WifiMode*, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: bool ns3::WifiRemoteStationManager::IsLowLatency() const [member function]
-    cls.add_method('IsLowLatency', 'bool', [], is_const=True)
+    cls.add_method('IsLowLatency', 
+                   'bool', 
+                   [], 
+                   is_const=True)
     ## wifi-remote-station-manager.h: ns3::WifiRemoteStation * ns3::WifiRemoteStationManager::Lookup(ns3::Mac48Address address) [member function]
-    cls.add_method('Lookup', 'ns3::WifiRemoteStation *', [param('ns3::Mac48Address', 'address')])
+    cls.add_method('Lookup', 
+                   'ns3::WifiRemoteStation *', 
+                   [param('ns3::Mac48Address', 'address')])
     ## wifi-remote-station-manager.h: ns3::WifiRemoteStation * ns3::WifiRemoteStationManager::LookupNonUnicast() [member function]
-    cls.add_method('LookupNonUnicast', 'ns3::WifiRemoteStation *', [])
+    cls.add_method('LookupNonUnicast', 
+                   'ns3::WifiRemoteStation *', 
+                   [])
     ## wifi-remote-station-manager.h: void ns3::WifiRemoteStationManager::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='protected', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
     ## wifi-remote-station-manager.h: ns3::WifiRemoteStation * ns3::WifiRemoteStationManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
     return
 
 def register_Ns3WifiModeValue_methods(root_module, cls):
     ## wifi-mode.h: ns3::WifiModeValue::WifiModeValue() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-mode.h: ns3::WifiModeValue::WifiModeValue(ns3::WifiMode const & value) [constructor]
-    cls.add_constructor([param('ns3::WifiMode&', 'value', is_const=True)], visibility='public')
+    cls.add_constructor([param('ns3::WifiMode&', 'value', is_const=True)])
     ## wifi-mode.h: void ns3::WifiModeValue::Set(ns3::WifiMode const & value) [member function]
-    cls.add_method('Set', 'void', [param('ns3::WifiMode&', 'value', is_const=True)])
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::WifiMode&', 'value', is_const=True)])
     ## wifi-mode.h: ns3::WifiMode ns3::WifiModeValue::Get() const [member function]
-    cls.add_method('Get', 'ns3::WifiMode', [], is_const=True)
+    cls.add_method('Get', 
+                   'ns3::WifiMode', 
+                   [], 
+                   is_const=True)
     ## wifi-mode.h: ns3::Ptr<ns3::AttributeValue> ns3::WifiModeValue::Copy() const [member function]
-    cls.add_method('Copy', 'ns3::Ptr< ns3::AttributeValue >', [], is_const=True, is_virtual=True)
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-mode.h: std::string ns3::WifiModeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 'std::string', [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_const=True, is_virtual=True)
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
     ## wifi-mode.h: bool ns3::WifiModeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 'bool', [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], is_virtual=True)
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
     return
 
 def register_Ns3OnoeWifiManager_methods(root_module, cls):
     ## onoe-wifi-manager.h: static ns3::TypeId ns3::OnoeWifiManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## onoe-wifi-manager.h: ns3::OnoeWifiManager::OnoeWifiManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## onoe-wifi-manager.h: ns3::WifiRemoteStation * ns3::OnoeWifiManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3WifiPhy_methods(root_module, cls):
     ## wifi-phy.h: static ns3::TypeId ns3::WifiPhy::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## wifi-phy.h: ns3::WifiPhy::WifiPhy() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-phy.h: void ns3::WifiPhy::SetStandard(ns3::WifiPhyStandard standard) [member function]
-    cls.add_method('SetStandard', 'void', [param('ns3::WifiPhyStandard', 'standard')])
+    cls.add_method('SetStandard', 
+                   'void', 
+                   [param('ns3::WifiPhyStandard', 'standard')])
     ## wifi-phy.h: void ns3::WifiPhy::SetRxNoise(double ratio) [member function]
-    cls.add_method('SetRxNoise', 'void', [param('double', 'ratio')])
+    cls.add_method('SetRxNoise', 
+                   'void', 
+                   [param('double', 'ratio')])
     ## wifi-phy.h: void ns3::WifiPhy::SetTxPowerStart(double start) [member function]
-    cls.add_method('SetTxPowerStart', 'void', [param('double', 'start')])
+    cls.add_method('SetTxPowerStart', 
+                   'void', 
+                   [param('double', 'start')])
     ## wifi-phy.h: void ns3::WifiPhy::SetTxPowerEnd(double end) [member function]
-    cls.add_method('SetTxPowerEnd', 'void', [param('double', 'end')])
+    cls.add_method('SetTxPowerEnd', 
+                   'void', 
+                   [param('double', 'end')])
     ## wifi-phy.h: void ns3::WifiPhy::SetNTxPower(uint32_t n) [member function]
-    cls.add_method('SetNTxPower', 'void', [param('uint32_t', 'n')])
+    cls.add_method('SetNTxPower', 
+                   'void', 
+                   [param('uint32_t', 'n')])
     ## wifi-phy.h: void ns3::WifiPhy::SetTxGain(double gain) [member function]
-    cls.add_method('SetTxGain', 'void', [param('double', 'gain')])
+    cls.add_method('SetTxGain', 
+                   'void', 
+                   [param('double', 'gain')])
     ## wifi-phy.h: void ns3::WifiPhy::SetRxGain(double gain) [member function]
-    cls.add_method('SetRxGain', 'void', [param('double', 'gain')])
+    cls.add_method('SetRxGain', 
+                   'void', 
+                   [param('double', 'gain')])
     ## wifi-phy.h: void ns3::WifiPhy::SetEdThreshold(double threshold) [member function]
-    cls.add_method('SetEdThreshold', 'void', [param('double', 'threshold')])
+    cls.add_method('SetEdThreshold', 
+                   'void', 
+                   [param('double', 'threshold')])
     ## wifi-phy.h: double ns3::WifiPhy::GetRxNoise() const [member function]
-    cls.add_method('GetRxNoise', 'double', [], is_const=True)
+    cls.add_method('GetRxNoise', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: double ns3::WifiPhy::GetTxPowerStart() const [member function]
-    cls.add_method('GetTxPowerStart', 'double', [], is_const=True)
+    cls.add_method('GetTxPowerStart', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: double ns3::WifiPhy::GetTxPowerEnd() const [member function]
-    cls.add_method('GetTxPowerEnd', 'double', [], is_const=True)
+    cls.add_method('GetTxPowerEnd', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: uint32_t ns3::WifiPhy::GetNTxPower() const [member function]
-    cls.add_method('GetNTxPower', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNTxPower', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: double ns3::WifiPhy::GetTxGain() const [member function]
-    cls.add_method('GetTxGain', 'double', [], is_const=True)
+    cls.add_method('GetTxGain', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: double ns3::WifiPhy::GetRxGain() const [member function]
-    cls.add_method('GetRxGain', 'double', [], is_const=True)
+    cls.add_method('GetRxGain', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: double ns3::WifiPhy::GetEdThreshold() const [member function]
-    cls.add_method('GetEdThreshold', 'double', [], is_const=True)
+    cls.add_method('GetEdThreshold', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: void ns3::WifiPhy::SetChannel(ns3::Ptr<ns3::WifiChannel> channel) [member function]
-    cls.add_method('SetChannel', 'void', [param('ns3::Ptr< ns3::WifiChannel >', 'channel')])
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiChannel >', 'channel')])
     ## wifi-phy.h: void ns3::WifiPhy::SetReceiveOkCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty> callback) [member function]
-    cls.add_method('SetReceiveOkCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty >', 'callback')])
+    cls.add_method('SetReceiveOkCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::WifiMode, ns3::WifiPreamble, ns3::empty, ns3::empty >', 'callback')])
     ## wifi-phy.h: void ns3::WifiPhy::SetReceiveErrorCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
-    cls.add_method('SetReceiveErrorCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
+    cls.add_method('SetReceiveErrorCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
     ## wifi-phy.h: void ns3::WifiPhy::SendPacket(ns3::Ptr<const ns3::Packet> packet, ns3::WifiMode mode, ns3::WifiPreamble preamble, uint8_t txPowerLevel) [member function]
-    cls.add_method('SendPacket', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('uint8_t', 'txPowerLevel')])
+    cls.add_method('SendPacket', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble'), param('uint8_t', 'txPowerLevel')])
     ## wifi-phy.h: void ns3::WifiPhy::RegisterListener(ns3::WifiPhyListener * listener) [member function]
-    cls.add_method('RegisterListener', 'void', [param('ns3::WifiPhyListener *', 'listener')])
+    cls.add_method('RegisterListener', 
+                   'void', 
+                   [param('ns3::WifiPhyListener *', 'listener')])
     ## wifi-phy.h: bool ns3::WifiPhy::IsStateCcaBusy() [member function]
-    cls.add_method('IsStateCcaBusy', 'bool', [])
+    cls.add_method('IsStateCcaBusy', 
+                   'bool', 
+                   [])
     ## wifi-phy.h: bool ns3::WifiPhy::IsStateIdle() [member function]
-    cls.add_method('IsStateIdle', 'bool', [])
+    cls.add_method('IsStateIdle', 
+                   'bool', 
+                   [])
     ## wifi-phy.h: bool ns3::WifiPhy::IsStateBusy() [member function]
-    cls.add_method('IsStateBusy', 'bool', [])
+    cls.add_method('IsStateBusy', 
+                   'bool', 
+                   [])
     ## wifi-phy.h: bool ns3::WifiPhy::IsStateSync() [member function]
-    cls.add_method('IsStateSync', 'bool', [])
+    cls.add_method('IsStateSync', 
+                   'bool', 
+                   [])
     ## wifi-phy.h: bool ns3::WifiPhy::IsStateTx() [member function]
-    cls.add_method('IsStateTx', 'bool', [])
+    cls.add_method('IsStateTx', 
+                   'bool', 
+                   [])
     ## wifi-phy.h: ns3::Time ns3::WifiPhy::GetStateDuration() [member function]
-    cls.add_method('GetStateDuration', 'ns3::Time', [])
+    cls.add_method('GetStateDuration', 
+                   'ns3::Time', 
+                   [])
     ## wifi-phy.h: ns3::Time ns3::WifiPhy::GetDelayUntilIdle() [member function]
-    cls.add_method('GetDelayUntilIdle', 'ns3::Time', [])
+    cls.add_method('GetDelayUntilIdle', 
+                   'ns3::Time', 
+                   [])
     ## wifi-phy.h: ns3::Time ns3::WifiPhy::GetLastRxStartTime() const [member function]
-    cls.add_method('GetLastRxStartTime', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetLastRxStartTime', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: ns3::Time ns3::WifiPhy::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) const [member function]
-    cls.add_method('CalculateTxDuration', 'ns3::Time', [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')], is_const=True)
+    cls.add_method('CalculateTxDuration', 
+                   'ns3::Time', 
+                   [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')], 
+                   is_const=True)
     ## wifi-phy.h: uint32_t ns3::WifiPhy::GetNModes() const [member function]
-    cls.add_method('GetNModes', 'uint32_t', [], is_const=True)
+    cls.add_method('GetNModes', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: ns3::WifiMode ns3::WifiPhy::GetMode(uint32_t mode) const [member function]
-    cls.add_method('GetMode', 'ns3::WifiMode', [param('uint32_t', 'mode')], is_const=True)
+    cls.add_method('GetMode', 
+                   'ns3::WifiMode', 
+                   [param('uint32_t', 'mode')], 
+                   is_const=True)
     ## wifi-phy.h: double ns3::WifiPhy::CalculateSnr(ns3::WifiMode txMode, double ber) const [member function]
-    cls.add_method('CalculateSnr', 'double', [param('ns3::WifiMode', 'txMode'), param('double', 'ber')], is_const=True)
+    cls.add_method('CalculateSnr', 
+                   'double', 
+                   [param('ns3::WifiMode', 'txMode'), param('double', 'ber')], 
+                   is_const=True)
     ## wifi-phy.h: void ns3::WifiPhy::StartReceivePacket(ns3::Ptr<ns3::Packet> packet, double rxPowerDbm, ns3::WifiMode mode, ns3::WifiPreamble preamble) [member function]
-    cls.add_method('StartReceivePacket', 'void', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('double', 'rxPowerDbm'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble')])
+    cls.add_method('StartReceivePacket', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('double', 'rxPowerDbm'), param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble')])
     ## wifi-phy.h: ns3::Ptr<ns3::WifiChannel> ns3::WifiPhy::GetChannel() const [member function]
-    cls.add_method('GetChannel', 'ns3::Ptr< ns3::WifiChannel >', [], is_const=True)
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::WifiChannel >', 
+                   [], 
+                   is_const=True)
     ## wifi-phy.h: void ns3::WifiPhy::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3WifiChannel_methods(root_module, cls):
     ## wifi-channel.h: static ns3::TypeId ns3::WifiChannel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## wifi-channel.h: ns3::WifiChannel::WifiChannel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-channel.h: uint32_t ns3::WifiChannel::GetNDevices() const [member function]
-    cls.add_method('GetNDevices', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNDevices', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-channel.h: ns3::Ptr<ns3::NetDevice> ns3::WifiChannel::GetDevice(uint32_t i) const [member function]
-    cls.add_method('GetDevice', 'ns3::Ptr< ns3::NetDevice >', [param('uint32_t', 'i')], is_const=True, is_virtual=True)
+    cls.add_method('GetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
     ## wifi-channel.h: void ns3::WifiChannel::SetPropagationLossModel(ns3::Ptr<ns3::PropagationLossModel> loss) [member function]
-    cls.add_method('SetPropagationLossModel', 'void', [param('ns3::Ptr< ns3::PropagationLossModel >', 'loss')])
+    cls.add_method('SetPropagationLossModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::PropagationLossModel >', 'loss')])
     ## wifi-channel.h: void ns3::WifiChannel::SetPropagationDelayModel(ns3::Ptr<ns3::PropagationDelayModel> delay) [member function]
-    cls.add_method('SetPropagationDelayModel', 'void', [param('ns3::Ptr< ns3::PropagationDelayModel >', 'delay')])
+    cls.add_method('SetPropagationDelayModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::PropagationDelayModel >', 'delay')])
     ## wifi-channel.h: void ns3::WifiChannel::Add(ns3::Ptr<ns3::NetDevice> device, ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('Add', 'void', [param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::WifiPhy >', 'phy')])
+    cls.add_method('Add', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device'), param('ns3::Ptr< ns3::WifiPhy >', 'phy')])
     ## wifi-channel.h: void ns3::WifiChannel::Send(ns3::Ptr<ns3::WifiPhy> sender, ns3::Ptr<const ns3::Packet> packet, double txPowerDbm, ns3::WifiMode wifiMode, ns3::WifiPreamble preamble) const [member function]
-    cls.add_method('Send', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'sender'), param('ns3::Ptr< const ns3::Packet >', 'packet'), param('double', 'txPowerDbm'), param('ns3::WifiMode', 'wifiMode'), param('ns3::WifiPreamble', 'preamble')], is_const=True)
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'sender'), param('ns3::Ptr< const ns3::Packet >', 'packet'), param('double', 'txPowerDbm'), param('ns3::WifiMode', 'wifiMode'), param('ns3::WifiPreamble', 'preamble')], 
+                   is_const=True)
     return
 
 def register_Ns3LogDistancePropagationLossModel_methods(root_module, cls):
     ## propagation-loss-model.h: static ns3::TypeId ns3::LogDistancePropagationLossModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## propagation-loss-model.h: ns3::LogDistancePropagationLossModel::LogDistancePropagationLossModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## propagation-loss-model.h: void ns3::LogDistancePropagationLossModel::SetPathLossExponent(double n) [member function]
-    cls.add_method('SetPathLossExponent', 'void', [param('double', 'n')])
+    cls.add_method('SetPathLossExponent', 
+                   'void', 
+                   [param('double', 'n')])
     ## propagation-loss-model.h: double ns3::LogDistancePropagationLossModel::GetPathLossExponent() const [member function]
-    cls.add_method('GetPathLossExponent', 'double', [], is_const=True)
+    cls.add_method('GetPathLossExponent', 
+                   'double', 
+                   [], 
+                   is_const=True)
     ## propagation-loss-model.h: void ns3::LogDistancePropagationLossModel::SetReferenceModel(ns3::Ptr<ns3::PropagationLossModel> model) [member function]
-    cls.add_method('SetReferenceModel', 'void', [param('ns3::Ptr< ns3::PropagationLossModel >', 'model')])
+    cls.add_method('SetReferenceModel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::PropagationLossModel >', 'model')])
     ## propagation-loss-model.h: void ns3::LogDistancePropagationLossModel::SetReferenceDistance(double referenceDistance) [member function]
-    cls.add_method('SetReferenceDistance', 'void', [param('double', 'referenceDistance')])
+    cls.add_method('SetReferenceDistance', 
+                   'void', 
+                   [param('double', 'referenceDistance')])
     ## propagation-loss-model.h: double ns3::LogDistancePropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetLoss', 'double', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_const=True, is_virtual=True)
+    cls.add_method('GetLoss', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3ConstantRateWifiManager_methods(root_module, cls):
     ## constant-rate-wifi-manager.h: static ns3::TypeId ns3::ConstantRateWifiManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## constant-rate-wifi-manager.h: ns3::ConstantRateWifiManager::ConstantRateWifiManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## constant-rate-wifi-manager.h: ns3::WifiMode ns3::ConstantRateWifiManager::GetDataMode() const [member function]
-    cls.add_method('GetDataMode', 'ns3::WifiMode', [], is_const=True)
+    cls.add_method('GetDataMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   is_const=True)
     ## constant-rate-wifi-manager.h: ns3::WifiMode ns3::ConstantRateWifiManager::GetCtlMode() const [member function]
-    cls.add_method('GetCtlMode', 'ns3::WifiMode', [], is_const=True)
+    cls.add_method('GetCtlMode', 
+                   'ns3::WifiMode', 
+                   [], 
+                   is_const=True)
     ## constant-rate-wifi-manager.h: ns3::WifiRemoteStation * ns3::ConstantRateWifiManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3AarfWifiRemoteStation_methods(root_module, cls):
     ## aarf-wifi-manager.h: ns3::AarfWifiRemoteStation::AarfWifiRemoteStation(ns3::Ptr<ns3::AarfWifiManager> stations, uint32_t minTimerThreshold, uint32_t minSuccessThreshold, double successK, uint32_t maxSuccessThreshold, double timerK) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::AarfWifiManager >', 'stations'), param('uint32_t', 'minTimerThreshold'), param('uint32_t', 'minSuccessThreshold'), param('double', 'successK'), param('uint32_t', 'maxSuccessThreshold'), param('double', 'timerK')], visibility='public')
+    cls.add_constructor([param('ns3::Ptr< ns3::AarfWifiManager >', 'stations'), param('uint32_t', 'minTimerThreshold'), param('uint32_t', 'minSuccessThreshold'), param('double', 'successK'), param('uint32_t', 'maxSuccessThreshold'), param('double', 'timerK')])
     ## aarf-wifi-manager.h: void ns3::AarfWifiRemoteStation::ReportRecoveryFailure() [member function]
-    cls.add_method('ReportRecoveryFailure', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('ReportRecoveryFailure', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     ## aarf-wifi-manager.h: void ns3::AarfWifiRemoteStation::ReportFailure() [member function]
-    cls.add_method('ReportFailure', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('ReportFailure', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3PropagationDelayModel_methods(root_module, cls):
     ## propagation-delay-model.h: static ns3::TypeId ns3::PropagationDelayModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## propagation-delay-model.h: ns3::Time ns3::PropagationDelayModel::GetDelay(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetDelay', 'ns3::Time', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_method('GetDelay', 
+                   'ns3::Time', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
     return
 
 def register_Ns3AdhocWifiMac_methods(root_module, cls):
     ## adhoc-wifi-mac.h: static ns3::TypeId ns3::AdhocWifiMac::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## adhoc-wifi-mac.h: ns3::AdhocWifiMac::AdhocWifiMac() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetSlot(ns3::Time slotTime) [member function]
-    cls.add_method('SetSlot', 'void', [param('ns3::Time', 'slotTime')], is_virtual=True)
+    cls.add_method('SetSlot', 
+                   'void', 
+                   [param('ns3::Time', 'slotTime')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetSifs(ns3::Time sifs) [member function]
-    cls.add_method('SetSifs', 'void', [param('ns3::Time', 'sifs')], is_virtual=True)
+    cls.add_method('SetSifs', 
+                   'void', 
+                   [param('ns3::Time', 'sifs')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetEifsNoDifs(ns3::Time eifsNoDifs) [member function]
-    cls.add_method('SetEifsNoDifs', 'void', [param('ns3::Time', 'eifsNoDifs')], is_virtual=True)
+    cls.add_method('SetEifsNoDifs', 
+                   'void', 
+                   [param('ns3::Time', 'eifsNoDifs')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: ns3::Time ns3::AdhocWifiMac::GetSlot() const [member function]
-    cls.add_method('GetSlot', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSlot', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## adhoc-wifi-mac.h: ns3::Time ns3::AdhocWifiMac::GetSifs() const [member function]
-    cls.add_method('GetSifs', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## adhoc-wifi-mac.h: ns3::Time ns3::AdhocWifiMac::GetEifsNoDifs() const [member function]
-    cls.add_method('GetEifsNoDifs', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetEifsNoDifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetWifiPhy(ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('SetWifiPhy', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], is_virtual=True)
+    cls.add_method('SetWifiPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetWifiRemoteStationManager(ns3::Ptr<ns3::WifiRemoteStationManager> stationManager) [member function]
-    cls.add_method('SetWifiRemoteStationManager', 'void', [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], is_virtual=True)
+    cls.add_method('SetWifiRemoteStationManager', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::Enqueue(ns3::Ptr<const ns3::Packet> packet, ns3::Mac48Address to) [member function]
-    cls.add_method('Enqueue', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], is_virtual=True)
+    cls.add_method('Enqueue', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetForwardUpCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty> upCallback) [member function]
-    cls.add_method('SetForwardUpCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], is_virtual=True)
+    cls.add_method('SetForwardUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetLinkUpCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkUp) [member function]
-    cls.add_method('SetLinkUpCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], is_virtual=True)
+    cls.add_method('SetLinkUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetLinkDownCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkDown) [member function]
-    cls.add_method('SetLinkDownCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], is_virtual=True)
+    cls.add_method('SetLinkDownCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: ns3::Mac48Address ns3::AdhocWifiMac::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Mac48Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## adhoc-wifi-mac.h: ns3::Ssid ns3::AdhocWifiMac::GetSsid() const [member function]
-    cls.add_method('GetSsid', 'ns3::Ssid', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSsid', 
+                   'ns3::Ssid', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## adhoc-wifi-mac.h: ns3::Mac48Address ns3::AdhocWifiMac::GetBssid() const [member function]
-    cls.add_method('GetBssid', 'ns3::Mac48Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetBssid', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetAddress(ns3::Mac48Address address) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Mac48Address', 'address')], is_virtual=True)
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'address')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetSsid(ns3::Ssid ssid) [member function]
-    cls.add_method('SetSsid', 'void', [param('ns3::Ssid', 'ssid')], is_virtual=True)
+    cls.add_method('SetSsid', 
+                   'void', 
+                   [param('ns3::Ssid', 'ssid')], 
+                   is_virtual=True)
     ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
     ## jakes-propagation-loss-model.h: static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## jakes-propagation-loss-model.h: ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## jakes-propagation-loss-model.h: double ns3::JakesPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetLoss', 'double', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_const=True, is_virtual=True)
+    cls.add_method('GetLoss', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_const=True, is_virtual=True)
     ## jakes-propagation-loss-model.h: void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function]
-    cls.add_method('SetNRays', 'void', [param('uint8_t', 'nRays')])
+    cls.add_method('SetNRays', 
+                   'void', 
+                   [param('uint8_t', 'nRays')])
     ## jakes-propagation-loss-model.h: void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function]
-    cls.add_method('SetNOscillators', 'void', [param('uint8_t', 'nOscillators')])
+    cls.add_method('SetNOscillators', 
+                   'void', 
+                   [param('uint8_t', 'nOscillators')])
     return
 
 def register_Ns3ConstantSpeedPropagationDelayModel_methods(root_module, cls):
     ## propagation-delay-model.h: static ns3::TypeId ns3::ConstantSpeedPropagationDelayModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## propagation-delay-model.h: ns3::ConstantSpeedPropagationDelayModel::ConstantSpeedPropagationDelayModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## propagation-delay-model.h: ns3::Time ns3::ConstantSpeedPropagationDelayModel::GetDelay(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetDelay', 'ns3::Time', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_const=True, is_virtual=True)
+    cls.add_method('GetDelay', 
+                   'ns3::Time', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_const=True, is_virtual=True)
     ## propagation-delay-model.h: void ns3::ConstantSpeedPropagationDelayModel::SetSpeed(double speed) [member function]
-    cls.add_method('SetSpeed', 'void', [param('double', 'speed')])
+    cls.add_method('SetSpeed', 
+                   'void', 
+                   [param('double', 'speed')])
     ## propagation-delay-model.h: double ns3::ConstantSpeedPropagationDelayModel::GetSpeed() const [member function]
-    cls.add_method('GetSpeed', 'double', [], is_const=True)
+    cls.add_method('GetSpeed', 
+                   'double', 
+                   [], 
+                   is_const=True)
     return
 
 def register_Ns3WifiNetDevice_methods(root_module, cls):
     ## wifi-net-device.h: static ns3::TypeId ns3::WifiNetDevice::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## wifi-net-device.h: ns3::WifiNetDevice::WifiNetDevice() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetMac(ns3::Ptr<ns3::WifiMac> mac) [member function]
-    cls.add_method('SetMac', 'void', [param('ns3::Ptr< ns3::WifiMac >', 'mac')])
+    cls.add_method('SetMac', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiMac >', 'mac')])
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetPhy(ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('SetPhy', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'phy')])
+    cls.add_method('SetPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'phy')])
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetRemoteStationManager(ns3::Ptr<ns3::WifiRemoteStationManager> manager) [member function]
-    cls.add_method('SetRemoteStationManager', 'void', [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'manager')])
+    cls.add_method('SetRemoteStationManager', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'manager')])
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetChannel(ns3::Ptr<ns3::WifiChannel> channel) [member function]
-    cls.add_method('SetChannel', 'void', [param('ns3::Ptr< ns3::WifiChannel >', 'channel')])
+    cls.add_method('SetChannel', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiChannel >', 'channel')])
     ## wifi-net-device.h: ns3::Ptr<ns3::WifiMac> ns3::WifiNetDevice::GetMac() const [member function]
-    cls.add_method('GetMac', 'ns3::Ptr< ns3::WifiMac >', [], is_const=True)
+    cls.add_method('GetMac', 
+                   'ns3::Ptr< ns3::WifiMac >', 
+                   [], 
+                   is_const=True)
     ## wifi-net-device.h: ns3::Ptr<ns3::WifiPhy> ns3::WifiNetDevice::GetPhy() const [member function]
-    cls.add_method('GetPhy', 'ns3::Ptr< ns3::WifiPhy >', [], is_const=True)
+    cls.add_method('GetPhy', 
+                   'ns3::Ptr< ns3::WifiPhy >', 
+                   [], 
+                   is_const=True)
     ## wifi-net-device.h: ns3::Ptr<ns3::WifiRemoteStationManager> ns3::WifiNetDevice::GetRemoteStationManager() const [member function]
-    cls.add_method('GetRemoteStationManager', 'ns3::Ptr< ns3::WifiRemoteStationManager >', [], is_const=True)
+    cls.add_method('GetRemoteStationManager', 
+                   'ns3::Ptr< ns3::WifiRemoteStationManager >', 
+                   [], 
+                   is_const=True)
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetName(std::string const name) [member function]
-    cls.add_method('SetName', 'void', [param('std::string', 'name', is_const=True)], is_virtual=True)
+    cls.add_method('SetName', 
+                   'void', 
+                   [param('std::string', 'name', is_const=True)], 
+                   is_virtual=True)
     ## wifi-net-device.h: std::string ns3::WifiNetDevice::GetName() const [member function]
-    cls.add_method('GetName', 'std::string', [], is_const=True, is_virtual=True)
+    cls.add_method('GetName', 
+                   'std::string', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetIfIndex(uint32_t const index) [member function]
-    cls.add_method('SetIfIndex', 'void', [param('uint32_t', 'index', is_const=True)], is_virtual=True)
+    cls.add_method('SetIfIndex', 
+                   'void', 
+                   [param('uint32_t', 'index', is_const=True)], 
+                   is_virtual=True)
     ## wifi-net-device.h: uint32_t ns3::WifiNetDevice::GetIfIndex() const [member function]
-    cls.add_method('GetIfIndex', 'uint32_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetIfIndex', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: ns3::Ptr<ns3::Channel> ns3::WifiNetDevice::GetChannel() const [member function]
-    cls.add_method('GetChannel', 'ns3::Ptr< ns3::Channel >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetChannel', 
+                   'ns3::Ptr< ns3::Channel >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: ns3::Address ns3::WifiNetDevice::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: bool ns3::WifiNetDevice::SetMtu(uint16_t const mtu) [member function]
-    cls.add_method('SetMtu', 'bool', [param('uint16_t', 'mtu', is_const=True)], is_virtual=True)
+    cls.add_method('SetMtu', 
+                   'bool', 
+                   [param('uint16_t', 'mtu', is_const=True)], 
+                   is_virtual=True)
     ## wifi-net-device.h: uint16_t ns3::WifiNetDevice::GetMtu() const [member function]
-    cls.add_method('GetMtu', 'uint16_t', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: bool ns3::WifiNetDevice::IsLinkUp() const [member function]
-    cls.add_method('IsLinkUp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsLinkUp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetLinkChangeCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
-    cls.add_method('SetLinkChangeCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], is_virtual=True)
+    cls.add_method('SetLinkChangeCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')], 
+                   is_virtual=True)
     ## wifi-net-device.h: bool ns3::WifiNetDevice::IsBroadcast() const [member function]
-    cls.add_method('IsBroadcast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsBroadcast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: ns3::Address ns3::WifiNetDevice::GetBroadcast() const [member function]
-    cls.add_method('GetBroadcast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetBroadcast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: bool ns3::WifiNetDevice::IsMulticast() const [member function]
-    cls.add_method('IsMulticast', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsMulticast', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: ns3::Address ns3::WifiNetDevice::GetMulticast() const [member function]
-    cls.add_method('GetMulticast', 'ns3::Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetMulticast', 
+                   'ns3::Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: ns3::Address ns3::WifiNetDevice::MakeMulticastAddress(ns3::Ipv4Address multicastGroup) const [member function]
-    cls.add_method('MakeMulticastAddress', 'ns3::Address', [param('ns3::Ipv4Address', 'multicastGroup')], is_const=True, is_virtual=True)
+    cls.add_method('MakeMulticastAddress', 
+                   'ns3::Address', 
+                   [param('ns3::Ipv4Address', 'multicastGroup')], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: bool ns3::WifiNetDevice::IsPointToPoint() const [member function]
-    cls.add_method('IsPointToPoint', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('IsPointToPoint', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: bool ns3::WifiNetDevice::Send(ns3::Ptr<ns3::Packet> packet, ns3::Address const & dest, uint16_t protocolNumber) [member function]
-    cls.add_method('Send', 'bool', [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], is_virtual=True)
+    cls.add_method('Send', 
+                   'bool', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Address&', 'dest', is_const=True), param('uint16_t', 'protocolNumber')], 
+                   is_virtual=True)
     ## wifi-net-device.h: ns3::Ptr<ns3::Node> ns3::WifiNetDevice::GetNode() const [member function]
-    cls.add_method('GetNode', 'ns3::Ptr< ns3::Node >', [], is_const=True, is_virtual=True)
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetNode(ns3::Ptr<ns3::Node> node) [member function]
-    cls.add_method('SetNode', 'void', [param('ns3::Ptr< ns3::Node >', 'node')], is_virtual=True)
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_virtual=True)
     ## wifi-net-device.h: bool ns3::WifiNetDevice::NeedsArp() const [member function]
-    cls.add_method('NeedsArp', 'bool', [], is_const=True, is_virtual=True)
+    cls.add_method('NeedsArp', 
+                   'bool', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## wifi-net-device.h: void ns3::WifiNetDevice::SetReceiveCallback(ns3::Callback<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<ns3::Packet>, unsigned short, ns3::Address const&, ns3::empty, ns3::empty> cb) [member function]
-    cls.add_method('SetReceiveCallback', 'void', [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], is_virtual=True)
+    cls.add_method('SetReceiveCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::NetDevice >, ns3::Ptr< ns3::Packet >, unsigned short, ns3::Address const&, ns3::empty, ns3::empty >', 'cb')], 
+                   is_virtual=True)
     ## wifi-net-device.h: void ns3::WifiNetDevice::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3NqstaWifiMac_methods(root_module, cls):
     ## nqsta-wifi-mac.h: static ns3::TypeId ns3::NqstaWifiMac::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## nqsta-wifi-mac.h: ns3::NqstaWifiMac::NqstaWifiMac() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetSlot(ns3::Time slotTime) [member function]
-    cls.add_method('SetSlot', 'void', [param('ns3::Time', 'slotTime')], is_virtual=True)
+    cls.add_method('SetSlot', 
+                   'void', 
+                   [param('ns3::Time', 'slotTime')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetSifs(ns3::Time sifs) [member function]
-    cls.add_method('SetSifs', 'void', [param('ns3::Time', 'sifs')], is_virtual=True)
+    cls.add_method('SetSifs', 
+                   'void', 
+                   [param('ns3::Time', 'sifs')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetEifsNoDifs(ns3::Time eifsNoDifs) [member function]
-    cls.add_method('SetEifsNoDifs', 'void', [param('ns3::Time', 'eifsNoDifs')], is_virtual=True)
+    cls.add_method('SetEifsNoDifs', 
+                   'void', 
+                   [param('ns3::Time', 'eifsNoDifs')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: ns3::Time ns3::NqstaWifiMac::GetSlot() const [member function]
-    cls.add_method('GetSlot', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSlot', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqsta-wifi-mac.h: ns3::Time ns3::NqstaWifiMac::GetSifs() const [member function]
-    cls.add_method('GetSifs', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqsta-wifi-mac.h: ns3::Time ns3::NqstaWifiMac::GetEifsNoDifs() const [member function]
-    cls.add_method('GetEifsNoDifs', 'ns3::Time', [], is_const=True, is_virtual=True)
+    cls.add_method('GetEifsNoDifs', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetWifiPhy(ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('SetWifiPhy', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], is_virtual=True)
+    cls.add_method('SetWifiPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetWifiRemoteStationManager(ns3::Ptr<ns3::WifiRemoteStationManager> stationManager) [member function]
-    cls.add_method('SetWifiRemoteStationManager', 'void', [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], is_virtual=True)
+    cls.add_method('SetWifiRemoteStationManager', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiRemoteStationManager >', 'stationManager')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::Enqueue(ns3::Ptr<const ns3::Packet> packet, ns3::Mac48Address to) [member function]
-    cls.add_method('Enqueue', 'void', [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], is_virtual=True)
+    cls.add_method('Enqueue', 
+                   'void', 
+                   [param('ns3::Ptr< const ns3::Packet >', 'packet'), param('ns3::Mac48Address', 'to')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetForwardUpCallback(ns3::Callback<void, ns3::Ptr<ns3::Packet>, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty> upCallback) [member function]
-    cls.add_method('SetForwardUpCallback', 'void', [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], is_virtual=True)
+    cls.add_method('SetForwardUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Mac48Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'upCallback')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetLinkUpCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkUp) [member function]
-    cls.add_method('SetLinkUpCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], is_virtual=True)
+    cls.add_method('SetLinkUpCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkUp')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetLinkDownCallback(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> linkDown) [member function]
-    cls.add_method('SetLinkDownCallback', 'void', [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], is_virtual=True)
+    cls.add_method('SetLinkDownCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: ns3::Mac48Address ns3::NqstaWifiMac::GetAddress() const [member function]
-    cls.add_method('GetAddress', 'ns3::Mac48Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetAddress', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqsta-wifi-mac.h: ns3::Ssid ns3::NqstaWifiMac::GetSsid() const [member function]
-    cls.add_method('GetSsid', 'ns3::Ssid', [], is_const=True, is_virtual=True)
+    cls.add_method('GetSsid', 
+                   'ns3::Ssid', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqsta-wifi-mac.h: ns3::Mac48Address ns3::NqstaWifiMac::GetBssid() const [member function]
-    cls.add_method('GetBssid', 'ns3::Mac48Address', [], is_const=True, is_virtual=True)
+    cls.add_method('GetBssid', 
+                   'ns3::Mac48Address', 
+                   [], 
+                   is_const=True, is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetAddress(ns3::Mac48Address address) [member function]
-    cls.add_method('SetAddress', 'void', [param('ns3::Mac48Address', 'address')], is_virtual=True)
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Mac48Address', 'address')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetSsid(ns3::Ssid ssid) [member function]
-    cls.add_method('SetSsid', 'void', [param('ns3::Ssid', 'ssid')], is_virtual=True)
+    cls.add_method('SetSsid', 
+                   'void', 
+                   [param('ns3::Ssid', 'ssid')], 
+                   is_virtual=True)
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetMaxMissedBeacons(uint32_t missed) [member function]
-    cls.add_method('SetMaxMissedBeacons', 'void', [param('uint32_t', 'missed')])
+    cls.add_method('SetMaxMissedBeacons', 
+                   'void', 
+                   [param('uint32_t', 'missed')])
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetProbeRequestTimeout(ns3::Time timeout) [member function]
-    cls.add_method('SetProbeRequestTimeout', 'void', [param('ns3::Time', 'timeout')])
+    cls.add_method('SetProbeRequestTimeout', 
+                   'void', 
+                   [param('ns3::Time', 'timeout')])
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetAssocRequestTimeout(ns3::Time timeout) [member function]
-    cls.add_method('SetAssocRequestTimeout', 'void', [param('ns3::Time', 'timeout')])
+    cls.add_method('SetAssocRequestTimeout', 
+                   'void', 
+                   [param('ns3::Time', 'timeout')])
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::StartActiveAssociation() [member function]
-    cls.add_method('StartActiveAssociation', 'void', [])
+    cls.add_method('StartActiveAssociation', 
+                   'void', 
+                   [])
     ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::DoDispose() [member function]
-    cls.add_method('DoDispose', 'void', [], visibility='private', is_virtual=True)
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3RandomPropagationLossModel_methods(root_module, cls):
     ## propagation-loss-model.h: static ns3::TypeId ns3::RandomPropagationLossModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## propagation-loss-model.h: ns3::RandomPropagationLossModel::RandomPropagationLossModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## propagation-loss-model.h: double ns3::RandomPropagationLossModel::GetLoss(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetLoss', 'double', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_const=True, is_virtual=True)
+    cls.add_method('GetLoss', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3RandomPropagationDelayModel_methods(root_module, cls):
     ## propagation-delay-model.h: static ns3::TypeId ns3::RandomPropagationDelayModel::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## propagation-delay-model.h: ns3::RandomPropagationDelayModel::RandomPropagationDelayModel() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## propagation-delay-model.h: ns3::Time ns3::RandomPropagationDelayModel::GetDelay(ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
-    cls.add_method('GetDelay', 'ns3::Time', [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], is_const=True, is_virtual=True)
+    cls.add_method('GetDelay', 
+                   'ns3::Time', 
+                   [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3AmrrWifiManager_methods(root_module, cls):
     ## amrr-wifi-manager.h: static ns3::TypeId ns3::AmrrWifiManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## amrr-wifi-manager.h: ns3::AmrrWifiManager::AmrrWifiManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## amrr-wifi-manager.h: ns3::WifiRemoteStation * ns3::AmrrWifiManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3RraaWifiManager_methods(root_module, cls):
     ## rraa-wifi-manager.h: static ns3::TypeId ns3::RraaWifiManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## rraa-wifi-manager.h: ns3::RraaWifiManager::RraaWifiManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## rraa-wifi-manager.h: bool ns3::RraaWifiManager::OnlyBasic() [member function]
-    cls.add_method('OnlyBasic', 'bool', [])
+    cls.add_method('OnlyBasic', 
+                   'bool', 
+                   [])
     ## rraa-wifi-manager.h: ns3::Time ns3::RraaWifiManager::GetTimeout() const [member function]
-    cls.add_method('GetTimeout', 'ns3::Time', [], is_const=True)
+    cls.add_method('GetTimeout', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
     ## rraa-wifi-manager.h: ns3::ThresholdsItem ns3::RraaWifiManager::GetThresholds(ns3::WifiMode mode) const [member function]
-    cls.add_method('GetThresholds', 'ns3::ThresholdsItem', [param('ns3::WifiMode', 'mode')], is_const=True)
+    cls.add_method('GetThresholds', 
+                   'ns3::ThresholdsItem', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_const=True)
     ## rraa-wifi-manager.h: ns3::WifiRemoteStation * ns3::RraaWifiManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3IdealWifiManager_methods(root_module, cls):
     ## ideal-wifi-manager.h: static ns3::TypeId ns3::IdealWifiManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## ideal-wifi-manager.h: ns3::IdealWifiManager::IdealWifiManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## ideal-wifi-manager.h: void ns3::IdealWifiManager::SetupPhy(ns3::Ptr<ns3::WifiPhy> phy) [member function]
-    cls.add_method('SetupPhy', 'void', [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], is_virtual=True)
+    cls.add_method('SetupPhy', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::WifiPhy >', 'phy')], 
+                   is_virtual=True)
     ## ideal-wifi-manager.h: double ns3::IdealWifiManager::GetSnrThreshold(ns3::WifiMode mode) const [member function]
-    cls.add_method('GetSnrThreshold', 'double', [param('ns3::WifiMode', 'mode')], is_const=True)
+    cls.add_method('GetSnrThreshold', 
+                   'double', 
+                   [param('ns3::WifiMode', 'mode')], 
+                   is_const=True)
     ## ideal-wifi-manager.h: void ns3::IdealWifiManager::AddModeSnrThreshold(ns3::WifiMode mode, double ber) [member function]
-    cls.add_method('AddModeSnrThreshold', 'void', [param('ns3::WifiMode', 'mode'), param('double', 'ber')])
+    cls.add_method('AddModeSnrThreshold', 
+                   'void', 
+                   [param('ns3::WifiMode', 'mode'), param('double', 'ber')])
     ## ideal-wifi-manager.h: ns3::WifiRemoteStation * ns3::IdealWifiManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3ArfWifiManager_methods(root_module, cls):
     ## arf-wifi-manager.h: static ns3::TypeId ns3::ArfWifiManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## arf-wifi-manager.h: ns3::ArfWifiManager::ArfWifiManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## arf-wifi-manager.h: ns3::WifiRemoteStation * ns3::ArfWifiManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_Ns3AarfWifiManager_methods(root_module, cls):
     ## aarf-wifi-manager.h: static ns3::TypeId ns3::AarfWifiManager::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 'ns3::TypeId', [], is_static=True)
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
     ## aarf-wifi-manager.h: ns3::AarfWifiManager::AarfWifiManager() [constructor]
-    cls.add_constructor([], visibility='public')
+    cls.add_constructor([])
     ## aarf-wifi-manager.h: ns3::WifiRemoteStation * ns3::AarfWifiManager::CreateStation() [member function]
-    cls.add_method('CreateStation', 'ns3::WifiRemoteStation *', [], visibility='private', is_virtual=True)
+    cls.add_method('CreateStation', 
+                   'ns3::WifiRemoteStation *', 
+                   [], 
+                   visibility='private', is_virtual=True)
     return
 
 def register_functions(root_module):
     module = root_module
     ## wifi-mode.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeWifiModeChecker() [free function]
-    module.add_function('MakeWifiModeChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeWifiModeChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## ssid.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeSsidChecker() [free function]
-    module.add_function('MakeSsidChecker', 'ns3::Ptr< ns3::AttributeChecker const >', [])
+    module.add_function('MakeSsidChecker', 
+                        '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/ns3modulegen_generated.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3modulegen_generated.py	Mon Jul 21 15:53:03 2008 -0700
@@ -1,4 +1,4 @@
-from pybindgen import Module, FileCodeSink, write_preamble, param, retval
+from pybindgen import Module, FileCodeSink, param, retval, cppclass
 
 
 import pybindgen.settings
@@ -22,6 +22,7 @@
 import ns3_module_internet_stack
 import ns3_module_wifi
 import ns3_module_csma
+import ns3_module_bridge
 import ns3_module_packet_sink
 import ns3_module_global_routing
 import ns3_module_onoff
@@ -146,6 +147,17 @@
         ns3_module_csma__local.register_types(module)
     
     root_module.end_section('ns3_module_csma')
+    root_module.begin_section('ns3_module_bridge')
+    ns3_module_bridge.register_types(module)
+    
+    try:
+        import ns3_module_bridge__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_bridge__local.register_types(module)
+    
+    root_module.end_section('ns3_module_bridge')
     root_module.begin_section('ns3_module_packet_sink')
     ns3_module_packet_sink.register_types(module)
     
@@ -364,6 +376,17 @@
         ns3_module_csma__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_csma')
+    root_module.begin_section('ns3_module_bridge')
+    ns3_module_bridge.register_methods(root_module)
+    
+    try:
+        import ns3_module_bridge__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_bridge__local.register_methods(root_module)
+    
+    root_module.end_section('ns3_module_bridge')
     root_module.begin_section('ns3_module_packet_sink')
     ns3_module_packet_sink.register_methods(root_module)
     
@@ -544,6 +567,17 @@
         ns3_module_csma__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_csma')
+    root_module.begin_section('ns3_module_bridge')
+    ns3_module_bridge.register_functions(root_module)
+    
+    try:
+        import ns3_module_bridge__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_bridge__local.register_functions(root_module)
+    
+    root_module.end_section('ns3_module_bridge')
     root_module.begin_section('ns3_module_packet_sink')
     ns3_module_packet_sink.register_functions(root_module)
     
@@ -634,7 +668,6 @@
     register_types(root_module)
     register_methods(root_module)
     register_functions(root_module)
-    write_preamble(out)
     root_module.generate(out)
 
 if __name__ == '__main__':
--- a/bindings/python/ns3modulescan.py	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/ns3modulescan.py	Mon Jul 21 15:53:03 2008 -0700
@@ -52,14 +52,10 @@
         'ignore': None,
         },
     '::ns3::AttributeChecker': {
-        'incref_method': 'Ref',
-        'decref_method': 'Unref',
         'automatic_type_narrowing': 'true',
         'allow_subclassing': 'false',
         },
     '::ns3::AttributeValue': {
-        'incref_method': 'Ref',
-        'decref_method': 'Unref',
         'automatic_type_narrowing': 'true',
         'allow_subclassing': 'false',
         },
--- a/bindings/python/wscript	Fri Jul 18 21:59:43 2008 -0700
+++ b/bindings/python/wscript	Mon Jul 21 15:53:03 2008 -0700
@@ -21,7 +21,7 @@
     os.environ['PYTHONPATH'] = LOCAL_PYBINDGEN_PATH
 
 ## https://launchpad.net/pybindgen/
-REQUIRED_PYBINDGEN_VERSION = (0, 8, 0, 492)
+REQUIRED_PYBINDGEN_VERSION = (0, 8, 0, 511)
 REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/csma-bridge.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,175 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ */
+
+// Network topology
+//
+//        n0     n1  
+//        |      | 
+//       ----------
+//       | Switch |
+//       ----------
+//        |      | 
+//        n2     n3  
+//
+//
+// - CBR/UDP flows from n0 to n1 and from n3 to n0
+// - DropTail queues 
+// - Tracing of queues and packet receptions to file "csma-bridge.tr"
+
+#include <iostream>
+#include <fstream>
+
+#include "ns3/simulator-module.h"
+#include "ns3/node-module.h"
+#include "ns3/core-module.h"
+#include "ns3/helper-module.h"
+#include "ns3/bridge-module.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("CsmaBridgeExample");
+
+int 
+main (int argc, char *argv[])
+{
+  //
+  // Users may find it convenient to turn on explicit debugging
+  // for selected modules; the below lines suggest how to do this
+  //
+#if 0 
+  LogComponentEnable ("CsmaBridgeExample", LOG_LEVEL_INFO);
+#endif
+
+  //
+  // Make the random number generators generate reproducible results.
+  //
+  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
+
+  //
+  // Allow the user to override any of the defaults and the above Bind() at
+  // run-time, via command-line arguments
+  //
+  CommandLine cmd;
+  cmd.Parse (argc, argv);
+
+  //
+  // Explicitly create the nodes required by the topology (shown above).
+  //
+  NS_LOG_INFO ("Create nodes.");
+  NodeContainer terminals;
+  terminals.Create (4);
+
+  NodeContainer csmaSwitch;
+  csmaSwitch.Create (1);
+
+  NS_LOG_INFO ("Build Topology");
+  CsmaHelper csma;
+  csma.SetChannelAttribute ("DataRate", DataRateValue (5000000));
+  csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
+
+  // Create the csma links, from each terminal to the switch
+
+  NetDeviceContainer terminalDevices;
+  NetDeviceContainer switchDevices;
+
+  for (int i = 0; i < 4; i++)
+    {
+      NetDeviceContainer link = csma.Install (NodeContainer (terminals.Get (i), csmaSwitch));
+      terminalDevices.Add (link.Get (0));
+      switchDevices.Add (link.Get (1));
+    }
+
+  // Create the bridge netdevice, which will do the packet switching
+  Ptr<Node> switchNode = csmaSwitch.Get (0);
+  Ptr<BridgeNetDevice> bridgeDevice = CreateObject<BridgeNetDevice> ();
+  switchNode->AddDevice (bridgeDevice);
+
+  for (NetDeviceContainer::Iterator portIter = switchDevices.Begin ();
+       portIter != switchDevices.End (); portIter++)
+    {
+      bridgeDevice->AddBridgePort (*portIter);
+    }
+
+  // Add internet stack to the terminals
+  InternetStackHelper internet;
+  internet.Install (terminals);
+
+  // We've got the "hardware" in place.  Now we need to add IP addresses.
+  //
+  NS_LOG_INFO ("Assign IP Addresses.");
+  Ipv4AddressHelper ipv4;
+  ipv4.SetBase ("10.1.1.0", "255.255.255.0");
+  ipv4.Assign (terminalDevices);
+
+  //
+  // Create an OnOff application to send UDP datagrams from node zero to node 1.
+  //
+  NS_LOG_INFO ("Create Applications.");
+  uint16_t port = 9;   // Discard port (RFC 863)
+
+  OnOffHelper onoff ("ns3::UdpSocketFactory", 
+                     Address (InetSocketAddress (Ipv4Address ("10.1.1.2"), port)));
+  onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
+  onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
+
+  ApplicationContainer app = onoff.Install (terminals.Get (0));
+  // Start the application
+  app.Start (Seconds (1.0));
+  app.Stop (Seconds (10.0));
+
+  // Create an optional packet sink to receive these packets
+  PacketSinkHelper sink ("ns3::UdpSocketFactory",
+                         Address (InetSocketAddress (Ipv4Address::GetAny (), port)));
+  sink.Install (terminals.Get (1));
+
+  // 
+  // Create a similar flow from n3 to n0, starting at time 1.1 seconds
+  //
+  onoff.SetAttribute ("Remote", 
+                      AddressValue (InetSocketAddress (Ipv4Address ("10.1.1.1"), port)));
+  ApplicationContainer app2 = onoff.Install (terminals.Get (3));
+
+  sink.Install (terminals.Get (0));
+
+  app2.Start (Seconds (1.1));
+  app2.Stop (Seconds (10.0));
+
+  //
+  // Configure tracing of all enqueue, dequeue, and NetDevice receive events.
+  // Trace output will be sent to the file "csma-bridge.tr"
+  //
+  NS_LOG_INFO ("Configure Tracing.");
+  std::ofstream ascii;
+  ascii.open ("csma-bridge.tr");
+  CsmaHelper::EnableAsciiAll (ascii);
+
+  //
+  // Also configure some tcpdump traces; each interface will be traced.
+  // The output files will be named:
+  //     csma-bridge.pcap-<nodeId>-<interfaceId>
+  // and can be read by the "tcpdump -r" command (use "-tt" option to
+  // display timestamps correctly)
+  //
+  CsmaHelper::EnablePcapAll ("csma-bridge");
+
+  //
+  // Now, do the actual simulation.
+  //
+  NS_LOG_INFO ("Run Simulation.");
+  Simulator::Run ();
+  Simulator::Destroy ();
+  NS_LOG_INFO ("Done.");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/csma-bridge.py	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,155 @@
+# /*
+#  * 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
+#  */
+
+# Network topology
+#
+#        n0     n1  
+#        |      | 
+#       ----------
+#       | Switch |
+#       ----------
+#        |      | 
+#        n2     n3  
+#
+#
+# - CBR/UDP flows from n0 to n1 and from n3 to n0
+# - DropTail queues 
+# - Tracing of queues and packet receptions to file "csma-bridge.tr"
+
+import ns3
+
+
+def main(argv):
+    #
+    # Make the random number generators generate reproducible results.
+    #
+    ns3.RandomVariable.UseGlobalSeed(1, 1, 2, 3, 5, 8)
+
+    #
+    # Allow the user to override any of the defaults and the above Bind() at
+    # run-time, via command-line arguments
+    #
+    cmd = ns3.CommandLine()
+    cmd.Parse(argv)
+
+    #
+    # Explicitly create the nodes required by the topology(shown above).
+    #
+    print "Create nodes."
+    terminals = ns3.NodeContainer()
+    terminals.Create(4)
+
+    csmaSwitch = ns3.NodeContainer()
+    csmaSwitch.Create(1)
+
+    print "Build Topology"
+    csma = ns3.CsmaHelper()
+    csma.SetChannelAttribute("DataRate", ns3.DataRateValue(ns3.DataRate(5000000)))
+    csma.SetChannelAttribute("Delay", ns3.TimeValue(ns3.MilliSeconds(2)))
+
+    # Create the csma links, from each terminal to the switch
+
+    terminalDevices = ns3.NetDeviceContainer()
+    switchDevices = ns3.NetDeviceContainer()
+
+    for i in range(4):
+        link = csma.Install(ns3.NodeContainer(ns3.NodeContainer(terminals.Get(i)), csmaSwitch))
+        terminalDevices.Add(link.Get(0))
+        switchDevices.Add(link.Get(1))
+
+    # Create the bridge netdevice, which will do the packet switching
+    switchNode = csmaSwitch.Get(0)
+    bridgeDevice = ns3.BridgeNetDevice()
+    switchNode.AddDevice(bridgeDevice)
+
+    for portIter in range(switchDevices.GetN()):
+        bridgeDevice.AddBridgePort(switchDevices.Get(portIter))
+
+    # Add internet stack to the terminals
+    internet = ns3.InternetStackHelper()
+    internet.Install(terminals)
+
+    # We've got the "hardware" in place.  Now we need to add IP addresses.
+    #
+    print "Assign IP Addresses."
+    ipv4 = ns3.Ipv4AddressHelper()
+    ipv4.SetBase(ns3.Ipv4Address("10.1.1.0"), ns3.Ipv4Mask("255.255.255.0"))
+    ipv4.Assign(terminalDevices)
+
+    #
+    # Create an OnOff application to send UDP datagrams from node zero to node 1.
+    #
+    print "Create Applications."
+    port = 9   # Discard port(RFC 863)
+
+    onoff = ns3.OnOffHelper("ns3::UdpSocketFactory", 
+                            ns3.Address(ns3.InetSocketAddress(ns3.Ipv4Address("10.1.1.2"), port)))
+    onoff.SetAttribute("OnTime", ns3.RandomVariableValue(ns3.ConstantVariable(1)))
+    onoff.SetAttribute("OffTime", ns3.RandomVariableValue(ns3.ConstantVariable(0)))
+
+    app = onoff.Install(ns3.NodeContainer(terminals.Get(0)))
+    # Start the application
+    app.Start(ns3.Seconds(1.0))
+    app.Stop(ns3.Seconds(10.0))
+
+    # Create an optional packet sink to receive these packets
+    sink = ns3.PacketSinkHelper("ns3::UdpSocketFactory",
+                                ns3.Address(ns3.InetSocketAddress(ns3.Ipv4Address.GetAny(), port)))
+    sink.Install(ns3.NodeContainer(terminals.Get(1)))
+
+    # 
+    # Create a similar flow from n3 to n0, starting at time 1.1 seconds
+    #
+    onoff.SetAttribute("Remote", 
+                       ns3.AddressValue(ns3.InetSocketAddress(ns3.Ipv4Address("10.1.1.1"), port)))
+    app2 = onoff.Install(ns3.NodeContainer(terminals.Get(3)))
+
+    sink.Install(ns3.NodeContainer(terminals.Get(0)))
+
+    app2.Start(ns3.Seconds(1.1))
+    app2.Stop(ns3.Seconds(10.0))
+
+    #
+    # Configure tracing of all enqueue, dequeue, and NetDevice receive events.
+    # Trace output will be sent to the file "csma-bridge.tr"
+    #
+    #print "Configure Tracing."
+    #std.ofstream ascii
+    #ascii.open("csma-bridge.tr")
+    #CsmaHelper.EnableAsciiAll(ascii)
+
+    #
+    # Also configure some tcpdump traces; each interface will be traced.
+    # The output files will be named:
+    #     csma-bridge.pcap-<nodeId>-<interfaceId>
+    # and can be read by the "tcpdump -r" command(use "-tt" option to
+    # display timestamps correctly)
+    #
+    ns3.CsmaHelper.EnablePcapAll("csma-bridge")
+
+    #
+    # Now, do the actual simulation.
+    #
+    print "Run Simulation."
+    ns3.Simulator.Run()
+    ns3.Simulator.Destroy()
+    print "Done."
+
+
+
+if __name__ == '__main__':
+    import sys
+    main(sys.argv)
+
--- a/examples/wscript	Fri Jul 18 21:59:43 2008 -0700
+++ b/examples/wscript	Mon Jul 21 15:53:03 2008 -0700
@@ -24,6 +24,10 @@
         ['csma', 'internet-stack'])
     obj.source = 'csma-one-subnet.cc'
 
+    obj = bld.create_ns3_program('csma-bridge',
+        ['bridge', 'csma', 'internet-stack'])
+    obj.source = 'csma-bridge.cc'
+
     obj = bld.create_ns3_program('udp-echo',
         ['csma', 'internet-stack'])
     obj.source = 'udp-echo.cc'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/devices/bridge/bridge-channel.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,83 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ *
+ * Author: Gustavo Carneiro  <gjc@inescporto.pt>
+ */
+
+#include "ns3/log.h"
+#include "bridge-channel.h"
+
+NS_LOG_COMPONENT_DEFINE ("BridgeChannel");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (BridgeChannel);
+
+TypeId 
+BridgeChannel::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::BridgeChannel")
+    .SetParent<Channel> ();
+  return tid;
+}
+
+BridgeChannel::BridgeChannel ()
+  : Channel ("BridgeChannel")
+{
+  NS_LOG_FUNCTION_NOARGS ();
+}
+
+BridgeChannel::~BridgeChannel ()
+{
+  NS_LOG_FUNCTION_NOARGS ();
+}
+
+void
+BridgeChannel::AddChannel (Ptr<Channel> bridgedChannel)
+{
+  m_bridgedChannels.push_back (bridgedChannel);
+}
+
+uint32_t
+BridgeChannel::GetNDevices (void) const
+{
+  uint32_t ndevices = 0;
+  for (std::vector< Ptr<Channel> >::const_iterator iter = m_bridgedChannels.begin ();
+       iter != m_bridgedChannels.end (); iter++)
+    {
+      ndevices += (*iter)->GetNDevices ();
+    }
+  return ndevices;
+}
+
+
+Ptr<NetDevice>
+BridgeChannel::GetDevice (uint32_t i) const
+{
+  uint32_t ndevices = 0;
+  for (std::vector< Ptr<Channel> >::const_iterator iter = m_bridgedChannels.begin ();
+       iter != m_bridgedChannels.end (); iter++)
+    {
+      if ((i - ndevices) < (*iter)->GetNDevices ())
+        {
+          return (*iter)->GetDevice (i - ndevices);
+        }
+      ndevices += (*iter)->GetNDevices ();
+    }
+  return NULL;
+}
+
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/devices/bridge/bridge-channel.h	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,52 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ *
+ * Author: Gustavo Carneiro  <gjc@inescporto.pt>
+ */
+#ifndef BRIDGE_CHANNEL_H
+#define BRIDGE_CHANNEL_H
+
+#include "ns3/net-device.h"
+#include "ns3/channel.h"
+#include <vector>
+
+namespace ns3 {
+
+/**
+ * \ingroup netdevice
+ * 
+ * \brief bridge net device for bridge things and testing
+ */
+class BridgeChannel : public Channel
+{
+public:
+  static TypeId GetTypeId (void);
+  BridgeChannel ();
+  virtual ~BridgeChannel ();
+
+  void AddChannel (Ptr<Channel> bridgedChannel);
+
+  // virtual methods implementation, from Channel
+  virtual uint32_t GetNDevices (void) const;
+  virtual Ptr<NetDevice> GetDevice (uint32_t i) const;
+
+private:
+  std::vector< Ptr<Channel> > m_bridgedChannels;
+
+};
+
+} // namespace ns3
+
+#endif /* BRIDGE_CHANNEL_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/devices/bridge/bridge-net-device.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,427 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ *
+ * Author: Gustavo Carneiro  <gjc@inescporto.pt>
+ */
+#include "bridge-net-device.h"
+#include "ns3/node.h"
+#include "ns3/channel.h"
+#include "ns3/packet.h"
+#include "ns3/log.h"
+#include "ns3/boolean.h"
+#include "ns3/simulator.h"
+
+NS_LOG_COMPONENT_DEFINE ("BridgeNetDevice");
+
+namespace ns3 {
+
+
+TypeId
+BridgeNetDevice::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::BridgeNetDevice")
+    .SetParent<NetDevice> ()
+    .AddConstructor<BridgeNetDevice> ()
+    .AddAttribute ("EnableLearning",
+                   "Enable the learning mode of the Learning Bridge",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&BridgeNetDevice::m_enableLearning),
+                   MakeBooleanChecker ())
+    .AddAttribute ("ExpirationTime",
+                   "Time it takes for learned MAC state entry to expire.",
+                   TimeValue (Seconds (30)),
+                   MakeTimeAccessor (&BridgeNetDevice::m_expirationTime),
+                   MakeTimeChecker ())
+    ;
+  return tid;
+}
+
+
+BridgeNetDevice::BridgeNetDevice ()
+  : m_node (0),
+    m_name (""),
+    m_ifIndex (0),
+    m_mtu (0xffff)
+{
+  m_channel = CreateObject<BridgeChannel> ();
+}
+
+void
+BridgeNetDevice::ReceiveFromDevice (Ptr<NetDevice> incomingPort, Ptr<Packet> packet, uint16_t protocol,
+                                    Address const &src, Address const &dst, PacketType packetType)
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  NS_LOG_DEBUG ("UID is " << packet->GetUid ());
+
+  Mac48Address src48 = Mac48Address::ConvertFrom (src);
+  Mac48Address dst48 = Mac48Address::ConvertFrom (dst);
+
+  if (!m_promiscRxCallback.IsNull ())
+    {
+      m_promiscRxCallback (this, packet, protocol, src, dst, packetType);
+    }
+
+  switch (packetType)
+    {
+    case PACKET_HOST:
+      if (dst48 == m_address)
+        {
+          m_rxCallback (this, packet, protocol, src);
+        }
+      break;
+
+    case PACKET_BROADCAST:
+    case PACKET_MULTICAST:
+      m_rxCallback (this, packet, protocol, src);
+      ForwardBroadcast (incomingPort, packet, protocol, src48, dst48);
+      break;
+
+    case PACKET_OTHERHOST:
+      ForwardUnicast (incomingPort, packet, protocol, src48, dst48);
+      break;
+    }
+}
+
+void
+BridgeNetDevice::ForwardUnicast (Ptr<NetDevice> incomingPort, Ptr<Packet> packet,
+                                 uint16_t protocol, Mac48Address src, Mac48Address dst)
+{
+  NS_LOG_DEBUG ("LearningBridgeForward (incomingPort=" << incomingPort->GetName ()
+                << ", packet=" << packet << ", protocol="<<protocol
+                << ", src=" << src << ", dst=" << dst << ")");
+
+  Learn (src, incomingPort);
+  Ptr<NetDevice> outPort = GetLearnedState (dst);
+  if (outPort != NULL && outPort != incomingPort)
+    {
+      NS_LOG_LOGIC ("Learning bridge state says to use port `" << outPort->GetName () << "'");
+      outPort->SendFrom (packet->Copy (), src, dst, protocol);
+    }
+  else
+    {
+      NS_LOG_LOGIC ("No learned state: send through all ports");
+      for (std::vector< Ptr<NetDevice> >::iterator iter = m_ports.begin ();
+           iter != m_ports.end (); iter++)
+        {
+          Ptr<NetDevice> port = *iter;
+          if (port != incomingPort)
+            {
+              NS_LOG_LOGIC ("LearningBridgeForward (" << src << " => " << dst << "): " << incomingPort->GetName ()
+                            << " --> " << port->GetName ()
+                            << " (UID " << packet->GetUid () << ").");
+              port->SendFrom (packet->Copy (), src, dst, protocol);
+            }
+        }
+    }
+}
+
+void
+BridgeNetDevice::ForwardBroadcast (Ptr<NetDevice> incomingPort, Ptr<Packet> packet,
+                                        uint16_t protocol, Mac48Address src, Mac48Address dst)
+{
+  NS_LOG_DEBUG ("LearningBridgeForward (incomingPort=" << incomingPort->GetName ()
+                << ", packet=" << packet << ", protocol="<<protocol
+                << ", src=" << src << ", dst=" << dst << ")");
+  Learn (src, incomingPort);
+
+  for (std::vector< Ptr<NetDevice> >::iterator iter = m_ports.begin ();
+         iter != m_ports.end (); iter++)
+    {
+      Ptr<NetDevice> port = *iter;
+      if (port != incomingPort)
+        {
+          NS_LOG_LOGIC ("LearningBridgeForward (" << src << " => " << dst << "): " << incomingPort->GetName ()
+                        << " --> " << port->GetName ()
+                        << " (UID " << packet->GetUid () << ").");
+          port->SendFrom (packet->Copy (), src, dst, protocol);
+        }
+    }
+}
+
+void BridgeNetDevice::Learn (Mac48Address source, Ptr<NetDevice> port)
+{
+  if (m_enableLearning)
+    {
+      LearnedState &state = m_learnState[source];
+      state.associatedPort = port;
+      state.expirationTime = Simulator::Now () + m_expirationTime;
+    }
+}
+
+Ptr<NetDevice> BridgeNetDevice::GetLearnedState (Mac48Address source)
+{
+  if (m_enableLearning)
+    {
+      Time now = Simulator::Now ();
+      std::map<Mac48Address, LearnedState>::iterator iter =
+        m_learnState.find (source);
+      if (iter != m_learnState.end ())
+        {
+          LearnedState &state = iter->second;
+          if (state.expirationTime > now)
+            {
+              return state.associatedPort;
+            }
+          else
+            {
+              m_learnState.erase (iter);
+            }
+        }
+    }
+  return NULL;
+}
+
+void 
+BridgeNetDevice::AddBridgePort (Ptr<NetDevice> bridgePort)
+{
+  NS_ASSERT (bridgePort != this);
+  if (m_address == Mac48Address ())
+    {
+      m_address = Mac48Address::ConvertFrom (bridgePort->GetAddress ());
+    }
+
+  NS_LOG_DEBUG ("RegisterProtocolHandler for " << bridgePort->GetName ());
+  m_node->RegisterProtocolHandler (MakeCallback (&BridgeNetDevice::ReceiveFromDevice, this),
+                                   0, bridgePort, true);
+  m_ports.push_back (bridgePort);
+  m_channel->AddChannel (bridgePort->GetChannel ());
+}
+
+void 
+BridgeNetDevice::SetName(const std::string name)
+{
+  m_name = name;
+}
+
+std::string 
+BridgeNetDevice::GetName(void) const
+{
+  return m_name;
+}
+
+void 
+BridgeNetDevice::SetIfIndex(const uint32_t index)
+{
+  m_ifIndex = index;
+}
+
+uint32_t 
+BridgeNetDevice::GetIfIndex(void) const
+{
+  return m_ifIndex;
+}
+
+Ptr<Channel> 
+BridgeNetDevice::GetChannel (void) const
+{
+  return m_channel;
+}
+
+Address 
+BridgeNetDevice::GetAddress (void) const
+{
+  return m_address;
+}
+
+bool 
+BridgeNetDevice::SetMtu (const uint16_t mtu)
+{
+  m_mtu = mtu;
+  return true;
+}
+
+uint16_t 
+BridgeNetDevice::GetMtu (void) const
+{
+  return m_mtu;
+}
+
+
+bool 
+BridgeNetDevice::IsLinkUp (void) const
+{
+  return true;
+}
+
+
+void 
+BridgeNetDevice::SetLinkChangeCallback (Callback<void> callback)
+{}
+
+
+bool 
+BridgeNetDevice::IsBroadcast (void) const
+{
+  return true;
+}
+
+
+Address
+BridgeNetDevice::GetBroadcast (void) const
+{
+  return Mac48Address ("ff:ff:ff:ff:ff:ff");
+}
+
+bool
+BridgeNetDevice::IsMulticast (void) const
+{
+  return true;
+}
+
+
+Address
+BridgeNetDevice::GetMulticast (void) const
+{
+  return Mac48Address ("01:00:5e:00:00:00");
+}
+
+
+Address
+BridgeNetDevice::MakeMulticastAddress (Ipv4Address multicastGroup) const
+{
+ NS_LOG_FUNCTION (this << multicastGroup);
+//
+// First, get the generic multicast address.
+//
+  Address hardwareDestination = GetMulticast ();
+
+  NS_LOG_LOGIC ("Device multicast address: " << hardwareDestination);
+//
+// It's our address, and we know we're playing with an EUI-48 address here
+// primarily since we know that by construction, but also since the parameter
+// is an Ipv4Address.
+//
+  Mac48Address etherAddr = Mac48Address::ConvertFrom (hardwareDestination);
+//
+// We now have the multicast address in an abstract 48-bit container.  We 
+// need to pull it out so we can play with it.  When we're done, we have the 
+// high order bits in etherBuffer[0], etc.
+//
+  uint8_t etherBuffer[6];
+  etherAddr.CopyTo (etherBuffer);
+//
+// Now we need to pull the raw bits out of the Ipv4 destination address.
+//
+  uint8_t ipBuffer[4];
+  multicastGroup.Serialize (ipBuffer);
+//
+// RFC 1112 says that an Ipv4 host group address is mapped to an EUI-48
+// multicast address by placing the low-order 23-bits of the IP address into 
+// the low-order 23 bits of the Ethernet multicast address 
+// 01-00-5E-00-00-00 (hex). 
+//
+  etherBuffer[3] |= ipBuffer[1] & 0x7f;
+  etherBuffer[4] = ipBuffer[2];
+  etherBuffer[5] = ipBuffer[3];
+//
+// Now, etherBuffer has the desired ethernet multicast address.  We have to
+// suck these bits back into the Mac48Address,
+//
+  etherAddr.CopyFrom (etherBuffer);
+//
+// Implicit conversion (operator Address ()) is defined for Mac48Address, so
+// use it by just returning the EUI-48 address which is automagically converted
+// to an Address.
+//
+  NS_LOG_LOGIC ("multicast address is " << etherAddr);
+
+  return etherAddr;
+}
+
+
+bool 
+BridgeNetDevice::IsPointToPoint (void) const
+{
+  return false;
+}
+
+
+bool 
+BridgeNetDevice::Send (Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber)
+{
+  for (std::vector< Ptr<NetDevice> >::iterator iter = m_ports.begin ();
+         iter != m_ports.end (); iter++)
+    {
+      Ptr<NetDevice> port = *iter;
+      port->SendFrom (packet, m_address, dest, protocolNumber);
+    }
+
+  return true;
+}
+
+bool 
+BridgeNetDevice::SendFrom (Ptr<Packet> packet, const Address& src, const Address& dest, uint16_t protocolNumber)
+{
+  for (std::vector< Ptr<NetDevice> >::iterator iter = m_ports.begin ();
+         iter != m_ports.end (); iter++)
+    {
+      Ptr<NetDevice> port = *iter;
+      port->SendFrom (packet, src, dest, protocolNumber);
+    }
+
+  return true;
+}
+
+
+Ptr<Node> 
+BridgeNetDevice::GetNode (void) const
+{
+  return m_node;
+}
+
+
+void 
+BridgeNetDevice::SetNode (Ptr<Node> node)
+{
+  m_node = node;
+}
+
+
+bool 
+BridgeNetDevice::NeedsArp (void) const
+{
+  return true;
+}
+
+
+void 
+BridgeNetDevice::SetReceiveCallback (NetDevice::ReceiveCallback cb)
+{
+  m_rxCallback = cb;
+}
+
+void 
+BridgeNetDevice::SetPromiscReceiveCallback (NetDevice::PromiscReceiveCallback cb)
+{
+  m_promiscRxCallback = cb;
+}
+
+bool
+BridgeNetDevice::SupportsPromiscuous () const
+{
+  return true;
+}
+
+
+void
+BridgeNetDevice::DoDispose (void)
+{
+  m_node = 0;
+  NetDevice::DoDispose ();
+}
+
+
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/devices/bridge/bridge-net-device.h	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,107 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ *
+ * Author: Gustavo Carneiro  <gjc@inescporto.pt>
+ */
+#ifndef BRIDGE_NET_DEVICE_H
+#define BRIDGE_NET_DEVICE_H
+
+#include "ns3/net-device.h"
+#include "ns3/mac48-address.h"
+#include "ns3/nstime.h"
+#include "ns3/bridge-channel.h"
+#include <stdint.h>
+#include <string>
+#include <map>
+
+namespace ns3 {
+
+class Node;
+
+/**
+ * \ingroup netdevice
+ * 
+ * \brief bridge net device for bridge things and testing
+ */
+class BridgeNetDevice : public NetDevice
+{
+public:
+  static TypeId GetTypeId (void);
+  BridgeNetDevice ();
+
+  void AddBridgePort (Ptr<NetDevice> bridgePort);
+
+  // inherited from NetDevice base class.
+  virtual void SetName(const std::string name);
+  virtual std::string GetName(void) const;
+  virtual void SetIfIndex(const uint32_t index);
+  virtual uint32_t GetIfIndex(void) const;
+  virtual Ptr<Channel> GetChannel (void) const;
+  virtual Address GetAddress (void) const;
+  virtual bool SetMtu (const uint16_t mtu);
+  virtual uint16_t GetMtu (void) const;
+  virtual bool IsLinkUp (void) const;
+  virtual void SetLinkChangeCallback (Callback<void> callback);
+  virtual bool IsBroadcast (void) const;
+  virtual Address GetBroadcast (void) const;
+  virtual bool IsMulticast (void) const;
+  virtual Address GetMulticast (void) const;
+  virtual Address MakeMulticastAddress (Ipv4Address multicastGroup) const;
+  virtual bool IsPointToPoint (void) const;
+  virtual bool Send (Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber);
+  virtual bool SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
+  virtual Ptr<Node> GetNode (void) const;
+  virtual void SetNode (Ptr<Node> node);
+  virtual bool NeedsArp (void) const;
+  virtual void SetReceiveCallback (NetDevice::ReceiveCallback cb);
+  virtual void SetPromiscReceiveCallback (NetDevice::PromiscReceiveCallback cb);
+  virtual bool SupportsPromiscuous () const;
+
+protected:
+  virtual void DoDispose (void);
+
+  void ReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol,
+                          Address const &source, Address const &destination, PacketType packetType);
+  void ForwardUnicast (Ptr<NetDevice> incomingPort, Ptr<Packet> packet,
+                       uint16_t protocol, Mac48Address src, Mac48Address dst);
+  void ForwardBroadcast (Ptr<NetDevice> incomingPort, Ptr<Packet> packet,
+                         uint16_t protocol, Mac48Address src, Mac48Address dst);
+  void Learn (Mac48Address source, Ptr<NetDevice> port);
+  Ptr<NetDevice> GetLearnedState (Mac48Address source);
+
+private:
+  NetDevice::ReceiveCallback m_rxCallback;
+  NetDevice::PromiscReceiveCallback m_promiscRxCallback;
+
+  Mac48Address m_address;
+  Time m_expirationTime; // time it takes for learned MAC state to expire
+  struct LearnedState
+  {
+    Ptr<NetDevice> associatedPort;
+    Time expirationTime;
+  };
+  std::map<Mac48Address, LearnedState> m_learnState;
+  Ptr<Node> m_node;
+  Ptr<BridgeChannel> m_channel;
+  std::string m_name;
+  std::vector< Ptr<NetDevice> > m_ports;
+  uint32_t m_ifIndex;
+  uint16_t m_mtu;
+  bool m_enableLearning;
+};
+
+} // namespace ns3
+
+#endif /* BRIDGE_NET_DEVICE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/devices/bridge/waf	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,1 @@
+exec "`dirname "$0"`"/../../../waf "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/devices/bridge/wscript	Mon Jul 21 15:53:03 2008 -0700
@@ -0,0 +1,14 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+    obj = bld.create_ns3_module('bridge', ['node'])
+    obj.source = [
+        'bridge-net-device.cc',
+        'bridge-channel.cc',
+        ]
+    headers = bld.create_obj('ns3header')
+    headers.module = 'bridge'
+    headers.source = [
+        'bridge-net-device.h',
+        'bridge-channel.h',
+        ]
--- a/src/devices/csma/csma-channel.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/devices/csma/csma-channel.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -232,12 +232,14 @@
   NS_LOG_LOGIC ("Receive");
   
   std::vector<CsmaDeviceRec>::iterator it;
+  uint32_t devId = 0;
   for (it = m_deviceList.begin (); it < m_deviceList.end(); it++) 
     {
       if (it->IsActive ())
       {
-        it->devicePtr->Receive (m_currentPkt->Copy ());
+        it->devicePtr->Receive (m_currentPkt->Copy (), m_deviceList[m_currentSrc].devicePtr);
       }
+      devId++;
     }
   m_state = IDLE;
 }
--- a/src/devices/csma/csma-net-device.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/devices/csma/csma-net-device.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -173,6 +173,7 @@
   void 
 CsmaNetDevice::AddHeader (
   Ptr<Packet> p, 
+  Mac48Address source,
   Mac48Address dest,
   uint16_t protocolNumber)
 {
@@ -183,7 +184,6 @@
       return;
     }
 
-  Mac48Address source = Mac48Address::ConvertFrom (GetAddress ());
   EthernetHeader header (false);
   header.SetSource (source);
   header.SetDestination (dest);
@@ -452,12 +452,23 @@
   m_receiveErrorModel = em; 
 }
 
-  void
-CsmaNetDevice::Receive (Ptr<Packet> packet)
+void
+CsmaNetDevice::Receive (Ptr<Packet> packet, Ptr<CsmaNetDevice> senderDevice)
 {
   NS_LOG_FUNCTION_NOARGS ();
   NS_LOG_LOGIC ("UID is " << packet->GetUid ());
 
+
+  //
+  // We never forward up packets that we sent. Real devices don't do this since
+  // their receivers are disabled during send, so we don't. Drop the packet
+  // silently (no tracing) since it would really never get here in a real device.
+  // 
+  if (senderDevice == this)
+    {
+      return;
+    }
+
 // 
 // Only receive if the send side of net device is enabled
 //
@@ -470,6 +481,10 @@
   if (m_encapMode == RAW)
     {
       m_rxTrace (packet);
+      if (!m_promiscRxCallback.IsNull ())
+        {
+          m_promiscRxCallback (this, packet, 0, GetBroadcast (), GetAddress (), PACKET_HOST);
+        }
       m_rxCallback (this, packet, 0, GetBroadcast ());
       return;
     }
@@ -491,17 +506,6 @@
   NS_LOG_LOGIC ("Pkt destination is " << header.GetDestination ());
 
 //
-// We never forward up packets that we sent.  Real devices don't do this since
-// their receivers are disabled during send, so we don't.  Drop the packet 
-// silently (no tracing) since it would really never get here in a real device.
-//
-  if (header.GetSource () == GetAddress ())
-    {
-      NS_LOG_LOGIC ("Ignoring packet sourced by this device");
-      return;
-    }
-
-//
 // An IP host group address is mapped to an Ethernet multicast address
 // by placing the low-order 23-bits of the IP address into the low-order
 // 23 bits of the Ethernet multicast address 01-00-5E-00-00-00 (hex).
@@ -522,15 +526,6 @@
   Mac48Address broadcast = Mac48Address::ConvertFrom (GetBroadcast ());
   Mac48Address destination = Mac48Address::ConvertFrom (GetAddress ());
 
-  if ((header.GetDestination () != broadcast) &&
-      (mcDest != multicast) &&
-      (header.GetDestination () != destination))
-    {
-      NS_LOG_LOGIC ("Dropping pkt ");
-      m_dropTrace (packet);
-      return;
-    }
-
   if (m_receiveErrorModel && m_receiveErrorModel->IsCorrupt (packet) )
     {
       NS_LOG_LOGIC ("Dropping pkt due to error model ");
@@ -561,8 +556,38 @@
           NS_ASSERT (false);
           break;
         }
-      m_rxTrace (originalPacket);
-      m_rxCallback (this, packet, protocol, header.GetSource ());
+
+      PacketType packetType;
+      
+      if (header.GetDestination () == broadcast)
+        {
+          packetType = PACKET_BROADCAST;
+          m_rxTrace (originalPacket);
+        }
+      else if (mcDest == multicast)
+        {
+          packetType = PACKET_MULTICAST;          
+          m_rxTrace (originalPacket);
+        }
+      else if (header.GetDestination () == destination)
+        {
+          packetType = PACKET_HOST;
+          m_rxTrace (originalPacket);
+        }
+      else
+        {
+          packetType = PACKET_OTHERHOST;
+        }
+      
+      if (!m_promiscRxCallback.IsNull ())
+        {
+          m_promiscRxCallback (this, packet, protocol, header.GetSource (), header.GetDestination (), packetType);
+        }
+
+      if (packetType != PACKET_OTHERHOST)
+        {
+          m_rxCallback (this, packet, protocol, header.GetSource ());
+        }
     }
 }
 
@@ -726,11 +751,19 @@
   return false;
 }
 
-  bool 
-CsmaNetDevice::Send(
-  Ptr<Packet> packet, 
-  const Address& dest, 
-  uint16_t protocolNumber)
+bool
+CsmaNetDevice::Send (Ptr<Packet> packet, 
+                     const Address& dest, 
+                     uint16_t protocolNumber)
+{
+  return SendFrom (packet, m_address, dest, protocolNumber);
+}
+
+bool
+CsmaNetDevice::SendFrom (Ptr<Packet> packet,
+                         const Address& src,
+                         const Address& dest,
+                         uint16_t protocolNumber)
 {
   NS_LOG_FUNCTION_NOARGS ();
   NS_LOG_LOGIC ("p=" << packet);
@@ -747,7 +780,8 @@
     }
 
   Mac48Address destination = Mac48Address::ConvertFrom (dest);
-  AddHeader (packet, destination, protocolNumber);
+  Mac48Address source = Mac48Address::ConvertFrom (src);
+  AddHeader (packet, source, destination, protocolNumber);
 
 //
 // Place the packet to be sent on the send queue
@@ -785,6 +819,25 @@
 CsmaNetDevice::SetNode (Ptr<Node> node)
 {
   m_node = node;
+  int count = -1;
+  if (m_name.size () == 0)
+    {
+      for (uint32_t i = 0; i < node->GetNDevices (); i++)
+        {
+          Ptr<NetDevice> dev = node->GetDevice (i);
+          if (dynamic_cast<CsmaNetDevice*> (PeekPointer (dev)))
+            {
+              count++;
+              if (dev == this)
+                {
+                  break;
+                }
+            }
+        }
+      std::ostringstream s;
+      s << "eth" << count;
+      m_name = s.str ();
+    }
 }
 
   bool 
@@ -806,4 +859,16 @@
   m_rxCallback = cb;
 }
 
+void 
+CsmaNetDevice::SetPromiscReceiveCallback (NetDevice::PromiscReceiveCallback cb)
+{
+  m_promiscRxCallback = cb;
+}
+
+bool 
+CsmaNetDevice::SupportsPromiscuous () const
+{
+  return true;
+}
+
 } // namespace ns3
--- a/src/devices/csma/csma-net-device.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/devices/csma/csma-net-device.h	Mon Jul 21 15:53:03 2008 -0700
@@ -158,8 +158,9 @@
    *
    * @see CsmaChannel
    * \param p a reference to the received packet
+   * \param sender the CsmaNetDevice that transmitted the packet in the first place
    */
-  void Receive (Ptr<Packet> p);
+  void Receive (Ptr<Packet> p, Ptr<CsmaNetDevice> sender);
 
   /**
    * Is the send side of the network device enabled?
@@ -251,6 +252,12 @@
     uint16_t protocolNumber);
 
   /**
+   * Start sending a packet down the channel, with MAC spoofing
+   */
+  virtual bool SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, 
+                         uint16_t protocolNumber);
+
+  /**
    * Get the node to which this device is attached.
    *
    * \returns Ptr to the Node to which the device is attached.
@@ -280,6 +287,10 @@
    */
   virtual void SetReceiveCallback (NetDevice::ReceiveCallback cb);
 
+
+  virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
+  virtual bool SupportsPromiscuous (void) const;
+
 protected:
   /**
    * Perform any object release functionality required to break reference 
@@ -306,7 +317,7 @@
    * \param protocolNumber In some protocols, identifies the type of
    * payload contained in this packet.
    */
-  void AddHeader (Ptr<Packet> p, Mac48Address dest, uint16_t protocolNumber);
+  void AddHeader (Ptr<Packet> p, Mac48Address source, Mac48Address dest, uint16_t protocolNumber);
 
   /**
    * Removes, from a packet of data, all headers and trailers that
@@ -526,6 +537,10 @@
    * The callback used to notify higher layers that a packet has been received.
    */
   NetDevice::ReceiveCallback m_rxCallback;
+  /**
+   * The callback used to notify higher layers that a packet has been received in promiscuous mode.
+   */
+  NetDevice::PromiscReceiveCallback m_promiscRxCallback;
 
   /**
    * The interface index (really net evice index) that has been assigned to 
--- a/src/devices/point-to-point/point-to-point-net-device.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/devices/point-to-point/point-to-point-net-device.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -434,6 +434,15 @@
     }
 }
 
+bool
+PointToPointNetDevice::SendFrom (Ptr<Packet> packet, 
+                                 const Address &source, 
+                                 const Address &dest, 
+                                 uint16_t protocolNumber)
+{
+  return Send (packet, dest, protocolNumber);
+}
+
   Ptr<Node> 
 PointToPointNetDevice::GetNode (void) const
 {
--- a/src/devices/point-to-point/point-to-point-net-device.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/devices/point-to-point/point-to-point-net-device.h	Mon Jul 21 15:53:03 2008 -0700
@@ -167,8 +167,8 @@
 
   virtual bool IsPointToPoint (void) const;
 
-  virtual bool Send(Ptr<Packet> packet, const Address &dest, 
-    uint16_t protocolNumber);
+  virtual bool Send(Ptr<Packet> packet, const Address &dest, uint16_t protocolNumber);
+  virtual bool SendFrom(Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
 
   virtual Ptr<Node> GetNode (void) const;
   virtual void SetNode (Ptr<Node> node);
--- a/src/devices/wifi/wifi-net-device.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/devices/wifi/wifi-net-device.h	Mon Jul 21 15:53:03 2008 -0700
@@ -113,7 +113,7 @@
   Ptr<WifiChannel> m_channel;
   Ptr<WifiMac> m_mac;
   Ptr<WifiRemoteStationManager> m_stationManager;
-  Callback <bool,Ptr<NetDevice>,Ptr<Packet>,uint16_t,const Address &> m_forwardUp;
+  ReceiveCallback m_forwardUp;
   TracedCallback<Ptr<const Packet>, Mac48Address> m_rxLogger;
   TracedCallback<Ptr<const Packet>, Mac48Address> m_txLogger;
   uint32_t m_ifIndex;
--- a/src/internet-stack/arp-l3-protocol.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/internet-stack/arp-l3-protocol.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -116,9 +116,11 @@
 }
 
 void 
-ArpL3Protocol::Receive(Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol, const Address &from)
+ArpL3Protocol::Receive(Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol, const Address &from,
+                       const Address &to, NetDevice::PacketType packetType)
 {
   NS_LOG_FUNCTION_NOARGS ();
+
   Ptr<ArpCache> cache = FindCache (device);
   ArpHeader arp;
   packet->RemoveHeader (arp);
--- a/src/internet-stack/arp-l3-protocol.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/internet-stack/arp-l3-protocol.h	Mon Jul 21 15:53:03 2008 -0700
@@ -54,7 +54,8 @@
   /**
    * \brief Recieve a packet
    */
-  void Receive(Ptr<NetDevice> device, Ptr<Packet> p, uint16_t protocol, const Address &from);
+  void Receive(Ptr<NetDevice> device, Ptr<Packet> p, uint16_t protocol, const Address &from, const Address &to,
+               NetDevice::PacketType packetType);
   /**
    * \brief Perform an ARP lookup
    * \param p
--- a/src/internet-stack/ipv4-l3-protocol.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/internet-stack/ipv4-l3-protocol.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -449,7 +449,8 @@
 }  
 
 void 
-Ipv4L3Protocol::Receive( Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol, const Address &from)
+Ipv4L3Protocol::Receive( Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol, const Address &from,
+                         const Address &to, NetDevice::PacketType packetType)
 {
   NS_LOG_FUNCTION (this << &device << packet << protocol <<  from);
 
--- a/src/internet-stack/ipv4-l3-protocol.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/internet-stack/ipv4-l3-protocol.h	Mon Jul 21 15:53:03 2008 -0700
@@ -25,6 +25,7 @@
 #include <stdint.h>
 #include "ns3/ipv4-address.h"
 #include "ns3/ptr.h"
+#include "ns3/net-device.h"
 #include "ns3/ipv4.h"
 #include "ns3/traced-callback.h"
 #include "ns3/ipv4-header.h"
@@ -82,7 +83,8 @@
    *    - implement a per-NetDevice ARP cache
    *    - send back arp replies on the right device
    */
-  void Receive( Ptr<NetDevice> device, Ptr<Packet> p, uint16_t protocol, const Address &from);
+  void Receive( Ptr<NetDevice> device, Ptr<Packet> p, uint16_t protocol, const Address &from,
+                const Address &to, NetDevice::PacketType packetType);
 
   /**
    * \param packet packet to send
--- a/src/internet-stack/ipv4-loopback-interface.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/internet-stack/ipv4-loopback-interface.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -73,7 +73,10 @@
     m_node->GetObject<Ipv4L3Protocol> ();
 
   ipv4->Receive (0, packet, Ipv4L3Protocol::PROT_NUMBER, 
-                 Mac48Address ("ff:ff:ff:ff:ff:ff"));
+                 Mac48Address ("ff:ff:ff:ff:ff:ff"),
+                 Mac48Address ("ff:ff:ff:ff:ff:ff"),
+                 NetDevice::PACKET_HOST // note: linux uses PACKET_LOOPBACK here
+                 );
 }
 
 }//namespace ns3
--- a/src/node/net-device.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/net-device.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -38,4 +38,25 @@
 NetDevice::~NetDevice ()
 {}
 
+bool
+NetDevice::SupportsPromiscuous () const
+{
+  return false;
+}
+
+void
+NetDevice::SetPromiscReceiveCallback (PromiscReceiveCallback cb)
+{
+  // assert that the virtual method was overridden in a subclass if it
+  // claims to support promiscuous mode.
+  NS_ASSERT (!SupportsPromiscuous ());
+}
+
+bool
+NetDevice::SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber)
+{
+  NS_FATAL_ERROR ("NetDevice::SendFrom not implemented for " << GetInstanceTypeId ().GetName ());
+  return false;
+}
+
 } // namespace ns3
--- a/src/node/net-device.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/net-device.h	Mon Jul 21 15:53:03 2008 -0700
@@ -216,6 +216,20 @@
    */
   virtual bool Send(Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber) = 0;
   /**
+   * \param packet packet sent from above down to Network Device
+   * \param source source mac address (so called "MAC spoofing")
+   * \param dest mac address of the destination (already resolved)
+   * \param protocolNumber identifies the type of payload contained in
+   *        this packet. Used to call the right L3Protocol when the packet
+   *        is received.
+   * 
+   *  Called from higher layer to send packet into Network Device
+   *  with the specified source and destination Addresses.
+   * 
+   * \return whether the Send operation succeeded 
+   */
+  virtual bool SendFrom(Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
+  /**
    * \returns the node base class which contains this network
    *          interface.
    *
@@ -240,13 +254,23 @@
    */
   virtual bool NeedsArp (void) const = 0;
 
+
+  /** Packet types */
+  enum PacketType
+    {
+      PACKET_HOST = 1,  /* To us                */
+      PACKET_BROADCAST, /* To all               */
+      PACKET_MULTICAST, /* To group             */
+      PACKET_OTHERHOST, /* To someone else      */
+    };
+
   /**
    * \param device a pointer to the net device which is calling this callback
    * \param packet the packet received
    * \param protocol the 16 bit protocol number associated with this packet.
    *        This protocol number is expected to be the same protocol number
    *        given to the Send method by the user on the sender side.
-   * \param address the address of the sender
+   * \param sender the address of the sender
    * \returns true if the callback could handle the packet successfully, false
    *          otherwise.
    */
@@ -259,6 +283,39 @@
    */
   virtual void SetReceiveCallback (ReceiveCallback cb) = 0;
 
+
+  /**
+   * \param device a pointer to the net device which is calling this callback
+   * \param packet the packet received
+   * \param protocol the 16 bit protocol number associated with this packet.
+   *        This protocol number is expected to be the same protocol number
+   *        given to the Send method by the user on the sender side.
+   * \param sender the address of the sender
+   * \param receiver the address of the receiver
+   * \param packetType type of packet received (broadcast/multicast/unicast/otherhost)
+   * \returns true if the callback could handle the packet successfully, false
+   *          otherwise.
+   */
+  typedef Callback< bool, Ptr<NetDevice>, Ptr<Packet>, uint16_t,
+                    const Address &, const Address &, PacketType > PromiscReceiveCallback;
+
+  /**
+   * \param cb callback to invoke whenever a packet has been received in promiscuous mode and must
+   *        be forwarded to the higher layers.
+   * 
+   * Enables netdevice promiscuous mode and sets the callback that
+   * will handle promiscuous mode packets.  Note, promiscuous mode
+   * packets means _all_ packets, including those packets that can be
+   * sensed by the netdevice but which are intended to be received by
+   * other hosts.
+   */
+  virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
+
+  /**
+   * \return true if this interface supports a promiscuous mode, false otherwise.
+   */
+  virtual bool SupportsPromiscuous (void) const;
+
 };
 
 } // namespace ns3
--- a/src/node/node.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/node.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -26,6 +26,9 @@
 #include "ns3/simulator.h"
 #include "ns3/object-vector.h"
 #include "ns3/uinteger.h"
+#include "ns3/log.h"
+
+NS_LOG_COMPONENT_DEFINE ("Node");
 
 namespace ns3{
 
@@ -95,7 +98,7 @@
   m_devices.push_back (device);
   device->SetNode (this);
   device->SetIfIndex(index);
-  device->SetReceiveCallback (MakeCallback (&Node::ReceiveFromDevice, this));
+  device->SetReceiveCallback (MakeCallback (&Node::NonPromiscReceiveFromDevice, this));
   NotifyDeviceAdded (device);
   return index;
 }
@@ -170,12 +173,44 @@
 void
 Node::RegisterProtocolHandler (ProtocolHandler handler, 
                                uint16_t protocolType,
-                               Ptr<NetDevice> device)
+                               Ptr<NetDevice> device,
+                               bool promiscuous)
 {
   struct Node::ProtocolHandlerEntry entry;
   entry.handler = handler;
   entry.protocol = protocolType;
   entry.device = device;
+  entry.promiscuous = promiscuous;
+
+  // On demand enable promiscuous mode in netdevices
+  if (promiscuous)
+    {
+      if (device == 0)
+        {
+          for (std::vector<Ptr<NetDevice> >::iterator i = m_devices.begin ();
+               i != m_devices.end (); i++)
+            {
+              Ptr<NetDevice> dev = *i;
+              if (dev->SupportsPromiscuous ())
+                {
+                  dev->SetPromiscReceiveCallback (MakeCallback (&Node::PromiscReceiveFromDevice, this));
+                }
+            }
+        }
+      else
+        {
+          if (device->SupportsPromiscuous ())
+            {
+              device->SetPromiscReceiveCallback (MakeCallback (&Node::PromiscReceiveFromDevice, this));
+            }
+          else
+            {
+              NS_LOG_WARN ("Protocol handler request promiscuous mode for a specific netdevice,"
+                           " but netdevice does not support promiscuous mode.");
+            }
+        }
+    }
+
   m_handlers.push_back (entry);
 }
 
@@ -194,9 +229,26 @@
 }
 
 bool
-Node::ReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet> packet, 
-                         uint16_t protocol, const Address &from)
+Node::PromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol,
+                                const Address &from, const Address &to, NetDevice::PacketType packetType)
 {
+  NS_LOG_FUNCTION(device->GetName ());
+  return ReceiveFromDevice (device, packet, protocol, from, to, packetType, true);
+}
+
+bool
+Node::NonPromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol,
+                                   const Address &from)
+{
+  NS_LOG_FUNCTION(device->GetName ());
+  return ReceiveFromDevice (device, packet, protocol, from, from, NetDevice::PacketType (0), false);
+}
+
+bool
+Node::ReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet> packet, uint16_t protocol,
+                         const Address &from, const Address &to, NetDevice::PacketType packetType, bool promiscuous)
+{
+  NS_LOG_FUNCTION(device->GetName ());
   bool found = false;
   // if there are (potentially) multiple handlers, we need to copy the
   // packet before passing it to each handler, because handlers may
@@ -212,8 +264,11 @@
           if (i->protocol == 0 || 
               i->protocol == protocol)
             {
-              i->handler (device, (copyNeeded ? packet->Copy () : packet), protocol, from);
-              found = true;
+              if (promiscuous == i->promiscuous)
+                {
+                  i->handler (device, (copyNeeded ? packet->Copy () : packet), protocol, from, to, packetType);
+                  found = true;
+                }
             }
         }
     }
--- a/src/node/node.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/node.h	Mon Jul 21 15:53:03 2008 -0700
@@ -26,10 +26,10 @@
 #include "ns3/object.h"
 #include "ns3/callback.h"
 #include "ns3/ptr.h"
+#include "ns3/net-device.h"
 
 namespace ns3 {
 
-class NetDevice;
 class Application;
 class Packet;
 class Address;
@@ -136,8 +136,23 @@
 
   /**
    * A protocol handler
+   *
+   * \param device a pointer to the net device which received the packet
+   * \param packet the packet received
+   * \param protocol the 16 bit protocol number associated with this packet.
+   *        This protocol number is expected to be the same protocol number
+   *        given to the Send method by the user on the sender side.
+   * \param sender the address of the sender
+   * \param receiver the address of the receiver; Note: this value is
+   *                 only valid for promiscuous mode protocol
+   *                 handlers.
+   * \param packetType type of packet received
+   *                   (broadcast/multicast/unicast/otherhost); Note:
+   *                   this value is only valid for promiscuous mode
+   *                   protocol handlers.
    */
-  typedef Callback<void,Ptr<NetDevice>, Ptr<Packet>,uint16_t,const Address &> ProtocolHandler;
+  typedef Callback<void,Ptr<NetDevice>, Ptr<Packet>,uint16_t,const Address &,
+                   const Address &, NetDevice::PacketType> ProtocolHandler;
   /**
    * \param handler the handler to register
    * \param protocolType the type of protocol this handler is 
@@ -149,10 +164,12 @@
    * \param device the device attached to this handler. If the
    *        value is zero, the handler is attached to all
    *        devices on this node.
+   * \param promiscuous whether to register a promiscuous mode handler
    */
   void RegisterProtocolHandler (ProtocolHandler handler, 
                                 uint16_t protocolType,
-                                Ptr<NetDevice> device);
+                                Ptr<NetDevice> device,
+                                bool promiscuous=false);
   /**
    * \param handler the handler to unregister
    *
@@ -161,6 +178,7 @@
    */
   void UnregisterProtocolHandler (ProtocolHandler handler);
 
+
 protected:
   /**
    * The dispose method. Subclasses must override this method
@@ -177,14 +195,19 @@
    */
   virtual void NotifyDeviceAdded (Ptr<NetDevice> device);
 
-  bool ReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet>, 
-                          uint16_t protocol, const Address &from);
+  bool NonPromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet>, uint16_t protocol, const Address &from);
+  bool PromiscReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet>, uint16_t protocol,
+                                 const Address &from, const Address &to, NetDevice::PacketType packetType);
+  bool ReceiveFromDevice (Ptr<NetDevice> device, Ptr<Packet>, uint16_t protocol,
+                          const Address &from, const Address &to, NetDevice::PacketType packetType, bool promisc);
+
   void Construct (void);
 
   struct ProtocolHandlerEntry {
     ProtocolHandler handler;
+    Ptr<NetDevice> device;
     uint16_t protocol;
-    Ptr<NetDevice> device;
+    bool promiscuous;
   };
   typedef std::vector<struct Node::ProtocolHandlerEntry> ProtocolHandlerList;
   uint32_t    m_id;         // Node id for this node
@@ -192,6 +215,7 @@
   std::vector<Ptr<NetDevice> > m_devices;
   std::vector<Ptr<Application> > m_applications;
   ProtocolHandlerList m_handlers;
+
 };
 
 } //namespace ns3
--- a/src/node/packet-socket.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/packet-socket.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -345,13 +345,19 @@
 
 void 
 PacketSocket::ForwardUp (Ptr<NetDevice> device, Ptr<Packet> packet, 
-                         uint16_t protocol, const Address &from)
+                         uint16_t protocol, const Address &from,
+                         const Address &to, NetDevice::PacketType packetType)
 {
   NS_LOG_FUNCTION_NOARGS ();
   if (m_shutdownRecv)
     {
       return;
     }
+  if (packetType != NetDevice::PACKET_HOST)
+    {
+      return;
+    }
+
 
   PacketSocketAddress address;
   address.SetPhysicalAddress (from);
--- a/src/node/packet-socket.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/packet-socket.h	Mon Jul 21 15:53:03 2008 -0700
@@ -27,6 +27,7 @@
 #include "ns3/traced-callback.h"
 #include "ns3/ptr.h"
 #include "ns3/socket.h"
+#include "ns3/net-device.h"
 
 namespace ns3 {
 
@@ -103,7 +104,8 @@
 
 private:
   void ForwardUp (Ptr<NetDevice> device, Ptr<Packet> packet, 
-                  uint16_t protocol, const Address &from);
+                  uint16_t protocol, const Address &from, const Address &to,
+                  NetDevice::PacketType packetType);
   int DoBind (const PacketSocketAddress &address);
   uint32_t GetMinMtu (PacketSocketAddress ad) const;
   virtual void DoDispose (void);
--- a/src/node/simple-net-device.cc	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/simple-net-device.cc	Mon Jul 21 15:53:03 2008 -0700
@@ -46,10 +46,20 @@
 SimpleNetDevice::Receive (Ptr<Packet> packet, uint16_t protocol, 
 			  Mac48Address to, Mac48Address from)
 {
-  if (to == m_address || to == Mac48Address::GetBroadcast ())
+  NetDevice::PacketType packetType;
+  if (to == m_address)
+    {
+      packetType = NetDevice::PACKET_HOST;
+    }
+  else if (to == Mac48Address::GetBroadcast ())
     {
-      m_rxCallback (this, packet, protocol, from);
+      packetType = NetDevice::PACKET_HOST;
     }
+  else
+    {
+      NS_FATAL_ERROR ("Weird packet destination " << to);
+    }
+  m_rxCallback (this, packet, protocol, from);
 }
 
 void 
@@ -151,6 +161,15 @@
   m_channel->Send (packet, protocolNumber, to, m_address, this);
   return true;
 }
+bool 
+SimpleNetDevice::SendFrom(Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber)
+{
+  Mac48Address to = Mac48Address::ConvertFrom (dest);
+  Mac48Address from = Mac48Address::ConvertFrom (source);
+  m_channel->Send (packet, protocolNumber, to, from, this);
+  return true;
+}
+
 Ptr<Node> 
 SimpleNetDevice::GetNode (void) const
 {
--- a/src/node/simple-net-device.h	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/node/simple-net-device.h	Mon Jul 21 15:53:03 2008 -0700
@@ -63,6 +63,7 @@
   virtual Address MakeMulticastAddress (Ipv4Address multicastGroup) const;
   virtual bool IsPointToPoint (void) const;
   virtual bool Send(Ptr<Packet> packet, const Address& dest, uint16_t protocolNumber);
+  virtual bool SendFrom(Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
   virtual Ptr<Node> GetNode (void) const;
   virtual void SetNode (Ptr<Node> node);
   virtual bool NeedsArp (void) const;
--- a/src/wscript	Fri Jul 18 21:59:43 2008 -0700
+++ b/src/wscript	Mon Jul 21 15:53:03 2008 -0700
@@ -27,6 +27,7 @@
     'mobility',
     'devices/wifi',
     'helper',
+    'devices/bridge',
     )
 
 def set_options(opt):