New PyBindGen version and API rescan: adds missing copy constructors, and generates __copy__ methods so that python's copy.copy() works on our objects.
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Tue, 19 Aug 2008 17:48:09 +0100
changeset 3544 3685ab98e4b2
parent 3543 04315a10b9c1
child 3545 9358e0be63d2
New PyBindGen version and API rescan: adds missing copy constructors, and generates __copy__ methods so that python's copy.copy() works on our objects.
bindings/python/ns3_module_bridge.py
bindings/python/ns3_module_common.py
bindings/python/ns3_module_contrib.py
bindings/python/ns3_module_core.py
bindings/python/ns3_module_csma.py
bindings/python/ns3_module_global_routing.py
bindings/python/ns3_module_helper.py
bindings/python/ns3_module_internet_stack.py
bindings/python/ns3_module_mobility.py
bindings/python/ns3_module_node.py
bindings/python/ns3_module_olsr.py
bindings/python/ns3_module_onoff.py
bindings/python/ns3_module_packet_sink.py
bindings/python/ns3_module_point_to_point.py
bindings/python/ns3_module_simulator.py
bindings/python/ns3_module_udp_echo.py
bindings/python/ns3_module_wifi.py
bindings/python/wscript
--- a/bindings/python/ns3_module_bridge.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_bridge.py	Tue Aug 19 17:48:09 2008 +0100
@@ -215,6 +215,7 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('ns3::Mac48Address', 'source')], 
                    visibility='protected')
+    cls.add_copy_constructor()
     return
 
 def register_Ns3BridgeChannel_methods(root_module, cls):
@@ -239,6 +240,7 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_common.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_common.py	Tue Aug 19 17:48:09 2008 +0100
@@ -267,6 +267,7 @@
                    'void', 
                    [param('ns3::Tag&', 'tag')], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TagList_methods(root_module, cls):
@@ -316,6 +317,7 @@
                    'uint32_t', 
                    [], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TagListIteratorItem_methods(root_module, cls):
@@ -331,6 +333,7 @@
     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')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TagBuffer_methods(root_module, cls):
@@ -392,6 +395,7 @@
     cls.add_method('Read', 
                    'void', 
                    [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Buffer_methods(root_module, cls):
@@ -606,6 +610,7 @@
                    'uint32_t', 
                    [], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Chunk_methods(root_module, cls):
@@ -679,6 +684,7 @@
                    [param('std::ostream&', 'os')], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PcapWriter_methods(root_module, cls):
@@ -708,10 +714,12 @@
     cls.add_method('WritePacket', 
                    'void', 
                    [param('ns3::Ptr< const ns3::Packet >', 'packet')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3DataRateChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ErrorModel_methods(root_module, cls):
@@ -753,6 +761,7 @@
                    'void', 
                    [], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Header_methods(root_module, cls):
@@ -848,6 +857,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3DataRateValue_methods(root_module, cls):
@@ -879,6 +889,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RateErrorModel_methods(root_module, cls):
@@ -936,6 +947,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_contrib.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_contrib.py	Tue Aug 19 17:48:09 2008 +0100
@@ -84,6 +84,7 @@
     cls.add_method('GenerateOutput', 
                    'void', 
                    [param('std::ostream&', 'os')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EventGarbageCollector_methods(root_module, cls):
@@ -93,6 +94,7 @@
     cls.add_method('Track', 
                    'void', 
                    [param('ns3::EventId', 'event')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3GnuplotDataset_methods(root_module, cls):
@@ -116,6 +118,7 @@
     cls.add_method('Add', 
                    'void', 
                    [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3GtkConfigStore_methods(root_module, cls):
@@ -125,6 +128,7 @@
     cls.add_method('Configure', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ConfigStore_methods(root_module, cls):
@@ -144,6 +148,7 @@
     cls.add_method('Configure', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3DelayJitterEstimation_methods(root_module, cls):
@@ -168,6 +173,7 @@
                    'ns3::Time', 
                    [], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_core.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_core.py	Tue Aug 19 17:48:09 2008 +0100
@@ -316,6 +316,7 @@
                    'double', 
                    [param('double', 's'), param('double', 'l'), param('double', 'mean')], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3GlobalValue_methods(root_module, cls):
@@ -365,6 +366,7 @@
                    '__gnu_cxx::__normal_iterator< ns3::GlobalValue* const*, std::vector< ns3::GlobalValue*, std::allocator< ns3::GlobalValue* > > >', 
                    [], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RefCountBase_methods(root_module, cls):
@@ -557,6 +559,7 @@
     ## type-id.h: ns3::TypeId::AttributeInfo::checker [variable]
     cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SystemWallClockMs_methods(root_module, cls):
@@ -570,6 +573,7 @@
     cls.add_method('End', 
                    'long long unsigned int', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3CallbackImplBase_methods(root_module, cls):
@@ -580,11 +584,13 @@
                    'bool', 
                    [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     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')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TraceSourceAccessor_methods(root_module, cls):
@@ -620,6 +626,7 @@
                    '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_copy_constructor()
     return
 
 def register_Ns3AttributeChecker_methods(root_module, cls):
@@ -655,10 +662,12 @@
                    'bool', 
                    [param('ns3::AttributeValue&', 'source', is_const=True), param('ns3::AttributeValue&', 'destination')], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomVariableChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SystemMutex_methods(root_module, cls):
@@ -672,6 +681,7 @@
     cls.add_method('Unlock', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3NormalVariable_methods(root_module, cls):
@@ -691,6 +701,7 @@
                    'double', 
                    [param('double', 'm'), param('double', 'v'), param('double', 'b')], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ObjectFactory_methods(root_module, cls):
@@ -750,6 +761,7 @@
                    'bool', 
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ParetoVariable_methods(root_module, cls):
@@ -766,6 +778,7 @@
                    'double', 
                    [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ConstantVariable_methods(root_module, cls):
@@ -777,6 +790,7 @@
     cls.add_method('SetConstant', 
                    'void', 
                    [param('double', 'c')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SystemThread_methods(root_module, cls):
@@ -800,6 +814,7 @@
     cls.add_method('Join', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EmpiricalVariable_methods(root_module, cls):
@@ -809,6 +824,7 @@
     cls.add_method('CDF', 
                    'void', 
                    [param('double', 'v'), param('double', 'c')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EnumChecker_methods(root_module, cls):
@@ -852,10 +868,12 @@
                    'bool', 
                    [param('ns3::AttributeValue&', 'src', is_const=True), param('ns3::AttributeValue&', 'dst')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Empty_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ObjectBase_methods(root_module, cls):
@@ -921,34 +939,42 @@
 
 def register_Ns3CommandLine_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntToType__6_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntToType__5_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntToType__4_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntToType__3_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntToType__2_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntToType__1_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntToType__0_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RngStream_methods(root_module, cls):
@@ -1025,11 +1051,13 @@
                    'double', 
                    [param('double', 'mu'), param('double', 'sigma')], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntEmpiricalVariable_methods(root_module, cls):
     ## random-variable.h: ns3::IntEmpiricalVariable::IntEmpiricalVariable() [constructor]
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PointerChecker_methods(root_module, cls):
@@ -1039,6 +1067,7 @@
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WeibullVariable_methods(root_module, cls):
@@ -1055,6 +1084,7 @@
                    'double', 
                    [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3CallbackBase_methods(root_module, cls):
@@ -1068,6 +1098,7 @@
     ## callback.h: ns3::CallbackBase::CallbackBase(ns3::Ptr<ns3::CallbackImplBase> impl) [constructor]
     cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], 
                         visibility='protected')
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ExponentialVariable_methods(root_module, cls):
@@ -1082,11 +1113,13 @@
                    'double', 
                    [param('double', 'm'), param('double', 'b', default_value='0')], 
                    is_static=True)
+    cls.add_copy_constructor()
     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')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3AttributeList_methods(root_module, cls):
@@ -1158,6 +1191,7 @@
                    'double', 
                    [param('double', 's'), param('double', 'l')], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Object_methods(root_module, cls):
@@ -1213,6 +1247,7 @@
     cls.add_method('Next', 
                    'ns3::Ptr< ns3::Object const >', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SystemCondition_methods(root_module, cls):
@@ -1242,6 +1277,7 @@
     cls.add_method('TimedWait', 
                    'bool', 
                    [param('uint64_t', 'ns')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SequentialVariable_methods(root_module, cls):
@@ -1249,6 +1285,7 @@
     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')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ObjectVectorChecker_methods(root_module, cls):
@@ -1258,10 +1295,12 @@
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3StringChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ObjectVectorValue_methods(root_module, cls):
@@ -1302,10 +1341,12 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3BooleanChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3UintegerValue_methods(root_module, cls):
@@ -1337,6 +1378,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ObjectVectorAccessor_methods(root_module, cls):
@@ -1371,6 +1413,7 @@
                    [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([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PointerValue_methods(root_module, cls):
@@ -1408,10 +1451,12 @@
 
 def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TypeIdChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3DoubleValue_methods(root_module, cls):
@@ -1443,6 +1488,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TypeIdValue_methods(root_module, cls):
@@ -1474,6 +1520,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EnumValue_methods(root_module, cls):
@@ -1505,6 +1552,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomVariableValue_methods(root_module, cls):
@@ -1536,6 +1584,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ObjectFactoryValue_methods(root_module, cls):
@@ -1567,6 +1616,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IntegerValue_methods(root_module, cls):
@@ -1598,6 +1648,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3BooleanValue_methods(root_module, cls):
@@ -1663,6 +1714,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EmptyAttributeValue_methods(root_module, cls):
--- a/bindings/python/ns3_module_csma.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_csma.py	Tue Aug 19 17:48:09 2008 +0100
@@ -76,6 +76,7 @@
     cls.add_method('IsActive', 
                    'bool', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Backoff_methods(root_module, cls):
@@ -109,6 +110,7 @@
     cls.add_method('IncrNumRetries', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3CsmaChannel_methods(root_module, cls):
@@ -196,6 +198,7 @@
                    'ns3::Time', 
                    [], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3CsmaNetDevice_methods(root_module, cls):
--- a/bindings/python/ns3_module_global_routing.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_global_routing.py	Tue Aug 19 17:48:09 2008 +0100
@@ -220,6 +220,7 @@
     cls.add_method('SetMetric', 
                    'void', 
                    [param('uint16_t', 'metric')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3GlobalRouter_methods(root_module, cls):
--- a/bindings/python/ns3_module_helper.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_helper.py	Tue Aug 19 17:48:09 2008 +0100
@@ -155,6 +155,7 @@
                    'void', 
                    [param('std::ostream&', 'os')], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3InternetStackHelper_methods(root_module, cls):
@@ -168,6 +169,7 @@
                    [param('std::string', 'filename')], 
                    is_static=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3NodeContainer_methods(root_module, cls):
@@ -218,6 +220,7 @@
                    'ns3::NodeContainer', 
                    [], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PointToPointHelper_methods(root_module, cls):
@@ -293,6 +296,7 @@
     cls.add_method('Install', 
                    'ns3::NetDeviceContainer', 
                    [param('ns3::Ptr< ns3::Node >', 'a'), param('ns3::Ptr< ns3::Node >', 'b')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3NetDeviceContainer_methods(root_module, cls):
@@ -325,6 +329,7 @@
                    'void', 
                    [param('ns3::Ptr< ns3::NetDevice >', 'device')])
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3CsmaHelper_methods(root_module, cls):
@@ -400,6 +405,7 @@
     cls.add_method('Install', 
                    'ns3::NetDeviceContainer', 
                    [param('ns3::NodeContainer&', 'c', is_const=True), param('ns3::Ptr< ns3::CsmaChannel >', 'channel')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3UdpEchoServerHelper_methods(root_module, cls):
@@ -413,6 +419,7 @@
     cls.add_method('Install', 
                    'ns3::ApplicationContainer', 
                    [param('ns3::NodeContainer', 'c')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3OlsrHelper_methods(root_module, cls):
@@ -434,6 +441,7 @@
     cls.add_method('InstallAll', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PacketSocketHelper_methods(root_module, cls):
@@ -442,6 +450,7 @@
                    'void', 
                    [param('ns3::NodeContainer', 'c')])
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3OnOffHelper_methods(root_module, cls):
@@ -455,6 +464,7 @@
     cls.add_method('Install', 
                    'ns3::ApplicationContainer', 
                    [param('ns3::NodeContainer', 'c')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3UdpEchoClientHelper_methods(root_module, cls):
@@ -468,6 +478,7 @@
     cls.add_method('Install', 
                    'ns3::ApplicationContainer', 
                    [param('ns3::NodeContainer', 'c')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3StaticMulticastRouteHelper_methods(root_module, cls):
@@ -485,6 +496,7 @@
     cls.add_method('JoinMulticastGroup', 
                    'void', 
                    [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4InterfaceContainer_methods(root_module, cls):
@@ -508,6 +520,7 @@
     cls.add_method('Add', 
                    'void', 
                    [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ApplicationContainer_methods(root_module, cls):
@@ -548,6 +561,7 @@
                    'void', 
                    [param('ns3::Time', 'stop')])
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiHelper_methods(root_module, cls):
@@ -615,6 +629,7 @@
                    'ns3::NetDeviceContainer', 
                    [param('ns3::NodeContainer', 'c'), param('ns3::Ptr< ns3::WifiChannel >', 'channel')], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4AddressHelper_methods(root_module, cls):
@@ -636,6 +651,7 @@
     cls.add_method('Assign', 
                    'ns3::Ipv4InterfaceContainer', 
                    [param('ns3::NetDeviceContainer&', 'c', is_const=True)])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3BridgeHelper_methods(root_module, cls):
@@ -649,6 +665,7 @@
     cls.add_method('Install', 
                    'ns3::NetDeviceContainer', 
                    [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::NetDeviceContainer', 'c')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PacketSinkHelper_methods(root_module, cls):
@@ -662,6 +679,7 @@
     cls.add_method('Install', 
                    'ns3::ApplicationContainer', 
                    [param('ns3::NodeContainer', 'c')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ns2MobilityHelper_methods(root_module, cls):
@@ -672,6 +690,7 @@
                    'void', 
                    [], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_internet_stack.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_internet_stack.py	Tue Aug 19 17:48:09 2008 +0100
@@ -146,6 +146,7 @@
                    'void', 
                    [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3UdpHeader_methods(root_module, cls):
@@ -212,6 +213,7 @@
                    'bool', 
                    [], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TcpHeader_methods(root_module, cls):
@@ -332,6 +334,7 @@
                    'bool', 
                    [], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4StaticRouting_methods(root_module, cls):
@@ -419,6 +422,7 @@
                    'void', 
                    [], 
                    visibility='protected', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4L3Protocol_methods(root_module, cls):
@@ -609,6 +613,7 @@
                    'void', 
                    [], 
                    visibility='protected', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_mobility.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_mobility.py	Tue Aug 19 17:48:09 2008 +0100
@@ -152,6 +152,7 @@
     cls.add_method('Unpause', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Vector_methods(root_module, cls):
@@ -172,10 +173,12 @@
 
 def register_Ns3VectorChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RectangleChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Rectangle_methods(root_module, cls):
@@ -224,6 +227,7 @@
                    'ns3::Vector', 
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ListPositionAllocator_methods(root_module, cls):
@@ -243,6 +247,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RectangleValue_methods(root_module, cls):
@@ -274,6 +279,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomRectanglePositionAllocator_methods(root_module, cls):
@@ -297,6 +303,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3VectorValue_methods(root_module, cls):
@@ -328,6 +335,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomDiscPositionAllocator_methods(root_module, cls):
@@ -359,6 +367,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3MobilityModel_methods(root_module, cls):
@@ -408,6 +417,7 @@
                    'ns3::Vector', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomDirection2dMobilityModel_methods(root_module, cls):
@@ -438,6 +448,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3GridPositionAllocator_methods(root_module, cls):
@@ -507,6 +518,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomWaypointMobilityModel_methods(root_module, cls):
@@ -532,6 +544,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomWalk2dMobilityModel_methods(root_module, cls):
@@ -562,6 +575,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3StaticSpeedMobilityModel_methods(root_module, cls):
@@ -591,6 +605,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3HierarchicalMobilityModel_methods(root_module, cls):
@@ -626,6 +641,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3StaticMobilityModel_methods(root_module, cls):
@@ -651,6 +667,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_node.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_node.py	Tue Aug 19 17:48:09 2008 +0100
@@ -218,6 +218,7 @@
                    [], 
                    is_static=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Address_methods(root_module, cls):
@@ -289,6 +290,7 @@
 
 def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Mac48Address_methods(root_module, cls):
@@ -421,14 +423,17 @@
                    [], 
                    is_static=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Mac48AddressChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4MaskChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4Route_methods(root_module, cls):
@@ -558,6 +563,7 @@
 
 def register_Ns3AddressChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PacketSocketAddress_methods(root_module, cls):
@@ -609,6 +615,7 @@
                    'bool', 
                    [param('ns3::Address&', 'address', is_const=True)], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4Mask_methods(root_module, cls):
@@ -691,6 +698,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4RoutingProtocol_methods(root_module, cls):
@@ -707,6 +715,7 @@
                    [param('ns3::Ipv4Address', 'destination'), param('uint32_t&', 'ifIndex')], 
                    is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Mac48AddressValue_methods(root_module, cls):
@@ -738,6 +747,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4MaskValue_methods(root_module, cls):
@@ -769,6 +779,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SocketAddressTag_methods(root_module, cls):
@@ -813,6 +824,7 @@
                    'void', 
                    [param('std::ostream&', 'os')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3InetSocketAddress_methods(root_module, cls):
@@ -854,6 +866,7 @@
                    'ns3::InetSocketAddress', 
                    [param('ns3::Address&', 'address', is_const=True)], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4Address_methods(root_module, cls):
@@ -1004,6 +1017,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Queue_methods(root_module, cls):
@@ -1090,6 +1104,7 @@
                    'ns3::Ptr< const ns3::Packet >', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Socket_methods(root_module, cls):
@@ -1258,6 +1273,7 @@
                    'void', 
                    [], 
                    visibility='protected')
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4Header_methods(root_module, cls):
@@ -1400,6 +1416,7 @@
                    'uint32_t', 
                    [param('ns3::Buffer::Iterator', 'start')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3UdpSocket_methods(root_module, cls):
@@ -1440,6 +1457,7 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3NetDevice_methods(root_module, cls):
@@ -1569,6 +1587,7 @@
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3DropTailQueue_methods(root_module, cls):
@@ -1594,6 +1613,7 @@
                    'ns3::Ptr< const ns3::Packet >', 
                    [], 
                    is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3AddressValue_methods(root_module, cls):
@@ -1625,6 +1645,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Node_methods(root_module, cls):
@@ -1693,6 +1714,7 @@
                    'void', 
                    [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Channel_methods(root_module, cls):
@@ -1723,6 +1745,7 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'i')], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TcpSocket_methods(root_module, cls):
@@ -1833,6 +1856,7 @@
                    'uint32_t', 
                    [], 
                    is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EthernetHeader_methods(root_module, cls):
@@ -1916,6 +1940,7 @@
                    'uint32_t', 
                    [param('ns3::Buffer::Iterator', 'start')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SocketIpTtlTag_methods(root_module, cls):
@@ -1960,6 +1985,7 @@
                    'void', 
                    [param('std::ostream&', 'os')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ipv4_methods(root_module, cls):
@@ -2150,6 +2176,7 @@
                    '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_copy_constructor()
     return
 
 def register_Ns3SocketFactory_methods(root_module, cls):
@@ -2165,6 +2192,7 @@
                    'ns3::Ptr< ns3::Socket >', 
                    [], 
                    is_pure_virtual=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EthernetTrailer_methods(root_module, cls):
@@ -2227,6 +2255,7 @@
                    'uint32_t', 
                    [param('ns3::Buffer::Iterator', 'end')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SimpleChannel_methods(root_module, cls):
@@ -2255,6 +2284,7 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3LlcSnapHeader_methods(root_module, cls):
@@ -2298,6 +2328,7 @@
                    'uint32_t', 
                    [param('ns3::Buffer::Iterator', 'start')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3UdpSocketFactory_methods(root_module, cls):
@@ -2307,6 +2338,7 @@
                    [], 
                    is_static=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SimpleNetDevice_methods(root_module, cls):
@@ -2454,6 +2486,7 @@
                    'void', 
                    [], 
                    visibility='protected', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TcpSocketFactory_methods(root_module, cls):
@@ -2463,6 +2496,7 @@
                    [], 
                    is_static=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PacketSocketFactory_methods(root_module, cls):
@@ -2478,6 +2512,7 @@
                    'ns3::Ptr< ns3::Socket >', 
                    [], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_olsr.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_olsr.py	Tue Aug 19 17:48:09 2008 +0100
@@ -275,6 +275,7 @@
     ## olsr-header.h: ns3::olsr::MessageHeader::Hello::LinkMessage::neighborInterfaceAddresses [variable]
     cls.add_instance_attribute('neighborInterfaceAddresses', 'std::vector< ns3::Ipv4Address, std::allocator< ns3::Ipv4Address > >', is_const=False)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3OlsrMessageHeaderTc_methods(root_module, cls):
@@ -337,6 +338,7 @@
     ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Association::mask [variable]
     cls.add_instance_attribute('mask', 'ns3::Ipv4Mask', is_const=False)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3OlsrAgent_methods(root_module, cls):
@@ -361,6 +363,7 @@
                    [], 
                    is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3OlsrPacketHeader_methods(root_module, cls):
--- a/bindings/python/ns3_module_onoff.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_onoff.py	Tue Aug 19 17:48:09 2008 +0100
@@ -77,6 +77,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_packet_sink.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_packet_sink.py	Tue Aug 19 17:48:09 2008 +0100
@@ -73,6 +73,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_point_to_point.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_point_to_point.py	Tue Aug 19 17:48:09 2008 +0100
@@ -84,6 +84,7 @@
                    'ns3::Ptr< ns3::NetDevice >', 
                    [param('uint32_t', 'i')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PointToPointNetDevice_methods(root_module, cls):
@@ -247,6 +248,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_simulator.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_simulator.py	Tue Aug 19 17:48:09 2008 +0100
@@ -170,6 +170,7 @@
     cls.add_method('Resume', 
                    'void', 
                    [])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TimerImpl_methods(root_module, cls):
@@ -184,6 +185,7 @@
                    [], 
                    is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Time_methods(root_module, cls):
@@ -329,6 +331,7 @@
     cls.add_method('Ping', 
                    'void', 
                    [param('ns3::Time', 'delay')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Simulator_methods(root_module, cls):
@@ -412,6 +415,7 @@
                    'ns3::Time', 
                    [], 
                    is_static=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3EventId_methods(root_module, cls):
@@ -482,6 +486,7 @@
                    'void', 
                    [], 
                    is_pure_virtual=True, visibility='protected', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3HighPrecision_methods(root_module, cls):
@@ -538,6 +543,7 @@
 
 def register_Ns3TimeChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Scheduler_methods(root_module, cls):
@@ -572,6 +578,7 @@
                    [param('ns3::EventId&', 'id', is_const=True)], 
                    is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SchedulerEventKey_methods(root_module, cls):
@@ -580,6 +587,7 @@
     ## scheduler.h: ns3::Scheduler::EventKey::m_uid [variable]
     cls.add_instance_attribute('m_uid', 'uint32_t', is_const=False)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3TimeValue_methods(root_module, cls):
@@ -611,6 +619,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SimulatorImpl_methods(root_module, cls):
@@ -705,6 +714,7 @@
                    [], 
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3DefaultSimulatorImpl_methods(root_module, cls):
@@ -805,6 +815,7 @@
                    'ns3::Ptr< ns3::Scheduler >', 
                    [], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3HeapScheduler_methods(root_module, cls):
@@ -835,6 +846,7 @@
                    'bool', 
                    [param('ns3::EventId&', 'ev', is_const=True)], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ListScheduler_methods(root_module, cls):
@@ -865,6 +877,7 @@
                    'bool', 
                    [param('ns3::EventId&', 'ev', is_const=True)], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3MapScheduler_methods(root_module, cls):
@@ -895,6 +908,7 @@
                    'bool', 
                    [param('ns3::EventId&', 'ev', is_const=True)], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_udp_echo.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_udp_echo.py	Tue Aug 19 17:48:09 2008 +0100
@@ -80,6 +80,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3UdpEchoServer_methods(root_module, cls):
@@ -105,6 +106,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/ns3_module_wifi.py	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/ns3_module_wifi.py	Tue Aug 19 17:48:09 2008 +0100
@@ -371,6 +371,7 @@
                    'ns3::WifiMode', 
                    [], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiPhyListener_methods(root_module, cls):
@@ -400,6 +401,7 @@
                    [param('ns3::Time', 'duration')], 
                    is_pure_virtual=True, is_virtual=True)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ThresholdsItem_methods(root_module, cls):
@@ -412,6 +414,7 @@
     ## rraa-wifi-manager.h: ns3::ThresholdsItem::ewnd [variable]
     cls.add_instance_attribute('ewnd', 'uint32_t', is_const=False)
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SupportedRates_methods(root_module, cls):
@@ -517,10 +520,12 @@
                    'ns3::WifiMode', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiModeChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiModeFactory_methods(root_module, cls):
@@ -534,6 +539,7 @@
                    '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_copy_constructor()
     return
 
 def register_Ns3OnoeWifiRemoteStation_methods(root_module, cls):
@@ -589,6 +595,7 @@
                    'ns3::WifiMode', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RraaWifiRemoteStation_methods(root_module, cls):
@@ -649,6 +656,7 @@
                    'ns3::WifiMode', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3Ssid_methods(root_module, cls):
@@ -784,10 +792,12 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3SsidChecker_methods(root_module, cls):
     cls.add_constructor([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ConstantRateWifiRemoteStation_methods(root_module, cls):
@@ -843,6 +853,7 @@
                    'ns3::WifiMode', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PropagationLossModel_methods(root_module, cls):
@@ -857,6 +868,7 @@
                    [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([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ArfWifiRemoteStation_methods(root_module, cls):
@@ -952,6 +964,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiMac_methods(root_module, cls):
@@ -1092,6 +1105,7 @@
                    [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([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3NqapWifiMac_methods(root_module, cls):
@@ -1229,6 +1243,7 @@
                    'void', 
                    [], 
                    visibility='protected', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3AmrrWifiRemoteStation_methods(root_module, cls):
@@ -1284,6 +1299,7 @@
                    'ns3::WifiMode', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3FriisPropagationLossModel_methods(root_module, cls):
@@ -1330,6 +1346,7 @@
                    'double', 
                    [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3NqstaWifiMac_methods(root_module, cls):
@@ -1553,6 +1570,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    is_pure_virtual=True, visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiModeValue_methods(root_module, cls):
@@ -1584,6 +1602,7 @@
                    'bool', 
                    [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
                    is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3OnoeWifiManager_methods(root_module, cls):
@@ -1599,6 +1618,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiPhy_methods(root_module, cls):
@@ -1800,6 +1820,7 @@
                    '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_copy_constructor()
     return
 
 def register_Ns3LogDistancePropagationLossModel_methods(root_module, cls):
@@ -1832,6 +1853,7 @@
                    'double', 
                    [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ConstantRateWifiManager_methods(root_module, cls):
@@ -1857,6 +1879,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3AarfWifiRemoteStation_methods(root_module, cls):
@@ -1872,6 +1895,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3PropagationDelayModel_methods(root_module, cls):
@@ -1886,6 +1910,7 @@
                    [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([])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3AdhocWifiMac_methods(root_module, cls):
@@ -2009,6 +2034,7 @@
     cls.add_method('SetNOscillators', 
                    'void', 
                    [param('uint8_t', 'nOscillators')])
+    cls.add_copy_constructor()
     return
 
 def register_Ns3WifiNetDevice_methods(root_module, cls):
@@ -2175,6 +2201,7 @@
                    'void', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ConstantSpeedPropagationDelayModel_methods(root_module, cls):
@@ -2199,6 +2226,7 @@
                    'double', 
                    [], 
                    is_const=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomPropagationLossModel_methods(root_module, cls):
@@ -2214,6 +2242,7 @@
                    'double', 
                    [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RandomPropagationDelayModel_methods(root_module, cls):
@@ -2229,6 +2258,7 @@
                    'ns3::Time', 
                    [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
                    is_const=True, is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3AmrrWifiManager_methods(root_module, cls):
@@ -2244,6 +2274,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3RraaWifiManager_methods(root_module, cls):
@@ -2273,6 +2304,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3IdealWifiManager_methods(root_module, cls):
@@ -2302,6 +2334,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3ArfWifiManager_methods(root_module, cls):
@@ -2317,6 +2350,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_Ns3AarfWifiManager_methods(root_module, cls):
@@ -2332,6 +2366,7 @@
                    'ns3::WifiRemoteStation *', 
                    [], 
                    visibility='private', is_virtual=True)
+    cls.add_copy_constructor()
     return
 
 def register_functions(root_module):
--- a/bindings/python/wscript	Tue Aug 19 17:45:41 2008 +0100
+++ b/bindings/python/wscript	Tue Aug 19 17:48:09 2008 +0100
@@ -21,7 +21,7 @@
     os.environ['PYTHONPATH'] = LOCAL_PYBINDGEN_PATH
 
 ## https://launchpad.net/pybindgen/
-REQUIRED_PYBINDGEN_VERSION = (0, 9, 0, 557)
+REQUIRED_PYBINDGEN_VERSION = (0, 9, 0, 560)
 REQUIRED_PYGCCXML_VERSION = (0, 9, 5)