Proposed RNG API changes
authorRaj Bhattacharjea <raj.b@gatech.edu>
Tue, 13 Jan 2009 17:15:44 -0500
changeset 4218debf1a8a96d3
parent 4084 dd514b5e0bc6
child 4219 7f7331a4c165
Proposed RNG API changes
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_emu.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_stats.py
bindings/python/ns3_module_udp_echo.py
bindings/python/ns3_module_v4ping.py
bindings/python/ns3_module_wifi.py
examples/csma-bridge-one-hop.cc
examples/csma-bridge.cc
examples/csma-bridge.py
examples/csma-broadcast.cc
examples/csma-multicast.cc
examples/csma-one-subnet.cc
examples/csma-packet-socket.cc
examples/csma-ping.cc
examples/csma-raw-ip-socket.cc
examples/csma-star.cc
examples/first.cc
examples/global-routing-slash32.cc
examples/realtime-udp-echo.cc
examples/second.cc
examples/simple-alternate-routing.cc
examples/simple-error-model.cc
examples/simple-global-routing.cc
examples/simple-point-to-point-olsr.cc
examples/star.cc
examples/static-routing-slash32.cc
examples/tcp-large-transfer.cc
examples/tcp-nsc-lfn.cc
examples/tcp-nsc-zoo.cc
examples/tcp-star-server.cc
examples/third.cc
examples/wifi-wired-bridging.cc
src/core/random-variable.cc
src/core/random-variable.h
src/devices/csma/backoff.cc
src/mobility/random-direction-2d-mobility-model.cc
src/routing/olsr/olsr-agent-impl.cc
utils/run-tests.cc
     1.1 --- a/bindings/python/ns3_module_bridge.py	Tue Dec 30 11:35:31 2008 -0800
     1.2 +++ b/bindings/python/ns3_module_bridge.py	Tue Jan 13 17:15:44 2009 -0500
     1.3 @@ -54,8 +54,6 @@
     1.4      return
     1.5  
     1.6  def register_Ns3BridgeChannel_methods(root_module, cls):
     1.7 -    ## bridge-channel.h: ns3::BridgeChannel::BridgeChannel(ns3::BridgeChannel const & arg0) [copy constructor]
     1.8 -    cls.add_constructor([param('ns3::BridgeChannel const &', 'arg0')])
     1.9      ## bridge-channel.h: static ns3::TypeId ns3::BridgeChannel::GetTypeId() [member function]
    1.10      cls.add_method('GetTypeId', 
    1.11                     'ns3::TypeId', 
    1.12 @@ -77,11 +75,10 @@
    1.13                     'ns3::Ptr< ns3::NetDevice >', 
    1.14                     [param('uint32_t', 'i')], 
    1.15                     is_const=True, is_virtual=True)
    1.16 +    cls.add_copy_constructor()
    1.17      return
    1.18  
    1.19  def register_Ns3BridgeNetDevice_methods(root_module, cls):
    1.20 -    ## bridge-net-device.h: ns3::BridgeNetDevice::BridgeNetDevice(ns3::BridgeNetDevice const & arg0) [copy constructor]
    1.21 -    cls.add_constructor([param('ns3::BridgeNetDevice const &', 'arg0')])
    1.22      ## bridge-net-device.h: static ns3::TypeId ns3::BridgeNetDevice::GetTypeId() [member function]
    1.23      cls.add_method('GetTypeId', 
    1.24                     'ns3::TypeId', 
    1.25 @@ -258,6 +255,7 @@
    1.26                     'ns3::Ptr< ns3::NetDevice >', 
    1.27                     [param('ns3::Mac48Address', 'source')], 
    1.28                     visibility='protected')
    1.29 +    cls.add_copy_constructor()
    1.30      return
    1.31  
    1.32  def register_functions(root_module):
     2.1 --- a/bindings/python/ns3_module_common.py	Tue Dec 30 11:35:31 2008 -0800
     2.2 +++ b/bindings/python/ns3_module_common.py	Tue Jan 13 17:15:44 2009 -0500
     2.3 @@ -190,8 +190,6 @@
     2.4      return
     2.5  
     2.6  def register_Ns3BufferIterator_methods(root_module, cls):
     2.7 -    ## buffer.h: ns3::Buffer::Iterator::Iterator(ns3::Buffer::Iterator const & arg0) [copy constructor]
     2.8 -    cls.add_constructor([param('ns3::Buffer::Iterator const &', 'arg0')])
     2.9      ## buffer.h: ns3::Buffer::Iterator::Iterator() [constructor]
    2.10      cls.add_constructor([])
    2.11      ## buffer.h: void ns3::Buffer::Iterator::Next() [member function]
    2.12 @@ -334,6 +332,7 @@
    2.13                     'uint32_t', 
    2.14                     [], 
    2.15                     is_const=True)
    2.16 +    cls.add_copy_constructor()
    2.17      return
    2.18  
    2.19  def register_Ns3DataRate_methods(root_module, cls):
    2.20 @@ -596,15 +595,11 @@
    2.21      cls.add_instance_attribute('currentTrimedFromEnd', 'uint32_t', is_const=False)
    2.22      ## packet-metadata.h: ns3::PacketMetadata::Item::current [variable]
    2.23      cls.add_instance_attribute('current', 'ns3::Buffer::Iterator', is_const=False)
    2.24 -    ## packet-metadata.h: ns3::PacketMetadata::Item::Item(ns3::PacketMetadata::Item const & arg0) [copy constructor]
    2.25 -    cls.add_constructor([param('ns3::PacketMetadata::Item const &', 'arg0')])
    2.26 -    ## packet-metadata.h: ns3::PacketMetadata::Item::Item() [constructor]
    2.27      cls.add_constructor([])
    2.28 +    cls.add_copy_constructor()
    2.29      return
    2.30  
    2.31  def register_Ns3PacketMetadataItemIterator_methods(root_module, cls):
    2.32 -    ## packet-metadata.h: ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata::ItemIterator const & arg0) [copy constructor]
    2.33 -    cls.add_constructor([param('ns3::PacketMetadata::ItemIterator const &', 'arg0')])
    2.34      ## packet-metadata.h: ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata const * metadata, ns3::Buffer buffer) [constructor]
    2.35      cls.add_constructor([param('ns3::PacketMetadata const *', 'metadata'), param('ns3::Buffer', 'buffer')])
    2.36      ## packet-metadata.h: bool ns3::PacketMetadata::ItemIterator::HasNext() const [member function]
    2.37 @@ -616,13 +611,10 @@
    2.38      cls.add_method('Next', 
    2.39                     'ns3::PacketMetadata::Item', 
    2.40                     [])
    2.41 +    cls.add_copy_constructor()
    2.42      return
    2.43  
    2.44  def register_Ns3Tag_methods(root_module, cls):
    2.45 -    ## tag.h: ns3::Tag::Tag(ns3::Tag const & arg0) [copy constructor]
    2.46 -    cls.add_constructor([param('ns3::Tag const &', 'arg0')])
    2.47 -    ## tag.h: ns3::Tag::Tag() [constructor]
    2.48 -    cls.add_constructor([])
    2.49      ## tag.h: static ns3::TypeId ns3::Tag::GetTypeId() [member function]
    2.50      cls.add_method('GetTypeId', 
    2.51                     'ns3::TypeId', 
    2.52 @@ -648,11 +640,11 @@
    2.53                     'void', 
    2.54                     [param('std::ostream &', 'os')], 
    2.55                     is_pure_virtual=True, is_const=True, is_virtual=True)
    2.56 +    cls.add_constructor([])
    2.57 +    cls.add_copy_constructor()
    2.58      return
    2.59  
    2.60  def register_Ns3TagBuffer_methods(root_module, cls):
    2.61 -    ## tag-buffer.h: ns3::TagBuffer::TagBuffer(ns3::TagBuffer const & arg0) [copy constructor]
    2.62 -    cls.add_constructor([param('ns3::TagBuffer const &', 'arg0')])
    2.63      ## tag-buffer.h: ns3::TagBuffer::TagBuffer(uint8_t * start, uint8_t * end) [constructor]
    2.64      cls.add_constructor([param('uint8_t *', 'start'), param('uint8_t *', 'end')])
    2.65      ## tag-buffer.h: void ns3::TagBuffer::TrimAtEnd(uint32_t trim) [member function]
    2.66 @@ -711,11 +703,10 @@
    2.67      cls.add_method('Read', 
    2.68                     'void', 
    2.69                     [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
    2.70 +    cls.add_copy_constructor()
    2.71      return
    2.72  
    2.73  def register_Ns3TagIterator_methods(root_module, cls):
    2.74 -    ## packet.h: ns3::TagIterator::TagIterator(ns3::TagIterator const & arg0) [copy constructor]
    2.75 -    cls.add_constructor([param('ns3::TagIterator const &', 'arg0')])
    2.76      ## packet.h: bool ns3::TagIterator::HasNext() const [member function]
    2.77      cls.add_method('HasNext', 
    2.78                     'bool', 
    2.79 @@ -728,8 +719,6 @@
    2.80      return
    2.81  
    2.82  def register_Ns3TagIteratorItem_methods(root_module, cls):
    2.83 -    ## packet.h: ns3::TagIterator::Item::Item(ns3::TagIterator::Item const & arg0) [copy constructor]
    2.84 -    cls.add_constructor([param('ns3::TagIterator::Item const &', 'arg0')])
    2.85      ## packet.h: ns3::TypeId ns3::TagIterator::Item::GetTypeId() const [member function]
    2.86      cls.add_method('GetTypeId', 
    2.87                     'ns3::TypeId', 
    2.88 @@ -750,6 +739,7 @@
    2.89                     'void', 
    2.90                     [param('ns3::Tag &', 'tag')], 
    2.91                     is_const=True)
    2.92 +    cls.add_copy_constructor()
    2.93      return
    2.94  
    2.95  def register_Ns3TagList_methods(root_module, cls):
    2.96 @@ -785,8 +775,6 @@
    2.97      return
    2.98  
    2.99  def register_Ns3TagListIterator_methods(root_module, cls):
   2.100 -    ## tag-list.h: ns3::TagList::Iterator::Iterator(ns3::TagList::Iterator const & arg0) [copy constructor]
   2.101 -    cls.add_constructor([param('ns3::TagList::Iterator const &', 'arg0')])
   2.102      ## tag-list.h: bool ns3::TagList::Iterator::HasNext() const [member function]
   2.103      cls.add_method('HasNext', 
   2.104                     'bool', 
   2.105 @@ -801,6 +789,7 @@
   2.106                     'uint32_t', 
   2.107                     [], 
   2.108                     is_const=True)
   2.109 +    cls.add_copy_constructor()
   2.110      return
   2.111  
   2.112  def register_Ns3TagListIteratorItem_methods(root_module, cls):
   2.113 @@ -814,17 +803,16 @@
   2.114      cls.add_instance_attribute('end', 'int32_t', is_const=False)
   2.115      ## tag-list.h: ns3::TagList::Iterator::Item::buf [variable]
   2.116      cls.add_instance_attribute('buf', 'ns3::TagBuffer', is_const=False)
   2.117 -    ## tag-list.h: ns3::TagList::Iterator::Item::Item(ns3::TagList::Iterator::Item const & arg0) [copy constructor]
   2.118 -    cls.add_constructor([param('ns3::TagList::Iterator::Item const &', 'arg0')])
   2.119      ## tag-list.h: ns3::TagList::Iterator::Item::Item(ns3::TagBuffer buf) [constructor]
   2.120      cls.add_constructor([param('ns3::TagBuffer', 'buf')])
   2.121 +    cls.add_copy_constructor()
   2.122      return
   2.123  
   2.124  def register_Ns3Chunk_methods(root_module, cls):
   2.125 +    ## chunk.h: ns3::Chunk::Chunk() [constructor]
   2.126 +    cls.add_constructor([])
   2.127      ## chunk.h: ns3::Chunk::Chunk(ns3::Chunk const & arg0) [copy constructor]
   2.128      cls.add_constructor([param('ns3::Chunk const &', 'arg0')])
   2.129 -    ## chunk.h: ns3::Chunk::Chunk() [constructor]
   2.130 -    cls.add_constructor([])
   2.131      ## chunk.h: static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
   2.132      cls.add_method('GetTypeId', 
   2.133                     'ns3::TypeId', 
   2.134 @@ -843,15 +831,11 @@
   2.135      return
   2.136  
   2.137  def register_Ns3DataRateChecker_methods(root_module, cls):
   2.138 -    ## data-rate.h: ns3::DataRateChecker::DataRateChecker(ns3::DataRateChecker const & arg0) [copy constructor]
   2.139 -    cls.add_constructor([param('ns3::DataRateChecker const &', 'arg0')])
   2.140 -    ## data-rate.h: ns3::DataRateChecker::DataRateChecker() [constructor]
   2.141      cls.add_constructor([])
   2.142 +    cls.add_copy_constructor()
   2.143      return
   2.144  
   2.145  def register_Ns3DataRateValue_methods(root_module, cls):
   2.146 -    ## data-rate.h: ns3::DataRateValue::DataRateValue(ns3::DataRateValue const & arg0) [copy constructor]
   2.147 -    cls.add_constructor([param('ns3::DataRateValue const &', 'arg0')])
   2.148      ## data-rate.h: ns3::DataRateValue::DataRateValue() [constructor]
   2.149      cls.add_constructor([])
   2.150      ## data-rate.h: ns3::DataRateValue::DataRateValue(ns3::DataRate const & value) [constructor]
   2.151 @@ -880,6 +864,7 @@
   2.152                     'bool', 
   2.153                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   2.154                     is_virtual=True)
   2.155 +    cls.add_copy_constructor()
   2.156      return
   2.157  
   2.158  def register_Ns3Header_methods(root_module, cls):
   2.159 @@ -916,8 +901,6 @@
   2.160      return
   2.161  
   2.162  def register_Ns3PcapWriter_methods(root_module, cls):
   2.163 -    ## pcap-writer.h: ns3::PcapWriter::PcapWriter(ns3::PcapWriter const & arg0) [copy constructor]
   2.164 -    cls.add_constructor([param('ns3::PcapWriter const &', 'arg0')])
   2.165      ## pcap-writer.h: ns3::PcapWriter::PcapWriter() [constructor]
   2.166      cls.add_constructor([])
   2.167      ## pcap-writer.h: void ns3::PcapWriter::Open(std::string const & name) [member function]
   2.168 @@ -944,6 +927,7 @@
   2.169      cls.add_method('WritePacket', 
   2.170                     'void', 
   2.171                     [param('ns3::Ptr< ns3::Packet const >', 'packet')])
   2.172 +    cls.add_copy_constructor()
   2.173      return
   2.174  
   2.175  def register_Ns3Trailer_methods(root_module, cls):
   2.176 @@ -980,8 +964,6 @@
   2.177      return
   2.178  
   2.179  def register_Ns3ErrorModel_methods(root_module, cls):
   2.180 -    ## error-model.h: ns3::ErrorModel::ErrorModel(ns3::ErrorModel const & arg0) [copy constructor]
   2.181 -    cls.add_constructor([param('ns3::ErrorModel const &', 'arg0')])
   2.182      ## error-model.h: static ns3::TypeId ns3::ErrorModel::GetTypeId() [member function]
   2.183      cls.add_method('GetTypeId', 
   2.184                     'ns3::TypeId', 
   2.185 @@ -1020,11 +1002,10 @@
   2.186                     'void', 
   2.187                     [], 
   2.188                     is_pure_virtual=True, visibility='private', is_virtual=True)
   2.189 +    cls.add_copy_constructor()
   2.190      return
   2.191  
   2.192  def register_Ns3ListErrorModel_methods(root_module, cls):
   2.193 -    ## error-model.h: ns3::ListErrorModel::ListErrorModel(ns3::ListErrorModel const & arg0) [copy constructor]
   2.194 -    cls.add_constructor([param('ns3::ListErrorModel const &', 'arg0')])
   2.195      ## error-model.h: static ns3::TypeId ns3::ListErrorModel::GetTypeId() [member function]
   2.196      cls.add_method('GetTypeId', 
   2.197                     'ns3::TypeId', 
   2.198 @@ -1051,11 +1032,10 @@
   2.199                     'void', 
   2.200                     [], 
   2.201                     visibility='private', is_virtual=True)
   2.202 +    cls.add_copy_constructor()
   2.203      return
   2.204  
   2.205  def register_Ns3RateErrorModel_methods(root_module, cls):
   2.206 -    ## error-model.h: ns3::RateErrorModel::RateErrorModel(ns3::RateErrorModel const & arg0) [copy constructor]
   2.207 -    cls.add_constructor([param('ns3::RateErrorModel const &', 'arg0')])
   2.208      ## error-model.h: static ns3::TypeId ns3::RateErrorModel::GetTypeId() [member function]
   2.209      cls.add_method('GetTypeId', 
   2.210                     'ns3::TypeId', 
   2.211 @@ -1110,6 +1090,7 @@
   2.212                     'void', 
   2.213                     [], 
   2.214                     visibility='private', is_virtual=True)
   2.215 +    cls.add_copy_constructor()
   2.216      return
   2.217  
   2.218  def register_functions(root_module):
     3.1 --- a/bindings/python/ns3_module_contrib.py	Tue Dec 30 11:35:31 2008 -0800
     3.2 +++ b/bindings/python/ns3_module_contrib.py	Tue Jan 13 17:15:44 2009 -0500
     3.3 @@ -88,8 +88,6 @@
     3.4      return
     3.5  
     3.6  def register_Ns3DelayJitterEstimation_methods(root_module, cls):
     3.7 -    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
     3.8 -    cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
     3.9      ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
    3.10      cls.add_constructor([])
    3.11      ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<const ns3::Packet> packet) [member function]
    3.12 @@ -111,22 +109,20 @@
    3.13                     'ns3::Time', 
    3.14                     [], 
    3.15                     is_const=True)
    3.16 +    cls.add_copy_constructor()
    3.17      return
    3.18  
    3.19  def register_Ns3EventGarbageCollector_methods(root_module, cls):
    3.20 -    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector(ns3::EventGarbageCollector const & arg0) [copy constructor]
    3.21 -    cls.add_constructor([param('ns3::EventGarbageCollector const &', 'arg0')])
    3.22      ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
    3.23      cls.add_constructor([])
    3.24      ## event-garbage-collector.h: void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
    3.25      cls.add_method('Track', 
    3.26                     'void', 
    3.27                     [param('ns3::EventId', 'event')])
    3.28 +    cls.add_copy_constructor()
    3.29      return
    3.30  
    3.31  def register_Ns3Gnuplot_methods(root_module, cls):
    3.32 -    ## gnuplot.h: ns3::Gnuplot::Gnuplot(ns3::Gnuplot const & arg0) [copy constructor]
    3.33 -    cls.add_constructor([param('ns3::Gnuplot const &', 'arg0')])
    3.34      ## gnuplot.h: ns3::Gnuplot::Gnuplot(std::string const & outputFilename="", std::string const & title="") [constructor]
    3.35      cls.add_constructor([param('std::string const &', 'outputFilename', default_value='""'), param('std::string const &', 'title', default_value='""')])
    3.36      ## gnuplot.h: static std::string ns3::Gnuplot::DetectTerminal(std::string const & filename) [member function]
    3.37 @@ -163,11 +159,10 @@
    3.38                     'void', 
    3.39                     [param('std::ostream &', 'os')], 
    3.40                     is_const=True)
    3.41 +    cls.add_copy_constructor()
    3.42      return
    3.43  
    3.44  def register_Ns3GnuplotCollection_methods(root_module, cls):
    3.45 -    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(ns3::GnuplotCollection const & arg0) [copy constructor]
    3.46 -    cls.add_constructor([param('ns3::GnuplotCollection const &', 'arg0')])
    3.47      ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(std::string const & outputFilename) [constructor]
    3.48      cls.add_constructor([param('std::string const &', 'outputFilename')])
    3.49      ## gnuplot.h: void ns3::GnuplotCollection::SetTerminal(std::string const & terminal) [member function]
    3.50 @@ -187,6 +182,7 @@
    3.51                     'void', 
    3.52                     [param('std::ostream &', 'os')], 
    3.53                     is_const=True)
    3.54 +    cls.add_copy_constructor()
    3.55      return
    3.56  
    3.57  def register_Ns3GnuplotDataset_methods(root_module, cls):
    3.58 @@ -211,19 +207,16 @@
    3.59      return
    3.60  
    3.61  def register_Ns3GtkConfigStore_methods(root_module, cls):
    3.62 -    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore(ns3::GtkConfigStore const & arg0) [copy constructor]
    3.63 -    cls.add_constructor([param('ns3::GtkConfigStore const &', 'arg0')])
    3.64      ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore() [constructor]
    3.65      cls.add_constructor([])
    3.66      ## gtk-config-store.h: void ns3::GtkConfigStore::Configure() [member function]
    3.67      cls.add_method('Configure', 
    3.68                     'void', 
    3.69                     [])
    3.70 +    cls.add_copy_constructor()
    3.71      return
    3.72  
    3.73  def register_Ns3ConfigStore_methods(root_module, cls):
    3.74 -    ## config-store.h: ns3::ConfigStore::ConfigStore(ns3::ConfigStore const & arg0) [copy constructor]
    3.75 -    cls.add_constructor([param('ns3::ConfigStore const &', 'arg0')])
    3.76      ## config-store.h: static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
    3.77      cls.add_method('GetTypeId', 
    3.78                     'ns3::TypeId', 
    3.79 @@ -240,11 +233,10 @@
    3.80      cls.add_method('Configure', 
    3.81                     'void', 
    3.82                     [])
    3.83 +    cls.add_copy_constructor()
    3.84      return
    3.85  
    3.86  def register_Ns3FlowIdTag_methods(root_module, cls):
    3.87 -    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(ns3::FlowIdTag const & arg0) [copy constructor]
    3.88 -    cls.add_constructor([param('ns3::FlowIdTag const &', 'arg0')])
    3.89      ## flow-id-tag.h: static ns3::TypeId ns3::FlowIdTag::GetTypeId() [member function]
    3.90      cls.add_method('GetTypeId', 
    3.91                     'ns3::TypeId', 
    3.92 @@ -293,11 +285,10 @@
    3.93                     'uint32_t', 
    3.94                     [], 
    3.95                     is_static=True)
    3.96 +    cls.add_copy_constructor()
    3.97      return
    3.98  
    3.99  def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
   3.100 -    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(ns3::Gnuplot2dDataset const & arg0) [copy constructor]
   3.101 -    cls.add_constructor([param('ns3::Gnuplot2dDataset const &', 'arg0')])
   3.102      ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(std::string const & title="Untitled") [constructor]
   3.103      cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
   3.104      ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultStyle(ns3::Gnuplot2dDataset::Style style) [member function]
   3.105 @@ -334,22 +325,20 @@
   3.106      cls.add_method('AddEmptyLine', 
   3.107                     'void', 
   3.108                     [])
   3.109 +    cls.add_copy_constructor()
   3.110      return
   3.111  
   3.112  def register_Ns3Gnuplot2dFunction_methods(root_module, cls):
   3.113 -    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(ns3::Gnuplot2dFunction const & arg0) [copy constructor]
   3.114 -    cls.add_constructor([param('ns3::Gnuplot2dFunction const &', 'arg0')])
   3.115      ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
   3.116      cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
   3.117      ## gnuplot.h: void ns3::Gnuplot2dFunction::SetFunction(std::string const & function) [member function]
   3.118      cls.add_method('SetFunction', 
   3.119                     'void', 
   3.120                     [param('std::string const &', 'function')])
   3.121 +    cls.add_copy_constructor()
   3.122      return
   3.123  
   3.124  def register_Ns3Gnuplot3dDataset_methods(root_module, cls):
   3.125 -    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(ns3::Gnuplot3dDataset const & arg0) [copy constructor]
   3.126 -    cls.add_constructor([param('ns3::Gnuplot3dDataset const &', 'arg0')])
   3.127      ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(std::string const & title="Untitled") [constructor]
   3.128      cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
   3.129      ## gnuplot.h: static void ns3::Gnuplot3dDataset::SetDefaultStyle(std::string const & style) [member function]
   3.130 @@ -369,17 +358,17 @@
   3.131      cls.add_method('AddEmptyLine', 
   3.132                     'void', 
   3.133                     [])
   3.134 +    cls.add_copy_constructor()
   3.135      return
   3.136  
   3.137  def register_Ns3Gnuplot3dFunction_methods(root_module, cls):
   3.138 -    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(ns3::Gnuplot3dFunction const & arg0) [copy constructor]
   3.139 -    cls.add_constructor([param('ns3::Gnuplot3dFunction const &', 'arg0')])
   3.140      ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
   3.141      cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
   3.142      ## gnuplot.h: void ns3::Gnuplot3dFunction::SetFunction(std::string const & function) [member function]
   3.143      cls.add_method('SetFunction', 
   3.144                     'void', 
   3.145                     [param('std::string const &', 'function')])
   3.146 +    cls.add_copy_constructor()
   3.147      return
   3.148  
   3.149  def register_functions(root_module):
     4.1 --- a/bindings/python/ns3_module_core.py	Tue Dec 30 11:35:31 2008 -0800
     4.2 +++ b/bindings/python/ns3_module_core.py	Tue Jan 13 17:15:44 2009 -0500
     4.3 @@ -55,6 +55,8 @@
     4.4      module.add_class('RefCountBase', automatic_type_narrowing=True, memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     4.5      ## rng-stream.h: ns3::RngStream [class]
     4.6      module.add_class('RngStream')
     4.7 +    ## random-variable.h: ns3::SeedManager [class]
     4.8 +    module.add_class('SeedManager')
     4.9      ## random-variable.h: ns3::SequentialVariable [class]
    4.10      module.add_class('SequentialVariable', parent=root_module['ns3::RandomVariable'])
    4.11      ## system-condition.h: ns3::SystemCondition [class]
    4.12 @@ -228,6 +230,7 @@
    4.13      register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
    4.14      register_Ns3RefCountBase_methods(root_module, root_module['ns3::RefCountBase'])
    4.15      register_Ns3RngStream_methods(root_module, root_module['ns3::RngStream'])
    4.16 +    register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager'])
    4.17      register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
    4.18      register_Ns3SystemCondition_methods(root_module, root_module['ns3::SystemCondition'])
    4.19      register_Ns3SystemMutex_methods(root_module, root_module['ns3::SystemMutex'])
    4.20 @@ -319,8 +322,6 @@
    4.21      return
    4.22  
    4.23  def register_Ns3CallbackBase_methods(root_module, cls):
    4.24 -    ## callback.h: ns3::CallbackBase::CallbackBase(ns3::CallbackBase const & arg0) [copy constructor]
    4.25 -    cls.add_constructor([param('ns3::CallbackBase const &', 'arg0')])
    4.26      ## callback.h: ns3::CallbackBase::CallbackBase() [constructor]
    4.27      cls.add_constructor([])
    4.28      ## callback.h: ns3::Ptr<ns3::CallbackImplBase> ns3::CallbackBase::GetImpl() const [member function]
    4.29 @@ -331,11 +332,10 @@
    4.30      ## callback.h: ns3::CallbackBase::CallbackBase(ns3::Ptr<ns3::CallbackImplBase> impl) [constructor]
    4.31      cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], 
    4.32                          visibility='protected')
    4.33 +    cls.add_copy_constructor()
    4.34      return
    4.35  
    4.36  def register_Ns3CallbackImplBase_methods(root_module, cls):
    4.37 -    ## callback.h: ns3::CallbackImplBase::CallbackImplBase(ns3::CallbackImplBase const & arg0) [copy constructor]
    4.38 -    cls.add_constructor([param('ns3::CallbackImplBase const &', 'arg0')])
    4.39      ## callback.h: ns3::CallbackImplBase::CallbackImplBase() [constructor]
    4.40      cls.add_constructor([])
    4.41      ## callback.h: bool ns3::CallbackImplBase::IsEqual(ns3::Ptr<ns3::CallbackImplBase const> other) const [member function]
    4.42 @@ -343,29 +343,25 @@
    4.43                     'bool', 
    4.44                     [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], 
    4.45                     is_pure_virtual=True, is_const=True, is_virtual=True)
    4.46 +    cls.add_copy_constructor()
    4.47      return
    4.48  
    4.49  def register_Ns3CommandLine_methods(root_module, cls):
    4.50 -    ## command-line.h: ns3::CommandLine::CommandLine(ns3::CommandLine const & arg0) [copy constructor]
    4.51 -    cls.add_constructor([param('ns3::CommandLine const &', 'arg0')])
    4.52 -    ## command-line.h: ns3::CommandLine::CommandLine() [constructor]
    4.53 -    cls.add_constructor([])
    4.54      ## command-line.h: void ns3::CommandLine::AddValue(std::string const & name, std::string const & help, ns3::Callback<bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [member function]
    4.55      cls.add_method('AddValue', 
    4.56                     'void', 
    4.57                     [param('std::string const &', 'name'), param('std::string const &', 'help'), param('ns3::Callback< bool, std::string, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
    4.58 +    cls.add_constructor([])
    4.59 +    cls.add_copy_constructor()
    4.60      return
    4.61  
    4.62  def register_Ns3CriticalSection_methods(root_module, cls):
    4.63 -    ## system-mutex.h: ns3::CriticalSection::CriticalSection(ns3::CriticalSection const & arg0) [copy constructor]
    4.64 -    cls.add_constructor([param('ns3::CriticalSection const &', 'arg0')])
    4.65      ## system-mutex.h: ns3::CriticalSection::CriticalSection(ns3::SystemMutex & mutex) [constructor]
    4.66      cls.add_constructor([param('ns3::SystemMutex &', 'mutex')])
    4.67 +    cls.add_copy_constructor()
    4.68      return
    4.69  
    4.70  def register_Ns3GlobalValue_methods(root_module, cls):
    4.71 -    ## global-value.h: ns3::GlobalValue::GlobalValue(ns3::GlobalValue const & arg0) [copy constructor]
    4.72 -    cls.add_constructor([param('ns3::GlobalValue const &', 'arg0')])
    4.73      ## global-value.h: ns3::GlobalValue::GlobalValue(std::string name, std::string help, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeChecker const> checker) [constructor]
    4.74      cls.add_constructor([param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
    4.75      ## global-value.h: std::string ns3::GlobalValue::GetName() const [member function]
    4.76 @@ -412,62 +408,49 @@
    4.77                     '__gnu_cxx::__normal_iterator< ns3::GlobalValue * const *, std::vector< ns3::GlobalValue * > >', 
    4.78                     [], 
    4.79                     is_static=True)
    4.80 +    cls.add_copy_constructor()
    4.81      return
    4.82  
    4.83  def register_Ns3IntToType__0_methods(root_module, cls):
    4.84 -    ## int-to-type.h: ns3::IntToType<0>::IntToType(ns3::IntToType<0> const & arg0) [copy constructor]
    4.85 -    cls.add_constructor([param('ns3::IntToType< 0 > const &', 'arg0')])
    4.86 -    ## int-to-type.h: ns3::IntToType<0>::IntToType() [constructor]
    4.87      cls.add_constructor([])
    4.88 +    cls.add_copy_constructor()
    4.89      return
    4.90  
    4.91  def register_Ns3IntToType__1_methods(root_module, cls):
    4.92 -    ## int-to-type.h: ns3::IntToType<1>::IntToType(ns3::IntToType<1> const & arg0) [copy constructor]
    4.93 -    cls.add_constructor([param('ns3::IntToType< 1 > const &', 'arg0')])
    4.94 -    ## int-to-type.h: ns3::IntToType<1>::IntToType() [constructor]
    4.95      cls.add_constructor([])
    4.96 +    cls.add_copy_constructor()
    4.97      return
    4.98  
    4.99  def register_Ns3IntToType__2_methods(root_module, cls):
   4.100 -    ## int-to-type.h: ns3::IntToType<2>::IntToType(ns3::IntToType<2> const & arg0) [copy constructor]
   4.101 -    cls.add_constructor([param('ns3::IntToType< 2 > const &', 'arg0')])
   4.102 -    ## int-to-type.h: ns3::IntToType<2>::IntToType() [constructor]
   4.103      cls.add_constructor([])
   4.104 +    cls.add_copy_constructor()
   4.105      return
   4.106  
   4.107  def register_Ns3IntToType__3_methods(root_module, cls):
   4.108 -    ## int-to-type.h: ns3::IntToType<3>::IntToType(ns3::IntToType<3> const & arg0) [copy constructor]
   4.109 -    cls.add_constructor([param('ns3::IntToType< 3 > const &', 'arg0')])
   4.110 -    ## int-to-type.h: ns3::IntToType<3>::IntToType() [constructor]
   4.111      cls.add_constructor([])
   4.112 +    cls.add_copy_constructor()
   4.113      return
   4.114  
   4.115  def register_Ns3IntToType__4_methods(root_module, cls):
   4.116 -    ## int-to-type.h: ns3::IntToType<4>::IntToType(ns3::IntToType<4> const & arg0) [copy constructor]
   4.117 -    cls.add_constructor([param('ns3::IntToType< 4 > const &', 'arg0')])
   4.118 -    ## int-to-type.h: ns3::IntToType<4>::IntToType() [constructor]
   4.119      cls.add_constructor([])
   4.120 +    cls.add_copy_constructor()
   4.121      return
   4.122  
   4.123  def register_Ns3IntToType__5_methods(root_module, cls):
   4.124 -    ## int-to-type.h: ns3::IntToType<5>::IntToType(ns3::IntToType<5> const & arg0) [copy constructor]
   4.125 -    cls.add_constructor([param('ns3::IntToType< 5 > const &', 'arg0')])
   4.126 -    ## int-to-type.h: ns3::IntToType<5>::IntToType() [constructor]
   4.127      cls.add_constructor([])
   4.128 +    cls.add_copy_constructor()
   4.129      return
   4.130  
   4.131  def register_Ns3IntToType__6_methods(root_module, cls):
   4.132 -    ## int-to-type.h: ns3::IntToType<6>::IntToType(ns3::IntToType<6> const & arg0) [copy constructor]
   4.133 -    cls.add_constructor([param('ns3::IntToType< 6 > const &', 'arg0')])
   4.134 -    ## int-to-type.h: ns3::IntToType<6>::IntToType() [constructor]
   4.135      cls.add_constructor([])
   4.136 +    cls.add_copy_constructor()
   4.137      return
   4.138  
   4.139  def register_Ns3ObjectBase_methods(root_module, cls):
   4.140 +    ## object-base.h: ns3::ObjectBase::ObjectBase() [constructor]
   4.141 +    cls.add_constructor([])
   4.142      ## object-base.h: ns3::ObjectBase::ObjectBase(ns3::ObjectBase const & arg0) [copy constructor]
   4.143      cls.add_constructor([param('ns3::ObjectBase const &', 'arg0')])
   4.144 -    ## object-base.h: ns3::ObjectBase::ObjectBase() [constructor]
   4.145 -    cls.add_constructor([])
   4.146      ## object-base.h: static ns3::TypeId ns3::ObjectBase::GetTypeId() [member function]
   4.147      cls.add_method('GetTypeId', 
   4.148                     'ns3::TypeId', 
   4.149 @@ -573,31 +556,11 @@
   4.150                     'uint32_t', 
   4.151                     [], 
   4.152                     is_const=True)
   4.153 -    ## random-variable.h: void ns3::RandomVariable::GetSeed(uint32_t * seed) const [member function]
   4.154 -    cls.add_method('GetSeed', 
   4.155 -                   'void', 
   4.156 -                   [param('uint32_t *', 'seed', direction=2, array_length=6)], 
   4.157 -                   is_const=True)
   4.158      ## random-variable.h: double ns3::RandomVariable::GetValue() const [member function]
   4.159      cls.add_method('GetValue', 
   4.160                     'double', 
   4.161                     [], 
   4.162                     is_const=True)
   4.163 -    ## random-variable.h: static void ns3::RandomVariable::SetRunNumber(uint32_t n) [member function]
   4.164 -    cls.add_method('SetRunNumber', 
   4.165 -                   'void', 
   4.166 -                   [param('uint32_t', 'n')], 
   4.167 -                   is_static=True)
   4.168 -    ## random-variable.h: static void ns3::RandomVariable::UseDevRandom(bool udr=true) [member function]
   4.169 -    cls.add_method('UseDevRandom', 
   4.170 -                   'void', 
   4.171 -                   [param('bool', 'udr', default_value='true')], 
   4.172 -                   is_static=True)
   4.173 -    ## 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]
   4.174 -    cls.add_method('UseGlobalSeed', 
   4.175 -                   'void', 
   4.176 -                   [param('uint32_t', 's0'), param('uint32_t', 's1'), param('uint32_t', 's2'), param('uint32_t', 's3'), param('uint32_t', 's4'), param('uint32_t', 's5')], 
   4.177 -                   is_static=True)
   4.178      return
   4.179  
   4.180  def register_Ns3RefCountBase_methods(root_module, cls):
   4.181 @@ -673,18 +636,60 @@
   4.182                     is_static=True)
   4.183      return
   4.184  
   4.185 +def register_Ns3SeedManager_methods(root_module, cls):
   4.186 +    ## random-variable.h: static void ns3::SeedManager::SetSeed(uint32_t seed) [member function]
   4.187 +    cls.add_method('SetSeed', 
   4.188 +                   'void', 
   4.189 +                   [param('uint32_t', 'seed')], 
   4.190 +                   is_static=True)
   4.191 +    ## random-variable.h: static uint32_t ns3::SeedManager::GetSeed() [member function]
   4.192 +    cls.add_method('GetSeed', 
   4.193 +                   'uint32_t', 
   4.194 +                   [], 
   4.195 +                   is_static=True)
   4.196 +    ## random-variable.h: static void ns3::SeedManager::SetSeed(uint32_t * seed) [member function]
   4.197 +    cls.add_method('SetSeed', 
   4.198 +                   'void', 
   4.199 +                   [param('uint32_t *', 'seed')], 
   4.200 +                   is_static=True)
   4.201 +    ## random-variable.h: static void ns3::SeedManager::GetSeed(uint32_t * seed) [member function]
   4.202 +    cls.add_method('GetSeed', 
   4.203 +                   'void', 
   4.204 +                   [param('uint32_t *', 'seed')], 
   4.205 +                   is_static=True)
   4.206 +    ## random-variable.h: static void ns3::SeedManager::SetRun(uint32_t run) [member function]
   4.207 +    cls.add_method('SetRun', 
   4.208 +                   'void', 
   4.209 +                   [param('uint32_t', 'run')], 
   4.210 +                   is_static=True)
   4.211 +    ## random-variable.h: static uint32_t ns3::SeedManager::GetRun() [member function]
   4.212 +    cls.add_method('GetRun', 
   4.213 +                   'uint32_t', 
   4.214 +                   [], 
   4.215 +                   is_static=True)
   4.216 +    ## random-variable.h: static bool ns3::SeedManager::CheckSeed(uint32_t seed) [member function]
   4.217 +    cls.add_method('CheckSeed', 
   4.218 +                   'bool', 
   4.219 +                   [param('uint32_t', 'seed')], 
   4.220 +                   is_static=True)
   4.221 +    ## random-variable.h: static bool ns3::SeedManager::CheckSeed(uint32_t * seed) [member function]
   4.222 +    cls.add_method('CheckSeed', 
   4.223 +                   'bool', 
   4.224 +                   [param('uint32_t *', 'seed')], 
   4.225 +                   is_static=True)
   4.226 +    cls.add_constructor([])
   4.227 +    cls.add_copy_constructor()
   4.228 +    return
   4.229 +
   4.230  def register_Ns3SequentialVariable_methods(root_module, cls):
   4.231 -    ## random-variable.h: ns3::SequentialVariable::SequentialVariable(ns3::SequentialVariable const & arg0) [copy constructor]
   4.232 -    cls.add_constructor([param('ns3::SequentialVariable const &', 'arg0')])
   4.233      ## random-variable.h: ns3::SequentialVariable::SequentialVariable(double f, double l, double i=1, uint32_t c=1) [constructor]
   4.234      cls.add_constructor([param('double', 'f'), param('double', 'l'), param('double', 'i', default_value='1'), param('uint32_t', 'c', default_value='1')])
   4.235      ## random-variable.h: ns3::SequentialVariable::SequentialVariable(double f, double l, ns3::RandomVariable const & i, uint32_t c=1) [constructor]
   4.236      cls.add_constructor([param('double', 'f'), param('double', 'l'), param('ns3::RandomVariable const &', 'i'), param('uint32_t', 'c', default_value='1')])
   4.237 +    cls.add_copy_constructor()
   4.238      return
   4.239  
   4.240  def register_Ns3SystemCondition_methods(root_module, cls):
   4.241 -    ## system-condition.h: ns3::SystemCondition::SystemCondition(ns3::SystemCondition const & arg0) [copy constructor]
   4.242 -    cls.add_constructor([param('ns3::SystemCondition const &', 'arg0')])
   4.243      ## system-condition.h: ns3::SystemCondition::SystemCondition() [constructor]
   4.244      cls.add_constructor([])
   4.245      ## system-condition.h: void ns3::SystemCondition::SetCondition(bool condition) [member function]
   4.246 @@ -711,11 +716,10 @@
   4.247      cls.add_method('TimedWait', 
   4.248                     'bool', 
   4.249                     [param('uint64_t', 'ns')])
   4.250 +    cls.add_copy_constructor()
   4.251      return
   4.252  
   4.253  def register_Ns3SystemMutex_methods(root_module, cls):
   4.254 -    ## system-mutex.h: ns3::SystemMutex::SystemMutex(ns3::SystemMutex const & arg0) [copy constructor]
   4.255 -    cls.add_constructor([param('ns3::SystemMutex const &', 'arg0')])
   4.256      ## system-mutex.h: ns3::SystemMutex::SystemMutex() [constructor]
   4.257      cls.add_constructor([])
   4.258      ## system-mutex.h: void ns3::SystemMutex::Lock() [member function]
   4.259 @@ -726,11 +730,10 @@
   4.260      cls.add_method('Unlock', 
   4.261                     'void', 
   4.262                     [])
   4.263 +    cls.add_copy_constructor()
   4.264      return
   4.265  
   4.266  def register_Ns3SystemThread_methods(root_module, cls):
   4.267 -    ## system-thread.h: ns3::SystemThread::SystemThread(ns3::SystemThread const & arg0) [copy constructor]
   4.268 -    cls.add_constructor([param('ns3::SystemThread const &', 'arg0')])
   4.269      ## system-thread.h: ns3::SystemThread::SystemThread(ns3::Callback<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> callback) [constructor]
   4.270      cls.add_constructor([param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'callback')])
   4.271      ## system-thread.h: void ns3::SystemThread::Ref() const [member function]
   4.272 @@ -759,11 +762,10 @@
   4.273      cls.add_method('Break', 
   4.274                     'bool', 
   4.275                     [])
   4.276 +    cls.add_copy_constructor()
   4.277      return
   4.278  
   4.279  def register_Ns3SystemWallClockMs_methods(root_module, cls):
   4.280 -    ## system-wall-clock-ms.h: ns3::SystemWallClockMs::SystemWallClockMs(ns3::SystemWallClockMs const & arg0) [copy constructor]
   4.281 -    cls.add_constructor([param('ns3::SystemWallClockMs const &', 'arg0')])
   4.282      ## system-wall-clock-ms.h: ns3::SystemWallClockMs::SystemWallClockMs() [constructor]
   4.283      cls.add_constructor([])
   4.284      ## system-wall-clock-ms.h: void ns3::SystemWallClockMs::Start() [member function]
   4.285 @@ -774,11 +776,10 @@
   4.286      cls.add_method('End', 
   4.287                     'long long unsigned int', 
   4.288                     [])
   4.289 +    cls.add_copy_constructor()
   4.290      return
   4.291  
   4.292  def register_Ns3TraceSourceAccessor_methods(root_module, cls):
   4.293 -    ## trace-source-accessor.h: ns3::TraceSourceAccessor::TraceSourceAccessor(ns3::TraceSourceAccessor const & arg0) [copy constructor]
   4.294 -    cls.add_constructor([param('ns3::TraceSourceAccessor const &', 'arg0')])
   4.295      ## trace-source-accessor.h: ns3::TraceSourceAccessor::TraceSourceAccessor() [constructor]
   4.296      cls.add_constructor([])
   4.297      ## trace-source-accessor.h: void ns3::TraceSourceAccessor::Ref() const [member function]
   4.298 @@ -811,20 +812,15 @@
   4.299                     'bool', 
   4.300                     [param('ns3::ObjectBase *', 'obj', transfer_ownership=False), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')], 
   4.301                     is_pure_virtual=True, is_const=True, is_virtual=True)
   4.302 +    cls.add_copy_constructor()
   4.303      return
   4.304  
   4.305  def register_Ns3TriangularVariable_methods(root_module, cls):
   4.306 -    ## random-variable.h: ns3::TriangularVariable::TriangularVariable(ns3::TriangularVariable const & arg0) [copy constructor]
   4.307 -    cls.add_constructor([param('ns3::TriangularVariable const &', 'arg0')])
   4.308      ## random-variable.h: ns3::TriangularVariable::TriangularVariable() [constructor]
   4.309      cls.add_constructor([])
   4.310      ## random-variable.h: ns3::TriangularVariable::TriangularVariable(double s, double l, double mean) [constructor]
   4.311      cls.add_constructor([param('double', 's'), param('double', 'l'), param('double', 'mean')])
   4.312 -    ## random-variable.h: static double ns3::TriangularVariable::GetSingleValue(double s, double l, double mean) [member function]
   4.313 -    cls.add_method('GetSingleValue', 
   4.314 -                   'double', 
   4.315 -                   [param('double', 's'), param('double', 'l'), param('double', 'mean')], 
   4.316 -                   is_static=True)
   4.317 +    cls.add_copy_constructor()
   4.318      return
   4.319  
   4.320  def register_Ns3TypeId_methods(root_module, cls):
   4.321 @@ -1007,24 +1003,24 @@
   4.322      cls.add_instance_attribute('flags', 'uint32_t', is_const=False)
   4.323      ## type-id.h: ns3::TypeId::AttributeInfo::checker [variable]
   4.324      cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
   4.325 -    ## type-id.h: ns3::TypeId::AttributeInfo::AttributeInfo(ns3::TypeId::AttributeInfo const & arg0) [copy constructor]
   4.326 -    cls.add_constructor([param('ns3::TypeId::AttributeInfo const &', 'arg0')])
   4.327 -    ## type-id.h: ns3::TypeId::AttributeInfo::AttributeInfo() [constructor]
   4.328      cls.add_constructor([])
   4.329 +    cls.add_copy_constructor()
   4.330      return
   4.331  
   4.332  def register_Ns3UniformVariable_methods(root_module, cls):
   4.333 -    ## random-variable.h: ns3::UniformVariable::UniformVariable(ns3::UniformVariable const & arg0) [copy constructor]
   4.334 -    cls.add_constructor([param('ns3::UniformVariable const &', 'arg0')])
   4.335      ## random-variable.h: ns3::UniformVariable::UniformVariable() [constructor]
   4.336      cls.add_constructor([])
   4.337      ## random-variable.h: ns3::UniformVariable::UniformVariable(double s, double l) [constructor]
   4.338      cls.add_constructor([param('double', 's'), param('double', 'l')])
   4.339 -    ## random-variable.h: static double ns3::UniformVariable::GetSingleValue(double s, double l) [member function]
   4.340 -    cls.add_method('GetSingleValue', 
   4.341 +    ## random-variable.h: double ns3::UniformVariable::GetValue() [member function]
   4.342 +    cls.add_method('GetValue', 
   4.343                     'double', 
   4.344 -                   [param('double', 's'), param('double', 'l')], 
   4.345 -                   is_static=True)
   4.346 +                   [])
   4.347 +    ## random-variable.h: double ns3::UniformVariable::GetValue(double s, double l) [member function]
   4.348 +    cls.add_method('GetValue', 
   4.349 +                   'double', 
   4.350 +                   [param('double', 's'), param('double', 'l')])
   4.351 +    cls.add_copy_constructor()
   4.352      return
   4.353  
   4.354  def register_Ns3UnsafeAttributeList_methods(root_module, cls):
   4.355 @@ -1044,8 +1040,6 @@
   4.356      return
   4.357  
   4.358  def register_Ns3WeibullVariable_methods(root_module, cls):
   4.359 -    ## random-variable.h: ns3::WeibullVariable::WeibullVariable(ns3::WeibullVariable const & arg0) [copy constructor]
   4.360 -    cls.add_constructor([param('ns3::WeibullVariable const &', 'arg0')])
   4.361      ## random-variable.h: ns3::WeibullVariable::WeibullVariable() [constructor]
   4.362      cls.add_constructor([])
   4.363      ## random-variable.h: ns3::WeibullVariable::WeibullVariable(double m) [constructor]
   4.364 @@ -1054,23 +1048,15 @@
   4.365      cls.add_constructor([param('double', 'm'), param('double', 's')])
   4.366      ## random-variable.h: ns3::WeibullVariable::WeibullVariable(double m, double s, double b) [constructor]
   4.367      cls.add_constructor([param('double', 'm'), param('double', 's'), param('double', 'b')])
   4.368 -    ## random-variable.h: static double ns3::WeibullVariable::GetSingleValue(double m, double s, double b=0) [member function]
   4.369 -    cls.add_method('GetSingleValue', 
   4.370 -                   'double', 
   4.371 -                   [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], 
   4.372 -                   is_static=True)
   4.373 +    cls.add_copy_constructor()
   4.374      return
   4.375  
   4.376  def register_Ns3Empty_methods(root_module, cls):
   4.377 -    ## empty.h: ns3::empty::empty(ns3::empty const & arg0) [copy constructor]
   4.378 -    cls.add_constructor([param('ns3::empty const &', 'arg0')])
   4.379 -    ## empty.h: ns3::empty::empty() [constructor]
   4.380      cls.add_constructor([])
   4.381 +    cls.add_copy_constructor()
   4.382      return
   4.383  
   4.384  def register_Ns3AttributeAccessor_methods(root_module, cls):
   4.385 -    ## attribute.h: ns3::AttributeAccessor::AttributeAccessor(ns3::AttributeAccessor const & arg0) [copy constructor]
   4.386 -    cls.add_constructor([param('ns3::AttributeAccessor const &', 'arg0')])
   4.387      ## attribute.h: ns3::AttributeAccessor::AttributeAccessor() [constructor]
   4.388      cls.add_constructor([])
   4.389      ## attribute.h: bool ns3::AttributeAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
   4.390 @@ -1093,11 +1079,10 @@
   4.391                     'bool', 
   4.392                     [], 
   4.393                     is_pure_virtual=True, is_const=True, is_virtual=True)
   4.394 +    cls.add_copy_constructor()
   4.395      return
   4.396  
   4.397  def register_Ns3AttributeChecker_methods(root_module, cls):
   4.398 -    ## attribute.h: ns3::AttributeChecker::AttributeChecker(ns3::AttributeChecker const & arg0) [copy constructor]
   4.399 -    cls.add_constructor([param('ns3::AttributeChecker const &', 'arg0')])
   4.400      ## attribute.h: ns3::AttributeChecker::AttributeChecker() [constructor]
   4.401      cls.add_constructor([])
   4.402      ## attribute.h: bool ns3::AttributeChecker::Check(ns3::AttributeValue const & value) const [member function]
   4.403 @@ -1130,6 +1115,7 @@
   4.404                     'bool', 
   4.405                     [param('ns3::AttributeValue const &', 'source'), param('ns3::AttributeValue &', 'destination')], 
   4.406                     is_pure_virtual=True, is_const=True, is_virtual=True)
   4.407 +    cls.add_copy_constructor()
   4.408      return
   4.409  
   4.410  def register_Ns3AttributeValue_methods(root_module, cls):
   4.411 @@ -1155,10 +1141,8 @@
   4.412      return
   4.413  
   4.414  def register_Ns3BooleanChecker_methods(root_module, cls):
   4.415 -    ## boolean.h: ns3::BooleanChecker::BooleanChecker(ns3::BooleanChecker const & arg0) [copy constructor]
   4.416 -    cls.add_constructor([param('ns3::BooleanChecker const &', 'arg0')])
   4.417 -    ## boolean.h: ns3::BooleanChecker::BooleanChecker() [constructor]
   4.418      cls.add_constructor([])
   4.419 +    cls.add_copy_constructor()
   4.420      return
   4.421  
   4.422  def register_Ns3BooleanValue_methods(root_module, cls):
   4.423 @@ -1196,15 +1180,11 @@
   4.424      return
   4.425  
   4.426  def register_Ns3CallbackChecker_methods(root_module, cls):
   4.427 -    ## callback.h: ns3::CallbackChecker::CallbackChecker(ns3::CallbackChecker const & arg0) [copy constructor]
   4.428 -    cls.add_constructor([param('ns3::CallbackChecker const &', 'arg0')])
   4.429 -    ## callback.h: ns3::CallbackChecker::CallbackChecker() [constructor]
   4.430      cls.add_constructor([])
   4.431 +    cls.add_copy_constructor()
   4.432      return
   4.433  
   4.434  def register_Ns3CallbackValue_methods(root_module, cls):
   4.435 -    ## callback.h: ns3::CallbackValue::CallbackValue(ns3::CallbackValue const & arg0) [copy constructor]
   4.436 -    cls.add_constructor([param('ns3::CallbackValue const &', 'arg0')])
   4.437      ## callback.h: ns3::CallbackValue::CallbackValue() [constructor]
   4.438      cls.add_constructor([])
   4.439      ## callback.h: ns3::CallbackValue::CallbackValue(ns3::CallbackBase const & base) [constructor]
   4.440 @@ -1228,11 +1208,10 @@
   4.441                     'bool', 
   4.442                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.443                     is_virtual=True)
   4.444 +    cls.add_copy_constructor()
   4.445      return
   4.446  
   4.447  def register_Ns3ConstantVariable_methods(root_module, cls):
   4.448 -    ## random-variable.h: ns3::ConstantVariable::ConstantVariable(ns3::ConstantVariable const & arg0) [copy constructor]
   4.449 -    cls.add_constructor([param('ns3::ConstantVariable const &', 'arg0')])
   4.450      ## random-variable.h: ns3::ConstantVariable::ConstantVariable() [constructor]
   4.451      cls.add_constructor([])
   4.452      ## random-variable.h: ns3::ConstantVariable::ConstantVariable(double c) [constructor]
   4.453 @@ -1241,18 +1220,16 @@
   4.454      cls.add_method('SetConstant', 
   4.455                     'void', 
   4.456                     [param('double', 'c')])
   4.457 +    cls.add_copy_constructor()
   4.458      return
   4.459  
   4.460  def register_Ns3DeterministicVariable_methods(root_module, cls):
   4.461 -    ## random-variable.h: ns3::DeterministicVariable::DeterministicVariable(ns3::DeterministicVariable const & arg0) [copy constructor]
   4.462 -    cls.add_constructor([param('ns3::DeterministicVariable const &', 'arg0')])
   4.463      ## random-variable.h: ns3::DeterministicVariable::DeterministicVariable(double * d, uint32_t c) [constructor]
   4.464      cls.add_constructor([param('double *', 'd'), param('uint32_t', 'c')])
   4.465 +    cls.add_copy_constructor()
   4.466      return
   4.467  
   4.468  def register_Ns3DoubleValue_methods(root_module, cls):
   4.469 -    ## double.h: ns3::DoubleValue::DoubleValue(ns3::DoubleValue const & arg0) [copy constructor]
   4.470 -    cls.add_constructor([param('ns3::DoubleValue const &', 'arg0')])
   4.471      ## double.h: ns3::DoubleValue::DoubleValue() [constructor]
   4.472      cls.add_constructor([])
   4.473      ## double.h: ns3::DoubleValue::DoubleValue(double const & value) [constructor]
   4.474 @@ -1281,17 +1258,17 @@
   4.475                     'bool', 
   4.476                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.477                     is_virtual=True)
   4.478 +    cls.add_copy_constructor()
   4.479      return
   4.480  
   4.481  def register_Ns3EmpiricalVariable_methods(root_module, cls):
   4.482 -    ## random-variable.h: ns3::EmpiricalVariable::EmpiricalVariable(ns3::EmpiricalVariable const & arg0) [copy constructor]
   4.483 -    cls.add_constructor([param('ns3::EmpiricalVariable const &', 'arg0')])
   4.484      ## random-variable.h: ns3::EmpiricalVariable::EmpiricalVariable() [constructor]
   4.485      cls.add_constructor([])
   4.486      ## random-variable.h: void ns3::EmpiricalVariable::CDF(double v, double c) [member function]
   4.487      cls.add_method('CDF', 
   4.488                     'void', 
   4.489                     [param('double', 'v'), param('double', 'c')])
   4.490 +    cls.add_copy_constructor()
   4.491      return
   4.492  
   4.493  def register_Ns3EmptyAttributeValue_methods(root_module, cls):
   4.494 @@ -1317,8 +1294,6 @@
   4.495      return
   4.496  
   4.497  def register_Ns3EnumChecker_methods(root_module, cls):
   4.498 -    ## enum.h: ns3::EnumChecker::EnumChecker(ns3::EnumChecker const & arg0) [copy constructor]
   4.499 -    cls.add_constructor([param('ns3::EnumChecker const &', 'arg0')])
   4.500      ## enum.h: ns3::EnumChecker::EnumChecker() [constructor]
   4.501      cls.add_constructor([])
   4.502      ## enum.h: void ns3::EnumChecker::AddDefault(int v, std::string name) [member function]
   4.503 @@ -1359,11 +1334,10 @@
   4.504                     'bool', 
   4.505                     [param('ns3::AttributeValue const &', 'src'), param('ns3::AttributeValue &', 'dst')], 
   4.506                     is_const=True, is_virtual=True)
   4.507 +    cls.add_copy_constructor()
   4.508      return
   4.509  
   4.510  def register_Ns3EnumValue_methods(root_module, cls):
   4.511 -    ## enum.h: ns3::EnumValue::EnumValue(ns3::EnumValue const & arg0) [copy constructor]
   4.512 -    cls.add_constructor([param('ns3::EnumValue const &', 'arg0')])
   4.513      ## enum.h: ns3::EnumValue::EnumValue() [constructor]
   4.514      cls.add_constructor([])
   4.515      ## enum.h: ns3::EnumValue::EnumValue(int v) [constructor]
   4.516 @@ -1392,34 +1366,26 @@
   4.517                     'bool', 
   4.518                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.519                     is_virtual=True)
   4.520 +    cls.add_copy_constructor()
   4.521      return
   4.522  
   4.523  def register_Ns3ExponentialVariable_methods(root_module, cls):
   4.524 -    ## random-variable.h: ns3::ExponentialVariable::ExponentialVariable(ns3::ExponentialVariable const & arg0) [copy constructor]
   4.525 -    cls.add_constructor([param('ns3::ExponentialVariable const &', 'arg0')])
   4.526      ## random-variable.h: ns3::ExponentialVariable::ExponentialVariable() [constructor]
   4.527      cls.add_constructor([])
   4.528      ## random-variable.h: ns3::ExponentialVariable::ExponentialVariable(double m) [constructor]
   4.529      cls.add_constructor([param('double', 'm')])
   4.530      ## random-variable.h: ns3::ExponentialVariable::ExponentialVariable(double m, double b) [constructor]
   4.531      cls.add_constructor([param('double', 'm'), param('double', 'b')])
   4.532 -    ## random-variable.h: static double ns3::ExponentialVariable::GetSingleValue(double m, double b=0) [member function]
   4.533 -    cls.add_method('GetSingleValue', 
   4.534 -                   'double', 
   4.535 -                   [param('double', 'm'), param('double', 'b', default_value='0')], 
   4.536 -                   is_static=True)
   4.537 +    cls.add_copy_constructor()
   4.538      return
   4.539  
   4.540  def register_Ns3IntEmpiricalVariable_methods(root_module, cls):
   4.541 -    ## random-variable.h: ns3::IntEmpiricalVariable::IntEmpiricalVariable(ns3::IntEmpiricalVariable const & arg0) [copy constructor]
   4.542 -    cls.add_constructor([param('ns3::IntEmpiricalVariable const &', 'arg0')])
   4.543      ## random-variable.h: ns3::IntEmpiricalVariable::IntEmpiricalVariable() [constructor]
   4.544      cls.add_constructor([])
   4.545 +    cls.add_copy_constructor()
   4.546      return
   4.547  
   4.548  def register_Ns3IntegerValue_methods(root_module, cls):
   4.549 -    ## integer.h: ns3::IntegerValue::IntegerValue(ns3::IntegerValue const & arg0) [copy constructor]
   4.550 -    cls.add_constructor([param('ns3::IntegerValue const &', 'arg0')])
   4.551      ## integer.h: ns3::IntegerValue::IntegerValue() [constructor]
   4.552      cls.add_constructor([])
   4.553      ## integer.h: ns3::IntegerValue::IntegerValue(int64_t const & value) [constructor]
   4.554 @@ -1448,39 +1414,23 @@
   4.555                     'bool', 
   4.556                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.557                     is_virtual=True)
   4.558 +    cls.add_copy_constructor()
   4.559      return
   4.560  
   4.561  def register_Ns3LogNormalVariable_methods(root_module, cls):
   4.562 -    ## random-variable.h: ns3::LogNormalVariable::LogNormalVariable(ns3::LogNormalVariable const & arg0) [copy constructor]
   4.563 -    cls.add_constructor([param('ns3::LogNormalVariable const &', 'arg0')])
   4.564      ## random-variable.h: ns3::LogNormalVariable::LogNormalVariable(double mu, double sigma) [constructor]
   4.565      cls.add_constructor([param('double', 'mu'), param('double', 'sigma')])
   4.566 -    ## random-variable.h: static double ns3::LogNormalVariable::GetSingleValue(double mu, double sigma) [member function]
   4.567 -    cls.add_method('GetSingleValue', 
   4.568 -                   'double', 
   4.569 -                   [param('double', 'mu'), param('double', 'sigma')], 
   4.570 -                   is_static=True)
   4.571 +    cls.add_copy_constructor()
   4.572      return
   4.573  
   4.574  def register_Ns3NormalVariable_methods(root_module, cls):
   4.575 -    ## random-variable.h: ns3::NormalVariable::NormalVariable(ns3::NormalVariable const & arg0) [copy constructor]
   4.576 -    cls.add_constructor([param('ns3::NormalVariable const &', 'arg0')])
   4.577 +    ## random-variable.h: ns3::NormalVariable::INFINITE_VALUE [variable]
   4.578 +    cls.add_static_attribute('INFINITE_VALUE', 'double const', is_const=True)
   4.579      ## random-variable.h: ns3::NormalVariable::NormalVariable() [constructor]
   4.580      cls.add_constructor([])
   4.581 -    ## random-variable.h: ns3::NormalVariable::NormalVariable(double m, double v) [constructor]
   4.582 -    cls.add_constructor([param('double', 'm'), param('double', 'v')])
   4.583 -    ## random-variable.h: ns3::NormalVariable::NormalVariable(double m, double v, double b) [constructor]
   4.584 -    cls.add_constructor([param('double', 'm'), param('double', 'v'), param('double', 'b')])
   4.585 -    ## random-variable.h: static double ns3::NormalVariable::GetSingleValue(double m, double v) [member function]
   4.586 -    cls.add_method('GetSingleValue', 
   4.587 -                   'double', 
   4.588 -                   [param('double', 'm'), param('double', 'v')], 
   4.589 -                   is_static=True)
   4.590 -    ## random-variable.h: static double ns3::NormalVariable::GetSingleValue(double m, double v, double b) [member function]
   4.591 -    cls.add_method('GetSingleValue', 
   4.592 -                   'double', 
   4.593 -                   [param('double', 'm'), param('double', 'v'), param('double', 'b')], 
   4.594 -                   is_static=True)
   4.595 +    ## random-variable.h: ns3::NormalVariable::NormalVariable(double m, double v, double b=ns3::NormalVariable::INFINITE_VALUE) [constructor]
   4.596 +    cls.add_constructor([param('double', 'm'), param('double', 'v'), param('double', 'b', default_value='ns3::NormalVariable::INFINITE_VALUE')])
   4.597 +    cls.add_copy_constructor()
   4.598      return
   4.599  
   4.600  def register_Ns3Object_methods(root_module, cls):
   4.601 @@ -1525,8 +1475,6 @@
   4.602      return
   4.603  
   4.604  def register_Ns3ObjectAggregateIterator_methods(root_module, cls):
   4.605 -    ## object.h: ns3::Object::AggregateIterator::AggregateIterator(ns3::Object::AggregateIterator const & arg0) [copy constructor]
   4.606 -    cls.add_constructor([param('ns3::Object::AggregateIterator const &', 'arg0')])
   4.607      ## object.h: ns3::Object::AggregateIterator::AggregateIterator() [constructor]
   4.608      cls.add_constructor([])
   4.609      ## object.h: bool ns3::Object::AggregateIterator::HasNext() const [member function]
   4.610 @@ -1538,18 +1486,15 @@
   4.611      cls.add_method('Next', 
   4.612                     'ns3::Ptr< ns3::Object const >', 
   4.613                     [])
   4.614 +    cls.add_copy_constructor()
   4.615      return
   4.616  
   4.617  def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
   4.618 -    ## object-factory.h: ns3::ObjectFactoryChecker::ObjectFactoryChecker(ns3::ObjectFactoryChecker const & arg0) [copy constructor]
   4.619 -    cls.add_constructor([param('ns3::ObjectFactoryChecker const &', 'arg0')])
   4.620 -    ## object-factory.h: ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
   4.621      cls.add_constructor([])
   4.622 +    cls.add_copy_constructor()
   4.623      return
   4.624  
   4.625  def register_Ns3ObjectFactoryValue_methods(root_module, cls):
   4.626 -    ## object-factory.h: ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactoryValue const & arg0) [copy constructor]
   4.627 -    cls.add_constructor([param('ns3::ObjectFactoryValue const &', 'arg0')])
   4.628      ## object-factory.h: ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
   4.629      cls.add_constructor([])
   4.630      ## object-factory.h: ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
   4.631 @@ -1578,13 +1523,10 @@
   4.632                     'bool', 
   4.633                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.634                     is_virtual=True)
   4.635 +    cls.add_copy_constructor()
   4.636      return
   4.637  
   4.638  def register_Ns3ObjectVectorAccessor_methods(root_module, cls):
   4.639 -    ## object-vector.h: ns3::ObjectVectorAccessor::ObjectVectorAccessor(ns3::ObjectVectorAccessor const & arg0) [copy constructor]
   4.640 -    cls.add_constructor([param('ns3::ObjectVectorAccessor const &', 'arg0')])
   4.641 -    ## object-vector.h: ns3::ObjectVectorAccessor::ObjectVectorAccessor() [constructor]
   4.642 -    cls.add_constructor([])
   4.643      ## object-vector.h: bool ns3::ObjectVectorAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
   4.644      cls.add_method('Set', 
   4.645                     'bool', 
   4.646 @@ -1615,23 +1557,21 @@
   4.647                     'ns3::Ptr< ns3::Object >', 
   4.648                     [param('ns3::ObjectBase const *', 'object'), param('uint32_t', 'i')], 
   4.649                     is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
   4.650 +    cls.add_constructor([])
   4.651 +    cls.add_copy_constructor()
   4.652      return
   4.653  
   4.654  def register_Ns3ObjectVectorChecker_methods(root_module, cls):
   4.655 -    ## object-vector.h: ns3::ObjectVectorChecker::ObjectVectorChecker(ns3::ObjectVectorChecker const & arg0) [copy constructor]
   4.656 -    cls.add_constructor([param('ns3::ObjectVectorChecker const &', 'arg0')])
   4.657 -    ## object-vector.h: ns3::ObjectVectorChecker::ObjectVectorChecker() [constructor]
   4.658 -    cls.add_constructor([])
   4.659      ## object-vector.h: ns3::TypeId ns3::ObjectVectorChecker::GetItemTypeId() const [member function]
   4.660      cls.add_method('GetItemTypeId', 
   4.661                     'ns3::TypeId', 
   4.662                     [], 
   4.663                     is_pure_virtual=True, is_const=True, is_virtual=True)
   4.664 +    cls.add_constructor([])
   4.665 +    cls.add_copy_constructor()
   4.666      return
   4.667  
   4.668  def register_Ns3ObjectVectorValue_methods(root_module, cls):
   4.669 -    ## object-vector.h: ns3::ObjectVectorValue::ObjectVectorValue(ns3::ObjectVectorValue const & arg0) [copy constructor]
   4.670 -    cls.add_constructor([param('ns3::ObjectVectorValue const &', 'arg0')])
   4.671      ## object-vector.h: ns3::ObjectVectorValue::ObjectVectorValue() [constructor]
   4.672      cls.add_constructor([])
   4.673      ## 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]
   4.674 @@ -1669,11 +1609,10 @@
   4.675                     'bool', 
   4.676                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.677                     is_virtual=True)
   4.678 +    cls.add_copy_constructor()
   4.679      return
   4.680  
   4.681  def register_Ns3ParetoVariable_methods(root_module, cls):
   4.682 -    ## random-variable.h: ns3::ParetoVariable::ParetoVariable(ns3::ParetoVariable const & arg0) [copy constructor]
   4.683 -    cls.add_constructor([param('ns3::ParetoVariable const &', 'arg0')])
   4.684      ## random-variable.h: ns3::ParetoVariable::ParetoVariable() [constructor]
   4.685      cls.add_constructor([])
   4.686      ## random-variable.h: ns3::ParetoVariable::ParetoVariable(double m) [constructor]
   4.687 @@ -1682,23 +1621,17 @@
   4.688      cls.add_constructor([param('double', 'm'), param('double', 's')])
   4.689      ## random-variable.h: ns3::ParetoVariable::ParetoVariable(double m, double s, double b) [constructor]
   4.690      cls.add_constructor([param('double', 'm'), param('double', 's'), param('double', 'b')])
   4.691 -    ## random-variable.h: static double ns3::ParetoVariable::GetSingleValue(double m, double s, double b=0) [member function]
   4.692 -    cls.add_method('GetSingleValue', 
   4.693 -                   'double', 
   4.694 -                   [param('double', 'm'), param('double', 's'), param('double', 'b', default_value='0')], 
   4.695 -                   is_static=True)
   4.696 +    cls.add_copy_constructor()
   4.697      return
   4.698  
   4.699  def register_Ns3PointerChecker_methods(root_module, cls):
   4.700 -    ## pointer.h: ns3::PointerChecker::PointerChecker(ns3::PointerChecker const & arg0) [copy constructor]
   4.701 -    cls.add_constructor([param('ns3::PointerChecker const &', 'arg0')])
   4.702 -    ## pointer.h: ns3::PointerChecker::PointerChecker() [constructor]
   4.703 -    cls.add_constructor([])
   4.704      ## pointer.h: ns3::TypeId ns3::PointerChecker::GetPointeeTypeId() const [member function]
   4.705      cls.add_method('GetPointeeTypeId', 
   4.706                     'ns3::TypeId', 
   4.707                     [], 
   4.708                     is_pure_virtual=True, is_const=True, is_virtual=True)
   4.709 +    cls.add_constructor([])
   4.710 +    cls.add_copy_constructor()
   4.711      return
   4.712  
   4.713  def register_Ns3PointerValue_methods(root_module, cls):
   4.714 @@ -1735,15 +1668,11 @@
   4.715      return
   4.716  
   4.717  def register_Ns3RandomVariableChecker_methods(root_module, cls):
   4.718 -    ## random-variable.h: ns3::RandomVariableChecker::RandomVariableChecker(ns3::RandomVariableChecker const & arg0) [copy constructor]
   4.719 -    cls.add_constructor([param('ns3::RandomVariableChecker const &', 'arg0')])
   4.720 -    ## random-variable.h: ns3::RandomVariableChecker::RandomVariableChecker() [constructor]
   4.721      cls.add_constructor([])
   4.722 +    cls.add_copy_constructor()
   4.723      return
   4.724  
   4.725  def register_Ns3RandomVariableValue_methods(root_module, cls):
   4.726 -    ## random-variable.h: ns3::RandomVariableValue::RandomVariableValue(ns3::RandomVariableValue const & arg0) [copy constructor]
   4.727 -    cls.add_constructor([param('ns3::RandomVariableValue const &', 'arg0')])
   4.728      ## random-variable.h: ns3::RandomVariableValue::RandomVariableValue() [constructor]
   4.729      cls.add_constructor([])
   4.730      ## random-variable.h: ns3::RandomVariableValue::RandomVariableValue(ns3::RandomVariable const & value) [constructor]
   4.731 @@ -1772,18 +1701,15 @@
   4.732                     'bool', 
   4.733                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.734                     is_virtual=True)
   4.735 +    cls.add_copy_constructor()
   4.736      return
   4.737  
   4.738  def register_Ns3StringChecker_methods(root_module, cls):
   4.739 -    ## string.h: ns3::StringChecker::StringChecker(ns3::StringChecker const & arg0) [copy constructor]
   4.740 -    cls.add_constructor([param('ns3::StringChecker const &', 'arg0')])
   4.741 -    ## string.h: ns3::StringChecker::StringChecker() [constructor]
   4.742      cls.add_constructor([])
   4.743 +    cls.add_copy_constructor()
   4.744      return
   4.745  
   4.746  def register_Ns3StringValue_methods(root_module, cls):
   4.747 -    ## string.h: ns3::StringValue::StringValue(ns3::StringValue const & arg0) [copy constructor]
   4.748 -    cls.add_constructor([param('ns3::StringValue const &', 'arg0')])
   4.749      ## string.h: ns3::StringValue::StringValue() [constructor]
   4.750      cls.add_constructor([])
   4.751      ## string.h: ns3::StringValue::StringValue(std::string const & value) [constructor]
   4.752 @@ -1812,18 +1738,15 @@
   4.753                     'bool', 
   4.754                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.755                     is_virtual=True)
   4.756 +    cls.add_copy_constructor()
   4.757      return
   4.758  
   4.759  def register_Ns3TypeIdChecker_methods(root_module, cls):
   4.760 -    ## type-id.h: ns3::TypeIdChecker::TypeIdChecker(ns3::TypeIdChecker const & arg0) [copy constructor]
   4.761 -    cls.add_constructor([param('ns3::TypeIdChecker const &', 'arg0')])
   4.762 -    ## type-id.h: ns3::TypeIdChecker::TypeIdChecker() [constructor]
   4.763      cls.add_constructor([])
   4.764 +    cls.add_copy_constructor()
   4.765      return
   4.766  
   4.767  def register_Ns3TypeIdValue_methods(root_module, cls):
   4.768 -    ## type-id.h: ns3::TypeIdValue::TypeIdValue(ns3::TypeIdValue const & arg0) [copy constructor]
   4.769 -    cls.add_constructor([param('ns3::TypeIdValue const &', 'arg0')])
   4.770      ## type-id.h: ns3::TypeIdValue::TypeIdValue() [constructor]
   4.771      cls.add_constructor([])
   4.772      ## type-id.h: ns3::TypeIdValue::TypeIdValue(ns3::TypeId const & value) [constructor]
   4.773 @@ -1852,11 +1775,10 @@
   4.774                     'bool', 
   4.775                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.776                     is_virtual=True)
   4.777 +    cls.add_copy_constructor()
   4.778      return
   4.779  
   4.780  def register_Ns3UintegerValue_methods(root_module, cls):
   4.781 -    ## uinteger.h: ns3::UintegerValue::UintegerValue(ns3::UintegerValue const & arg0) [copy constructor]
   4.782 -    cls.add_constructor([param('ns3::UintegerValue const &', 'arg0')])
   4.783      ## uinteger.h: ns3::UintegerValue::UintegerValue() [constructor]
   4.784      cls.add_constructor([])
   4.785      ## uinteger.h: ns3::UintegerValue::UintegerValue(uint64_t const & value) [constructor]
   4.786 @@ -1885,6 +1807,7 @@
   4.787                     'bool', 
   4.788                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   4.789                     is_virtual=True)
   4.790 +    cls.add_copy_constructor()
   4.791      return
   4.792  
   4.793  def register_Ns3TracedValue__Unsigned_int_methods(root_module, cls):
   4.794 @@ -1930,8 +1853,6 @@
   4.795      return
   4.796  
   4.797  def register_Ns3ConfigMatchContainer_methods(root_module, cls):
   4.798 -    ## config.h: ns3::Config::MatchContainer::MatchContainer(ns3::Config::MatchContainer const & arg0) [copy constructor]
   4.799 -    cls.add_constructor([param('ns3::Config::MatchContainer const &', 'arg0')])
   4.800      ## config.h: ns3::Config::MatchContainer::MatchContainer() [constructor]
   4.801      cls.add_constructor([])
   4.802      ## config.h: ns3::Config::MatchContainer::MatchContainer(std::vector<ns3::Ptr<ns3::Object>, std::allocator<ns3::Ptr<ns3::Object> > > const & objects, std::vector<std::string, std::allocator<std::string> > const & contexts, std::string path) [constructor]
   4.803 @@ -1986,6 +1907,7 @@
   4.804      cls.add_method('DisconnectWithoutContext', 
   4.805                     'void', 
   4.806                     [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
   4.807 +    cls.add_copy_constructor()
   4.808      return
   4.809  
   4.810  def register_functions(root_module):
     5.1 --- a/bindings/python/ns3_module_csma.py	Tue Dec 30 11:35:31 2008 -0800
     5.2 +++ b/bindings/python/ns3_module_csma.py	Tue Jan 13 17:15:44 2009 -0500
     5.3 @@ -74,8 +74,6 @@
     5.4      cls.add_instance_attribute('m_maxRetries', 'uint32_t', is_const=False)
     5.5      ## backoff.h: ns3::Backoff::m_slotTime [variable]
     5.6      cls.add_instance_attribute('m_slotTime', 'ns3::Time', is_const=False)
     5.7 -    ## backoff.h: ns3::Backoff::Backoff(ns3::Backoff const & arg0) [copy constructor]
     5.8 -    cls.add_constructor([param('ns3::Backoff const &', 'arg0')])
     5.9      ## backoff.h: ns3::Backoff::Backoff() [constructor]
    5.10      cls.add_constructor([])
    5.11      ## backoff.h: ns3::Backoff::Backoff(ns3::Time slotTime, uint32_t minSlots, uint32_t maxSlots, uint32_t ceiling, uint32_t maxRetries) [constructor]
    5.12 @@ -96,6 +94,7 @@
    5.13      cls.add_method('IncrNumRetries', 
    5.14                     'void', 
    5.15                     [])
    5.16 +    cls.add_copy_constructor()
    5.17      return
    5.18  
    5.19  def register_Ns3CsmaDeviceRec_methods(root_module, cls):
    5.20 @@ -103,8 +102,6 @@
    5.21      cls.add_instance_attribute('devicePtr', 'ns3::Ptr< ns3::CsmaNetDevice >', is_const=False)
    5.22      ## csma-channel.h: ns3::CsmaDeviceRec::active [variable]
    5.23      cls.add_instance_attribute('active', 'bool', is_const=False)
    5.24 -    ## csma-channel.h: ns3::CsmaDeviceRec::CsmaDeviceRec(ns3::CsmaDeviceRec const & arg0) [copy constructor]
    5.25 -    cls.add_constructor([param('ns3::CsmaDeviceRec const &', 'arg0')])
    5.26      ## csma-channel.h: ns3::CsmaDeviceRec::CsmaDeviceRec() [constructor]
    5.27      cls.add_constructor([])
    5.28      ## csma-channel.h: ns3::CsmaDeviceRec::CsmaDeviceRec(ns3::Ptr<ns3::CsmaNetDevice> device) [constructor]
    5.29 @@ -113,11 +110,10 @@
    5.30      cls.add_method('IsActive', 
    5.31                     'bool', 
    5.32                     [])
    5.33 +    cls.add_copy_constructor()
    5.34      return
    5.35  
    5.36  def register_Ns3CsmaChannel_methods(root_module, cls):
    5.37 -    ## csma-channel.h: ns3::CsmaChannel::CsmaChannel(ns3::CsmaChannel const & arg0) [copy constructor]
    5.38 -    cls.add_constructor([param('ns3::CsmaChannel const &', 'arg0')])
    5.39      ## csma-channel.h: static ns3::TypeId ns3::CsmaChannel::GetTypeId() [member function]
    5.40      cls.add_method('GetTypeId', 
    5.41                     'ns3::TypeId', 
    5.42 @@ -202,6 +198,7 @@
    5.43                     'ns3::Time', 
    5.44                     [], 
    5.45                     is_virtual=True)
    5.46 +    cls.add_copy_constructor()
    5.47      return
    5.48  
    5.49  def register_Ns3CsmaNetDevice_methods(root_module, cls):
     6.1 --- a/bindings/python/ns3_module_emu.py	Tue Dec 30 11:35:31 2008 -0800
     6.2 +++ b/bindings/python/ns3_module_emu.py	Tue Jan 13 17:15:44 2009 -0500
     6.3 @@ -51,8 +51,6 @@
     6.4      return
     6.5  
     6.6  def register_Ns3EmuNetDevice_methods(root_module, cls):
     6.7 -    ## emu-net-device.h: ns3::EmuNetDevice::EmuNetDevice(ns3::EmuNetDevice const & arg0) [copy constructor]
     6.8 -    cls.add_constructor([param('ns3::EmuNetDevice const &', 'arg0')])
     6.9      ## emu-net-device.h: static ns3::TypeId ns3::EmuNetDevice::GetTypeId() [member function]
    6.10      cls.add_method('GetTypeId', 
    6.11                     'ns3::TypeId', 
    6.12 @@ -210,6 +208,7 @@
    6.13                     'void', 
    6.14                     [], 
    6.15                     visibility='private', is_virtual=True)
    6.16 +    cls.add_copy_constructor()
    6.17      return
    6.18  
    6.19  def register_functions(root_module):
     7.1 --- a/bindings/python/ns3_module_global_routing.py	Tue Dec 30 11:35:31 2008 -0800
     7.2 +++ b/bindings/python/ns3_module_global_routing.py	Tue Jan 13 17:15:44 2009 -0500
     7.3 @@ -205,8 +205,6 @@
     7.4      return
     7.5  
     7.6  def register_Ns3GlobalRoutingLinkRecord_methods(root_module, cls):
     7.7 -    ## global-router-interface.h: ns3::GlobalRoutingLinkRecord::GlobalRoutingLinkRecord(ns3::GlobalRoutingLinkRecord const & arg0) [copy constructor]
     7.8 -    cls.add_constructor([param('ns3::GlobalRoutingLinkRecord const &', 'arg0')])
     7.9      ## global-router-interface.h: ns3::GlobalRoutingLinkRecord::GlobalRoutingLinkRecord() [constructor]
    7.10      cls.add_constructor([])
    7.11      ## global-router-interface.h: ns3::GlobalRoutingLinkRecord::GlobalRoutingLinkRecord(ns3::GlobalRoutingLinkRecord::LinkType linkType, ns3::Ipv4Address linkId, ns3::Ipv4Address linkData, uint16_t metric) [constructor]
    7.12 @@ -247,6 +245,7 @@
    7.13      cls.add_method('SetMetric', 
    7.14                     'void', 
    7.15                     [param('uint16_t', 'metric')])
    7.16 +    cls.add_copy_constructor()
    7.17      return
    7.18  
    7.19  def register_Ns3GlobalRouter_methods(root_module, cls):
     8.1 --- a/bindings/python/ns3_module_helper.py	Tue Dec 30 11:35:31 2008 -0800
     8.2 +++ b/bindings/python/ns3_module_helper.py	Tue Jan 13 17:15:44 2009 -0500
     8.3 @@ -120,8 +120,6 @@
     8.4      return
     8.5  
     8.6  def register_Ns3ApplicationContainer_methods(root_module, cls):
     8.7 -    ## application-container.h: ns3::ApplicationContainer::ApplicationContainer(ns3::ApplicationContainer const & arg0) [copy constructor]
     8.8 -    cls.add_constructor([param('ns3::ApplicationContainer const &', 'arg0')])
     8.9      ## application-container.h: ns3::ApplicationContainer::ApplicationContainer() [constructor]
    8.10      cls.add_constructor([])
    8.11      ## application-container.h: ns3::ApplicationContainer::ApplicationContainer(ns3::Ptr<ns3::Application> application) [constructor]
    8.12 @@ -162,11 +160,10 @@
    8.13      cls.add_method('Stop', 
    8.14                     'void', 
    8.15                     [param('ns3::Time', 'stop')])
    8.16 +    cls.add_copy_constructor()
    8.17      return
    8.18  
    8.19  def register_Ns3BridgeHelper_methods(root_module, cls):
    8.20 -    ## bridge-helper.h: ns3::BridgeHelper::BridgeHelper(ns3::BridgeHelper const & arg0) [copy constructor]
    8.21 -    cls.add_constructor([param('ns3::BridgeHelper const &', 'arg0')])
    8.22      ## bridge-helper.h: ns3::BridgeHelper::BridgeHelper() [constructor]
    8.23      cls.add_constructor([])
    8.24      ## bridge-helper.h: void ns3::BridgeHelper::SetDeviceAttribute(std::string n1, ns3::AttributeValue const & v1) [member function]
    8.25 @@ -177,11 +174,10 @@
    8.26      cls.add_method('Install', 
    8.27                     'ns3::NetDeviceContainer', 
    8.28                     [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::NetDeviceContainer', 'c')])
    8.29 +    cls.add_copy_constructor()
    8.30      return
    8.31  
    8.32  def register_Ns3CsmaHelper_methods(root_module, cls):
    8.33 -    ## csma-helper.h: ns3::CsmaHelper::CsmaHelper(ns3::CsmaHelper const & arg0) [copy constructor]
    8.34 -    cls.add_constructor([param('ns3::CsmaHelper const &', 'arg0')])
    8.35      ## csma-helper.h: ns3::CsmaHelper::CsmaHelper() [constructor]
    8.36      cls.add_constructor([])
    8.37      ## 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]
    8.38 @@ -270,11 +266,10 @@
    8.39      cls.add_method('InstallStar', 
    8.40                     'void', 
    8.41                     [param('ns3::Ptr< ns3::Node >', 'hub'), param('ns3::NodeContainer', 'spokes'), param('ns3::NetDeviceContainer &', 'hubDevices'), param('ns3::NetDeviceContainer &', 'spokeDevices')])
    8.42 +    cls.add_copy_constructor()
    8.43      return
    8.44  
    8.45  def register_Ns3EmuHelper_methods(root_module, cls):
    8.46 -    ## emu-helper.h: ns3::EmuHelper::EmuHelper(ns3::EmuHelper const & arg0) [copy constructor]
    8.47 -    cls.add_constructor([param('ns3::EmuHelper const &', 'arg0')])
    8.48      ## emu-helper.h: ns3::EmuHelper::EmuHelper() [constructor]
    8.49      cls.add_constructor([])
    8.50      ## emu-helper.h: void ns3::EmuHelper::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]
    8.51 @@ -335,11 +330,10 @@
    8.52                     'ns3::NetDeviceContainer', 
    8.53                     [param('ns3::NodeContainer const &', 'c')], 
    8.54                     is_const=True)
    8.55 +    cls.add_copy_constructor()
    8.56      return
    8.57  
    8.58  def register_Ns3InternetStackHelper_methods(root_module, cls):
    8.59 -    ## internet-stack-helper.h: ns3::InternetStackHelper::InternetStackHelper(ns3::InternetStackHelper const & arg0) [copy constructor]
    8.60 -    cls.add_constructor([param('ns3::InternetStackHelper const &', 'arg0')])
    8.61      ## internet-stack-helper.h: ns3::InternetStackHelper::InternetStackHelper() [constructor]
    8.62      cls.add_constructor([])
    8.63      ## internet-stack-helper.h: void ns3::InternetStackHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
    8.64 @@ -371,11 +365,10 @@
    8.65                     'void', 
    8.66                     [param('std::string', 'filename')], 
    8.67                     is_static=True)
    8.68 +    cls.add_copy_constructor()
    8.69      return
    8.70  
    8.71  def register_Ns3Ipv4AddressHelper_methods(root_module, cls):
    8.72 -    ## ipv4-address-helper.h: ns3::Ipv4AddressHelper::Ipv4AddressHelper(ns3::Ipv4AddressHelper const & arg0) [copy constructor]
    8.73 -    cls.add_constructor([param('ns3::Ipv4AddressHelper const &', 'arg0')])
    8.74      ## ipv4-address-helper.h: ns3::Ipv4AddressHelper::Ipv4AddressHelper() [constructor]
    8.75      cls.add_constructor([])
    8.76      ## ipv4-address-helper.h: void ns3::Ipv4AddressHelper::SetBase(ns3::Ipv4Address network, ns3::Ipv4Mask mask, ns3::Ipv4Address base="0.0.0.1") [member function]
    8.77 @@ -394,11 +387,10 @@
    8.78      cls.add_method('Assign', 
    8.79                     'ns3::Ipv4InterfaceContainer', 
    8.80                     [param('ns3::NetDeviceContainer const &', 'c')])
    8.81 +    cls.add_copy_constructor()
    8.82      return
    8.83  
    8.84  def register_Ns3Ipv4InterfaceContainer_methods(root_module, cls):
    8.85 -    ## ipv4-interface-container.h: ns3::Ipv4InterfaceContainer::Ipv4InterfaceContainer(ns3::Ipv4InterfaceContainer const & arg0) [copy constructor]
    8.86 -    cls.add_constructor([param('ns3::Ipv4InterfaceContainer const &', 'arg0')])
    8.87      ## ipv4-interface-container.h: ns3::Ipv4InterfaceContainer::Ipv4InterfaceContainer() [constructor]
    8.88      cls.add_constructor([])
    8.89      ## ipv4-interface-container.h: void ns3::Ipv4InterfaceContainer::Add(ns3::Ipv4InterfaceContainer other) [member function]
    8.90 @@ -423,11 +415,10 @@
    8.91      cls.add_method('Add', 
    8.92                     'void', 
    8.93                     [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4'), param('uint32_t', 'interface')])
    8.94 +    cls.add_copy_constructor()
    8.95      return
    8.96  
    8.97  def register_Ns3MobilityHelper_methods(root_module, cls):
    8.98 -    ## mobility-helper.h: ns3::MobilityHelper::MobilityHelper(ns3::MobilityHelper const & arg0) [copy constructor]
    8.99 -    cls.add_constructor([param('ns3::MobilityHelper const &', 'arg0')])
   8.100      ## mobility-helper.h: ns3::MobilityHelper::MobilityHelper() [constructor]
   8.101      cls.add_constructor([])
   8.102      ## mobility-helper.h: void ns3::MobilityHelper::SetPositionAllocator(ns3::Ptr<ns3::PositionAllocator> allocator) [member function]
   8.103 @@ -484,11 +475,10 @@
   8.104                     'void', 
   8.105                     [param('std::ostream &', 'os')], 
   8.106                     is_static=True)
   8.107 +    cls.add_copy_constructor()
   8.108      return
   8.109  
   8.110  def register_Ns3NetDeviceContainer_methods(root_module, cls):
   8.111 -    ## net-device-container.h: ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & arg0) [copy constructor]
   8.112 -    cls.add_constructor([param('ns3::NetDeviceContainer const &', 'arg0')])
   8.113      ## net-device-container.h: ns3::NetDeviceContainer::NetDeviceContainer() [constructor]
   8.114      cls.add_constructor([])
   8.115      ## net-device-container.h: ns3::NetDeviceContainer::NetDeviceContainer(ns3::Ptr<ns3::NetDevice> dev) [constructor]
   8.116 @@ -523,11 +513,10 @@
   8.117      cls.add_method('Add', 
   8.118                     'void', 
   8.119                     [param('ns3::Ptr< ns3::NetDevice >', 'device')])
   8.120 +    cls.add_copy_constructor()
   8.121      return
   8.122  
   8.123  def register_Ns3NodeContainer_methods(root_module, cls):
   8.124 -    ## node-container.h: ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & arg0) [copy constructor]
   8.125 -    cls.add_constructor([param('ns3::NodeContainer const &', 'arg0')])
   8.126      ## node-container.h: ns3::NodeContainer::NodeContainer() [constructor]
   8.127      cls.add_constructor([])
   8.128      ## node-container.h: ns3::NodeContainer::NodeContainer(ns3::Ptr<ns3::Node> node) [constructor]
   8.129 @@ -577,11 +566,10 @@
   8.130                     'ns3::NodeContainer', 
   8.131                     [], 
   8.132                     is_static=True)
   8.133 +    cls.add_copy_constructor()
   8.134      return
   8.135  
   8.136  def register_Ns3Ns2MobilityHelper_methods(root_module, cls):
   8.137 -    ## ns2-mobility-helper.h: ns3::Ns2MobilityHelper::Ns2MobilityHelper(ns3::Ns2MobilityHelper const & arg0) [copy constructor]
   8.138 -    cls.add_constructor([param('ns3::Ns2MobilityHelper const &', 'arg0')])
   8.139      ## ns2-mobility-helper.h: ns3::Ns2MobilityHelper::Ns2MobilityHelper(std::string filename) [constructor]
   8.140      cls.add_constructor([param('std::string', 'filename')])
   8.141      ## ns2-mobility-helper.h: void ns3::Ns2MobilityHelper::Install() const [member function]
   8.142 @@ -589,11 +577,10 @@
   8.143                     'void', 
   8.144                     [], 
   8.145                     is_const=True)
   8.146 +    cls.add_copy_constructor()
   8.147      return
   8.148  
   8.149  def register_Ns3OlsrHelper_methods(root_module, cls):
   8.150 -    ## olsr-helper.h: ns3::OlsrHelper::OlsrHelper(ns3::OlsrHelper const & arg0) [copy constructor]
   8.151 -    cls.add_constructor([param('ns3::OlsrHelper const &', 'arg0')])
   8.152      ## olsr-helper.h: ns3::OlsrHelper::OlsrHelper() [constructor]
   8.153      cls.add_constructor([])
   8.154      ## 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]
   8.155 @@ -612,11 +599,10 @@
   8.156      cls.add_method('InstallAll', 
   8.157                     'void', 
   8.158                     [])
   8.159 +    cls.add_copy_constructor()
   8.160      return
   8.161  
   8.162  def register_Ns3OnOffHelper_methods(root_module, cls):
   8.163 -    ## on-off-helper.h: ns3::OnOffHelper::OnOffHelper(ns3::OnOffHelper const & arg0) [copy constructor]
   8.164 -    cls.add_constructor([param('ns3::OnOffHelper const &', 'arg0')])
   8.165      ## on-off-helper.h: ns3::OnOffHelper::OnOffHelper(std::string protocol, ns3::Address address) [constructor]
   8.166      cls.add_constructor([param('std::string', 'protocol'), param('ns3::Address', 'address')])
   8.167      ## on-off-helper.h: void ns3::OnOffHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
   8.168 @@ -633,11 +619,10 @@
   8.169                     'ns3::ApplicationContainer', 
   8.170                     [param('ns3::Ptr< ns3::Node >', 'node')], 
   8.171                     is_const=True)
   8.172 +    cls.add_copy_constructor()
   8.173      return
   8.174  
   8.175  def register_Ns3PacketSinkHelper_methods(root_module, cls):
   8.176 -    ## packet-sink-helper.h: ns3::PacketSinkHelper::PacketSinkHelper(ns3::PacketSinkHelper const & arg0) [copy constructor]
   8.177 -    cls.add_constructor([param('ns3::PacketSinkHelper const &', 'arg0')])
   8.178      ## packet-sink-helper.h: ns3::PacketSinkHelper::PacketSinkHelper(std::string protocol, ns3::Address address) [constructor]
   8.179      cls.add_constructor([param('std::string', 'protocol'), param('ns3::Address', 'address')])
   8.180      ## packet-sink-helper.h: void ns3::PacketSinkHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
   8.181 @@ -654,13 +639,10 @@
   8.182                     'ns3::ApplicationContainer', 
   8.183                     [param('ns3::Ptr< ns3::Node >', 'node')], 
   8.184                     is_const=True)
   8.185 +    cls.add_copy_constructor()
   8.186      return
   8.187  
   8.188  def register_Ns3PacketSocketHelper_methods(root_module, cls):
   8.189 -    ## packet-socket-helper.h: ns3::PacketSocketHelper::PacketSocketHelper(ns3::PacketSocketHelper const & arg0) [copy constructor]
   8.190 -    cls.add_constructor([param('ns3::PacketSocketHelper const &', 'arg0')])
   8.191 -    ## packet-socket-helper.h: ns3::PacketSocketHelper::PacketSocketHelper() [constructor]
   8.192 -    cls.add_constructor([])
   8.193      ## packet-socket-helper.h: void ns3::PacketSocketHelper::Install(ns3::Ptr<ns3::Node> node) const [member function]
   8.194      cls.add_method('Install', 
   8.195                     'void', 
   8.196 @@ -671,11 +653,11 @@
   8.197                     'void', 
   8.198                     [param('ns3::NodeContainer', 'c')], 
   8.199                     is_const=True)
   8.200 +    cls.add_constructor([])
   8.201 +    cls.add_copy_constructor()
   8.202      return
   8.203  
   8.204  def register_Ns3PointToPointHelper_methods(root_module, cls):
   8.205 -    ## point-to-point-helper.h: ns3::PointToPointHelper::PointToPointHelper(ns3::PointToPointHelper const & arg0) [copy constructor]
   8.206 -    cls.add_constructor([param('ns3::PointToPointHelper const &', 'arg0')])
   8.207      ## point-to-point-helper.h: ns3::PointToPointHelper::PointToPointHelper() [constructor]
   8.208      cls.add_constructor([])
   8.209      ## 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]
   8.210 @@ -752,11 +734,10 @@
   8.211      cls.add_method('InstallStar', 
   8.212                     'void', 
   8.213                     [param('ns3::Ptr< ns3::Node >', 'hub'), param('ns3::NodeContainer', 'spokes'), param('ns3::NetDeviceContainer &', 'hubDevices'), param('ns3::NetDeviceContainer &', 'spokeDevices')])
   8.214 +    cls.add_copy_constructor()
   8.215      return
   8.216  
   8.217  def register_Ns3StaticMulticastRouteHelper_methods(root_module, cls):
   8.218 -    ## static-multicast-route-helper.h: ns3::StaticMulticastRouteHelper::StaticMulticastRouteHelper(ns3::StaticMulticastRouteHelper const & arg0) [copy constructor]
   8.219 -    cls.add_constructor([param('ns3::StaticMulticastRouteHelper const &', 'arg0')])
   8.220      ## static-multicast-route-helper.h: ns3::StaticMulticastRouteHelper::StaticMulticastRouteHelper() [constructor]
   8.221      cls.add_constructor([])
   8.222      ## 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]
   8.223 @@ -771,11 +752,10 @@
   8.224      cls.add_method('JoinMulticastGroup', 
   8.225                     'void', 
   8.226                     [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group')])
   8.227 +    cls.add_copy_constructor()
   8.228      return
   8.229  
   8.230  def register_Ns3UdpEchoClientHelper_methods(root_module, cls):
   8.231 -    ## udp-echo-helper.h: ns3::UdpEchoClientHelper::UdpEchoClientHelper(ns3::UdpEchoClientHelper const & arg0) [copy constructor]
   8.232 -    cls.add_constructor([param('ns3::UdpEchoClientHelper const &', 'arg0')])
   8.233      ## udp-echo-helper.h: ns3::UdpEchoClientHelper::UdpEchoClientHelper(ns3::Ipv4Address ip, uint16_t port) [constructor]
   8.234      cls.add_constructor([param('ns3::Ipv4Address', 'ip'), param('uint16_t', 'port')])
   8.235      ## udp-echo-helper.h: void ns3::UdpEchoClientHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
   8.236 @@ -792,11 +772,10 @@
   8.237                     'ns3::ApplicationContainer', 
   8.238                     [param('ns3::NodeContainer', 'c')], 
   8.239                     is_const=True)
   8.240 +    cls.add_copy_constructor()
   8.241      return
   8.242  
   8.243  def register_Ns3UdpEchoServerHelper_methods(root_module, cls):
   8.244 -    ## udp-echo-helper.h: ns3::UdpEchoServerHelper::UdpEchoServerHelper(ns3::UdpEchoServerHelper const & arg0) [copy constructor]
   8.245 -    cls.add_constructor([param('ns3::UdpEchoServerHelper const &', 'arg0')])
   8.246      ## udp-echo-helper.h: ns3::UdpEchoServerHelper::UdpEchoServerHelper(uint16_t port) [constructor]
   8.247      cls.add_constructor([param('uint16_t', 'port')])
   8.248      ## udp-echo-helper.h: void ns3::UdpEchoServerHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
   8.249 @@ -813,11 +792,10 @@
   8.250                     'ns3::ApplicationContainer', 
   8.251                     [param('ns3::NodeContainer', 'c')], 
   8.252                     is_const=True)
   8.253 +    cls.add_copy_constructor()
   8.254      return
   8.255  
   8.256  def register_Ns3V4PingHelper_methods(root_module, cls):
   8.257 -    ## v4ping-helper.h: ns3::V4PingHelper::V4PingHelper(ns3::V4PingHelper const & arg0) [copy constructor]
   8.258 -    cls.add_constructor([param('ns3::V4PingHelper const &', 'arg0')])
   8.259      ## v4ping-helper.h: ns3::V4PingHelper::V4PingHelper(ns3::Ipv4Address remote) [constructor]
   8.260      cls.add_constructor([param('ns3::Ipv4Address', 'remote')])
   8.261      ## v4ping-helper.h: void ns3::V4PingHelper::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
   8.262 @@ -834,11 +812,10 @@
   8.263                     'ns3::ApplicationContainer', 
   8.264                     [param('ns3::Ptr< ns3::Node >', 'node')], 
   8.265                     is_const=True)
   8.266 +    cls.add_copy_constructor()
   8.267      return
   8.268  
   8.269  def register_Ns3WifiHelper_methods(root_module, cls):
   8.270 -    ## wifi-helper.h: ns3::WifiHelper::WifiHelper(ns3::WifiHelper const & arg0) [copy constructor]
   8.271 -    cls.add_constructor([param('ns3::WifiHelper const &', 'arg0')])
   8.272      ## wifi-helper.h: ns3::WifiHelper::WifiHelper() [constructor]
   8.273      cls.add_constructor([])
   8.274      ## wifi-helper.h: static ns3::WifiHelper ns3::WifiHelper::Default() [member function]
   8.275 @@ -864,23 +841,20 @@
   8.276                     'ns3::NetDeviceContainer', 
   8.277                     [param('ns3::WifiPhyHelper const &', 'phy'), param('ns3::Ptr< ns3::Node >', 'node')], 
   8.278                     is_const=True)
   8.279 +    cls.add_copy_constructor()
   8.280      return
   8.281  
   8.282  def register_Ns3WifiPhyHelper_methods(root_module, cls):
   8.283 -    ## wifi-helper.h: ns3::WifiPhyHelper::WifiPhyHelper(ns3::WifiPhyHelper const & arg0) [copy constructor]
   8.284 -    cls.add_constructor([param('ns3::WifiPhyHelper const &', 'arg0')])
   8.285 -    ## wifi-helper.h: ns3::WifiPhyHelper::WifiPhyHelper() [constructor]
   8.286 -    cls.add_constructor([])
   8.287      ## wifi-helper.h: ns3::Ptr<ns3::WifiPhy> ns3::WifiPhyHelper::Create(ns3::Ptr<ns3::Node> node, ns3::Ptr<ns3::WifiNetDevice> device) const [member function]
   8.288      cls.add_method('Create', 
   8.289                     'ns3::Ptr< ns3::WifiPhy >', 
   8.290                     [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::WifiNetDevice >', 'device')], 
   8.291                     is_pure_virtual=True, is_const=True, is_virtual=True)
   8.292 +    cls.add_constructor([])
   8.293 +    cls.add_copy_constructor()
   8.294      return
   8.295  
   8.296  def register_Ns3YansWifiChannelHelper_methods(root_module, cls):
   8.297 -    ## yans-wifi-helper.h: ns3::YansWifiChannelHelper::YansWifiChannelHelper(ns3::YansWifiChannelHelper const & arg0) [copy constructor]
   8.298 -    cls.add_constructor([param('ns3::YansWifiChannelHelper const &', 'arg0')])
   8.299      ## yans-wifi-helper.h: ns3::YansWifiChannelHelper::YansWifiChannelHelper() [constructor]
   8.300      cls.add_constructor([])
   8.301      ## yans-wifi-helper.h: static ns3::YansWifiChannelHelper ns3::YansWifiChannelHelper::Default() [member function]
   8.302 @@ -901,11 +875,10 @@
   8.303                     'ns3::Ptr< ns3::YansWifiChannel >', 
   8.304                     [], 
   8.305                     is_const=True)
   8.306 +    cls.add_copy_constructor()
   8.307      return
   8.308  
   8.309  def register_Ns3YansWifiPhyHelper_methods(root_module, cls):
   8.310 -    ## yans-wifi-helper.h: ns3::YansWifiPhyHelper::YansWifiPhyHelper(ns3::YansWifiPhyHelper const & arg0) [copy constructor]
   8.311 -    cls.add_constructor([param('ns3::YansWifiPhyHelper const &', 'arg0')])
   8.312      ## yans-wifi-helper.h: ns3::YansWifiPhyHelper::YansWifiPhyHelper() [constructor]
   8.313      cls.add_constructor([])
   8.314      ## yans-wifi-helper.h: static ns3::YansWifiPhyHelper ns3::YansWifiPhyHelper::Default() [member function]
   8.315 @@ -970,6 +943,7 @@
   8.316                     'ns3::Ptr< ns3::WifiPhy >', 
   8.317                     [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::Ptr< ns3::WifiNetDevice >', 'device')], 
   8.318                     is_const=True, visibility='private', is_virtual=True)
   8.319 +    cls.add_copy_constructor()
   8.320      return
   8.321  
   8.322  def register_functions(root_module):
     9.1 --- a/bindings/python/ns3_module_internet_stack.py	Tue Dec 30 11:35:31 2008 -0800
     9.2 +++ b/bindings/python/ns3_module_internet_stack.py	Tue Jan 13 17:15:44 2009 -0500
     9.3 @@ -86,8 +86,6 @@
     9.4      return
     9.5  
     9.6  def register_Ns3Icmpv4DestinationUnreachable_methods(root_module, cls):
     9.7 -    ## icmpv4.h: ns3::Icmpv4DestinationUnreachable::Icmpv4DestinationUnreachable(ns3::Icmpv4DestinationUnreachable const & arg0) [copy constructor]
     9.8 -    cls.add_constructor([param('ns3::Icmpv4DestinationUnreachable const &', 'arg0')])
     9.9      ## icmpv4.h: static ns3::TypeId ns3::Icmpv4DestinationUnreachable::GetTypeId() [member function]
    9.10      cls.add_method('GetTypeId', 
    9.11                     'ns3::TypeId', 
    9.12 @@ -147,11 +145,10 @@
    9.13                     'void', 
    9.14                     [param('std::ostream &', 'os')], 
    9.15                     is_const=True, visibility='private', is_virtual=True)
    9.16 +    cls.add_copy_constructor()
    9.17      return
    9.18  
    9.19  def register_Ns3Icmpv4Echo_methods(root_module, cls):
    9.20 -    ## icmpv4.h: ns3::Icmpv4Echo::Icmpv4Echo(ns3::Icmpv4Echo const & arg0) [copy constructor]
    9.21 -    cls.add_constructor([param('ns3::Icmpv4Echo const &', 'arg0')])
    9.22      ## icmpv4.h: void ns3::Icmpv4Echo::SetIdentifier(uint16_t id) [member function]
    9.23      cls.add_method('SetIdentifier', 
    9.24                     'void', 
    9.25 @@ -211,11 +208,10 @@
    9.26                     'void', 
    9.27                     [param('std::ostream &', 'os')], 
    9.28                     is_const=True, is_virtual=True)
    9.29 +    cls.add_copy_constructor()
    9.30      return
    9.31  
    9.32  def register_Ns3Icmpv4Header_methods(root_module, cls):
    9.33 -    ## icmpv4.h: ns3::Icmpv4Header::Icmpv4Header(ns3::Icmpv4Header const & arg0) [copy constructor]
    9.34 -    cls.add_constructor([param('ns3::Icmpv4Header const &', 'arg0')])
    9.35      ## icmpv4.h: void ns3::Icmpv4Header::EnableChecksum() [member function]
    9.36      cls.add_method('EnableChecksum', 
    9.37                     'void', 
    9.38 @@ -270,11 +266,10 @@
    9.39                     'void', 
    9.40                     [param('std::ostream &', 'os')], 
    9.41                     is_const=True, is_virtual=True)
    9.42 +    cls.add_copy_constructor()
    9.43      return
    9.44  
    9.45  def register_Ns3Icmpv4TimeExceeded_methods(root_module, cls):
    9.46 -    ## icmpv4.h: ns3::Icmpv4TimeExceeded::Icmpv4TimeExceeded(ns3::Icmpv4TimeExceeded const & arg0) [copy constructor]
    9.47 -    cls.add_constructor([param('ns3::Icmpv4TimeExceeded const &', 'arg0')])
    9.48      ## icmpv4.h: void ns3::Icmpv4TimeExceeded::SetData(ns3::Ptr<const ns3::Packet> data) [member function]
    9.49      cls.add_method('SetData', 
    9.50                     'void', 
    9.51 @@ -325,11 +320,10 @@
    9.52                     'void', 
    9.53                     [param('std::ostream &', 'os')], 
    9.54                     is_const=True, is_virtual=True)
    9.55 +    cls.add_copy_constructor()
    9.56      return
    9.57  
    9.58  def register_Ns3TcpHeader_methods(root_module, cls):
    9.59 -    ## tcp-header.h: ns3::TcpHeader::TcpHeader(ns3::TcpHeader const & arg0) [copy constructor]
    9.60 -    cls.add_constructor([param('ns3::TcpHeader const &', 'arg0')])
    9.61      ## tcp-header.h: ns3::TcpHeader::TcpHeader() [constructor]
    9.62      cls.add_constructor([])
    9.63      ## tcp-header.h: void ns3::TcpHeader::EnableChecksums() [member function]
    9.64 @@ -447,11 +441,10 @@
    9.65                     'bool', 
    9.66                     [], 
    9.67                     is_const=True)
    9.68 +    cls.add_copy_constructor()
    9.69      return
    9.70  
    9.71  def register_Ns3UdpHeader_methods(root_module, cls):
    9.72 -    ## udp-header.h: ns3::UdpHeader::UdpHeader(ns3::UdpHeader const & arg0) [copy constructor]
    9.73 -    cls.add_constructor([param('ns3::UdpHeader const &', 'arg0')])
    9.74      ## udp-header.h: ns3::UdpHeader::UdpHeader() [constructor]
    9.75      cls.add_constructor([])
    9.76      ## udp-header.h: void ns3::UdpHeader::EnableChecksums() [member function]
    9.77 @@ -515,11 +508,10 @@
    9.78                     'bool', 
    9.79                     [], 
    9.80                     is_const=True)
    9.81 +    cls.add_copy_constructor()
    9.82      return
    9.83  
    9.84  def register_Ns3Ipv4Interface_methods(root_module, cls):
    9.85 -    ## ipv4-interface.h: ns3::Ipv4Interface::Ipv4Interface(ns3::Ipv4Interface const & arg0) [copy constructor]
    9.86 -    cls.add_constructor([param('ns3::Ipv4Interface const &', 'arg0')])
    9.87      ## ipv4-interface.h: static ns3::TypeId ns3::Ipv4Interface::GetTypeId() [member function]
    9.88      cls.add_method('GetTypeId', 
    9.89                     'ns3::TypeId', 
    9.90 @@ -601,6 +593,7 @@
    9.91                     'void', 
    9.92                     [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Address', 'dest')], 
    9.93                     is_pure_virtual=True, visibility='private', is_virtual=True)
    9.94 +    cls.add_copy_constructor()
    9.95      return
    9.96  
    9.97  def register_Ns3Ipv4L3Protocol_methods(root_module, cls):
    9.98 @@ -815,8 +808,6 @@
    9.99      return
   9.100  
   9.101  def register_Ns3Ipv4StaticRouting_methods(root_module, cls):
   9.102 -    ## ipv4-static-routing.h: ns3::Ipv4StaticRouting::Ipv4StaticRouting(ns3::Ipv4StaticRouting const & arg0) [copy constructor]
   9.103 -    cls.add_constructor([param('ns3::Ipv4StaticRouting const &', 'arg0')])
   9.104      ## ipv4-static-routing.h: ns3::Ipv4StaticRouting::Ipv4StaticRouting() [constructor]
   9.105      cls.add_constructor([])
   9.106      ## 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,ns3::empty,ns3::empty,ns3::empty> routeReply) [member function]
   9.107 @@ -901,11 +892,10 @@
   9.108                     'void', 
   9.109                     [], 
   9.110                     visibility='protected', is_virtual=True)
   9.111 +    cls.add_copy_constructor()
   9.112      return
   9.113  
   9.114  def register_Ns3Ipv4GlobalRouting_methods(root_module, cls):
   9.115 -    ## ipv4-global-routing.h: ns3::Ipv4GlobalRouting::Ipv4GlobalRouting(ns3::Ipv4GlobalRouting const & arg0) [copy constructor]
   9.116 -    cls.add_constructor([param('ns3::Ipv4GlobalRouting const &', 'arg0')])
   9.117      ## ipv4-global-routing.h: static ns3::TypeId ns3::Ipv4GlobalRouting::GetTypeId() [member function]
   9.118      cls.add_method('GetTypeId', 
   9.119                     'ns3::TypeId', 
   9.120 @@ -956,6 +946,7 @@
   9.121                     'void', 
   9.122                     [], 
   9.123                     visibility='protected', is_virtual=True)
   9.124 +    cls.add_copy_constructor()
   9.125      return
   9.126  
   9.127  def register_functions(root_module):
    10.1 --- a/bindings/python/ns3_module_mobility.py	Tue Dec 30 11:35:31 2008 -0800
    10.2 +++ b/bindings/python/ns3_module_mobility.py	Tue Jan 13 17:15:44 2009 -0500
    10.3 @@ -144,8 +144,6 @@
    10.4      return
    10.5  
    10.6  def register_Ns3StaticSpeedHelper_methods(root_module, cls):
    10.7 -    ## static-speed-helper.h: ns3::StaticSpeedHelper::StaticSpeedHelper(ns3::StaticSpeedHelper const & arg0) [copy constructor]
    10.8 -    cls.add_constructor([param('ns3::StaticSpeedHelper const &', 'arg0')])
    10.9      ## static-speed-helper.h: ns3::StaticSpeedHelper::StaticSpeedHelper() [constructor]
   10.10      cls.add_constructor([])
   10.11      ## static-speed-helper.h: ns3::StaticSpeedHelper::StaticSpeedHelper(ns3::Vector const & position) [constructor]
   10.12 @@ -188,6 +186,7 @@
   10.13                     'void', 
   10.14                     [], 
   10.15                     is_const=True)
   10.16 +    cls.add_copy_constructor()
   10.17      return
   10.18  
   10.19  def register_Ns3Vector_methods(root_module, cls):
   10.20 @@ -207,8 +206,6 @@
   10.21      return
   10.22  
   10.23  def register_Ns3PositionAllocator_methods(root_module, cls):
   10.24 -    ## position-allocator.h: ns3::PositionAllocator::PositionAllocator(ns3::PositionAllocator const & arg0) [copy constructor]
   10.25 -    cls.add_constructor([param('ns3::PositionAllocator const &', 'arg0')])
   10.26      ## position-allocator.h: static ns3::TypeId ns3::PositionAllocator::GetTypeId() [member function]
   10.27      cls.add_method('GetTypeId', 
   10.28                     'ns3::TypeId', 
   10.29 @@ -221,11 +218,10 @@
   10.30                     'ns3::Vector', 
   10.31                     [], 
   10.32                     is_pure_virtual=True, is_const=True, is_virtual=True)
   10.33 +    cls.add_copy_constructor()
   10.34      return
   10.35  
   10.36  def register_Ns3RandomDiscPositionAllocator_methods(root_module, cls):
   10.37 -    ## position-allocator.h: ns3::RandomDiscPositionAllocator::RandomDiscPositionAllocator(ns3::RandomDiscPositionAllocator const & arg0) [copy constructor]
   10.38 -    cls.add_constructor([param('ns3::RandomDiscPositionAllocator const &', 'arg0')])
   10.39      ## position-allocator.h: static ns3::TypeId ns3::RandomDiscPositionAllocator::GetTypeId() [member function]
   10.40      cls.add_method('GetTypeId', 
   10.41                     'ns3::TypeId', 
   10.42 @@ -254,11 +250,10 @@
   10.43                     'ns3::Vector', 
   10.44                     [], 
   10.45                     is_const=True, is_virtual=True)
   10.46 +    cls.add_copy_constructor()
   10.47      return
   10.48  
   10.49  def register_Ns3RandomRectanglePositionAllocator_methods(root_module, cls):
   10.50 -    ## position-allocator.h: ns3::RandomRectanglePositionAllocator::RandomRectanglePositionAllocator(ns3::RandomRectanglePositionAllocator const & arg0) [copy constructor]
   10.51 -    cls.add_constructor([param('ns3::RandomRectanglePositionAllocator const &', 'arg0')])
   10.52      ## position-allocator.h: static ns3::TypeId ns3::RandomRectanglePositionAllocator::GetTypeId() [member function]
   10.53      cls.add_method('GetTypeId', 
   10.54                     'ns3::TypeId', 
   10.55 @@ -279,18 +274,15 @@
   10.56                     'ns3::Vector', 
   10.57                     [], 
   10.58                     is_const=True, is_virtual=True)
   10.59 +    cls.add_copy_constructor()
   10.60      return
   10.61  
   10.62  def register_Ns3RectangleChecker_methods(root_module, cls):
   10.63 -    ## rectangle.h: ns3::RectangleChecker::RectangleChecker(ns3::RectangleChecker const & arg0) [copy constructor]
   10.64 -    cls.add_constructor([param('ns3::RectangleChecker const &', 'arg0')])
   10.65 -    ## rectangle.h: ns3::RectangleChecker::RectangleChecker() [constructor]
   10.66      cls.add_constructor([])
   10.67 +    cls.add_copy_constructor()
   10.68      return
   10.69  
   10.70  def register_Ns3RectangleValue_methods(root_module, cls):
   10.71 -    ## rectangle.h: ns3::RectangleValue::RectangleValue(ns3::RectangleValue const & arg0) [copy constructor]
   10.72 -    cls.add_constructor([param('ns3::RectangleValue const &', 'arg0')])
   10.73      ## rectangle.h: ns3::RectangleValue::RectangleValue() [constructor]
   10.74      cls.add_constructor([])
   10.75      ## rectangle.h: ns3::RectangleValue::RectangleValue(ns3::Rectangle const & value) [constructor]
   10.76 @@ -319,18 +311,15 @@
   10.77                     'bool', 
   10.78                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
   10.79                     is_virtual=True)
   10.80 +    cls.add_copy_constructor()
   10.81      return
   10.82  
   10.83  def register_Ns3VectorChecker_methods(root_module, cls):
   10.84 -    ## vector.h: ns3::VectorChecker::VectorChecker(ns3::VectorChecker const & arg0) [copy constructor]
   10.85 -    cls.add_constructor([param('ns3::VectorChecker const &', 'arg0')])
   10.86 -    ## vector.h: ns3::VectorChecker::VectorChecker() [constructor]
   10.87      cls.add_constructor([])
   10.88 +    cls.add_copy_constructor()
   10.89      return
   10.90  
   10.91  def register_Ns3VectorValue_methods(root_module, cls):
   10.92 -    ## vector.h: ns3::VectorValue::VectorValue(ns3::VectorValue const & arg0) [copy constructor]
   10.93 -    cls.add_constructor([param('ns3::VectorValue const &', 'arg0')])
   10.94      ## vector.h: ns3::VectorValue::VectorValue() [constructor]
   10.95      cls.add_constructor([])
   10.96      ## vector.h: ns3::VectorValue::VectorValue(ns3::Vector const & value) [constructor]
   10.97 @@ -359,11 +348,10 @@
   10.98                     'bool', 
   10.99                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  10.100                     is_virtual=True)
  10.101 +    cls.add_copy_constructor()
  10.102      return
  10.103  
  10.104  def register_Ns3GridPositionAllocator_methods(root_module, cls):
  10.105 -    ## position-allocator.h: ns3::GridPositionAllocator::GridPositionAllocator(ns3::GridPositionAllocator const & arg0) [copy constructor]
  10.106 -    cls.add_constructor([param('ns3::GridPositionAllocator const &', 'arg0')])
  10.107      ## position-allocator.h: static ns3::TypeId ns3::GridPositionAllocator::GetTypeId() [member function]
  10.108      cls.add_method('GetTypeId', 
  10.109                     'ns3::TypeId', 
  10.110 @@ -430,11 +418,10 @@
  10.111                     'ns3::Vector', 
  10.112                     [], 
  10.113                     is_const=True, is_virtual=True)
  10.114 +    cls.add_copy_constructor()
  10.115      return
  10.116  
  10.117  def register_Ns3ListPositionAllocator_methods(root_module, cls):
  10.118 -    ## position-allocator.h: ns3::ListPositionAllocator::ListPositionAllocator(ns3::ListPositionAllocator const & arg0) [copy constructor]
  10.119 -    cls.add_constructor([param('ns3::ListPositionAllocator const &', 'arg0')])
  10.120      ## position-allocator.h: static ns3::TypeId ns3::ListPositionAllocator::GetTypeId() [member function]
  10.121      cls.add_method('GetTypeId', 
  10.122                     'ns3::TypeId', 
  10.123 @@ -451,11 +438,10 @@
  10.124                     'ns3::Vector', 
  10.125                     [], 
  10.126                     is_const=True, is_virtual=True)
  10.127 +    cls.add_copy_constructor()
  10.128      return
  10.129  
  10.130  def register_Ns3MobilityModel_methods(root_module, cls):
  10.131 -    ## mobility-model.h: ns3::MobilityModel::MobilityModel(ns3::MobilityModel const & arg0) [copy constructor]
  10.132 -    cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')])
  10.133      ## mobility-model.h: static ns3::TypeId ns3::MobilityModel::GetTypeId() [member function]
  10.134      cls.add_method('GetTypeId', 
  10.135                     'ns3::TypeId', 
  10.136 @@ -502,11 +488,10 @@
  10.137                     'ns3::Vector', 
  10.138                     [], 
  10.139                     is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
  10.140 +    cls.add_copy_constructor()
  10.141      return
  10.142  
  10.143  def register_Ns3RandomDirection2dMobilityModel_methods(root_module, cls):
  10.144 -    ## random-direction-2d-mobility-model.h: ns3::RandomDirection2dMobilityModel::RandomDirection2dMobilityModel(ns3::RandomDirection2dMobilityModel const & arg0) [copy constructor]
  10.145 -    cls.add_constructor([param('ns3::RandomDirection2dMobilityModel const &', 'arg0')])
  10.146      ## random-direction-2d-mobility-model.h: static ns3::TypeId ns3::RandomDirection2dMobilityModel::GetTypeId() [member function]
  10.147      cls.add_method('GetTypeId', 
  10.148                     'ns3::TypeId', 
  10.149 @@ -534,11 +519,10 @@
  10.150                     'ns3::Vector', 
  10.151                     [], 
  10.152                     is_const=True, visibility='private', is_virtual=True)
  10.153 +    cls.add_copy_constructor()
  10.154      return
  10.155  
  10.156  def register_Ns3RandomWalk2dMobilityModel_methods(root_module, cls):
  10.157 -    ## random-walk-2d-mobility-model.h: ns3::RandomWalk2dMobilityModel::RandomWalk2dMobilityModel(ns3::RandomWalk2dMobilityModel const & arg0) [copy constructor]
  10.158 -    cls.add_constructor([param('ns3::RandomWalk2dMobilityModel const &', 'arg0')])
  10.159      ## random-walk-2d-mobility-model.h: static ns3::TypeId ns3::RandomWalk2dMobilityModel::GetTypeId() [member function]
  10.160      cls.add_method('GetTypeId', 
  10.161                     'ns3::TypeId', 
  10.162 @@ -566,11 +550,10 @@
  10.163                     'ns3::Vector', 
  10.164                     [], 
  10.165                     is_const=True, visibility='private', is_virtual=True)
  10.166 +    cls.add_copy_constructor()
  10.167      return
  10.168  
  10.169  def register_Ns3RandomWaypointMobilityModel_methods(root_module, cls):
  10.170 -    ## random-waypoint-mobility-model.h: ns3::RandomWaypointMobilityModel::RandomWaypointMobilityModel(ns3::RandomWaypointMobilityModel const & arg0) [copy constructor]
  10.171 -    cls.add_constructor([param('ns3::RandomWaypointMobilityModel const &', 'arg0')])
  10.172      ## random-waypoint-mobility-model.h: static ns3::TypeId ns3::RandomWaypointMobilityModel::GetTypeId() [member function]
  10.173      cls.add_method('GetTypeId', 
  10.174                     'ns3::TypeId', 
  10.175 @@ -593,11 +576,10 @@
  10.176                     'ns3::Vector', 
  10.177                     [], 
  10.178                     is_const=True, visibility='private', is_virtual=True)
  10.179 +    cls.add_copy_constructor()
  10.180      return
  10.181  
  10.182  def register_Ns3StaticMobilityModel_methods(root_module, cls):
  10.183 -    ## static-mobility-model.h: ns3::StaticMobilityModel::StaticMobilityModel(ns3::StaticMobilityModel const & arg0) [copy constructor]
  10.184 -    cls.add_constructor([param('ns3::StaticMobilityModel const &', 'arg0')])
  10.185      ## static-mobility-model.h: static ns3::TypeId ns3::StaticMobilityModel::GetTypeId() [member function]
  10.186      cls.add_method('GetTypeId', 
  10.187                     'ns3::TypeId', 
  10.188 @@ -620,11 +602,10 @@
  10.189                     'ns3::Vector', 
  10.190                     [], 
  10.191                     is_const=True, visibility='private', is_virtual=True)
  10.192 +    cls.add_copy_constructor()
  10.193      return
  10.194  
  10.195  def register_Ns3StaticSpeedMobilityModel_methods(root_module, cls):
  10.196 -    ## static-speed-mobility-model.h: ns3::StaticSpeedMobilityModel::StaticSpeedMobilityModel(ns3::StaticSpeedMobilityModel const & arg0) [copy constructor]
  10.197 -    cls.add_constructor([param('ns3::StaticSpeedMobilityModel const &', 'arg0')])
  10.198      ## static-speed-mobility-model.h: static ns3::TypeId ns3::StaticSpeedMobilityModel::GetTypeId() [member function]
  10.199      cls.add_method('GetTypeId', 
  10.200                     'ns3::TypeId', 
  10.201 @@ -651,11 +632,10 @@
  10.202                     'ns3::Vector', 
  10.203                     [], 
  10.204                     is_const=True, visibility='private', is_virtual=True)
  10.205 +    cls.add_copy_constructor()
  10.206      return
  10.207  
  10.208  def register_Ns3HierarchicalMobilityModel_methods(root_module, cls):
  10.209 -    ## hierarchical-mobility-model.h: ns3::HierarchicalMobilityModel::HierarchicalMobilityModel(ns3::HierarchicalMobilityModel const & arg0) [copy constructor]
  10.210 -    cls.add_constructor([param('ns3::HierarchicalMobilityModel const &', 'arg0')])
  10.211      ## hierarchical-mobility-model.h: static ns3::TypeId ns3::HierarchicalMobilityModel::GetTypeId() [member function]
  10.212      cls.add_method('GetTypeId', 
  10.213                     'ns3::TypeId', 
  10.214 @@ -688,6 +668,7 @@
  10.215                     'ns3::Vector', 
  10.216                     [], 
  10.217                     is_const=True, visibility='private', is_virtual=True)
  10.218 +    cls.add_copy_constructor()
  10.219      return
  10.220  
  10.221  def register_functions(root_module):
    11.1 --- a/bindings/python/ns3_module_node.py	Tue Dec 30 11:35:31 2008 -0800
    11.2 +++ b/bindings/python/ns3_module_node.py	Tue Jan 13 17:15:44 2009 -0500
    11.3 @@ -299,8 +299,6 @@
    11.4      return
    11.5  
    11.6  def register_Ns3Inet6SocketAddress_methods(root_module, cls):
    11.7 -    ## inet6-socket-address.h: ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Inet6SocketAddress const & arg0) [copy constructor]
    11.8 -    cls.add_constructor([param('ns3::Inet6SocketAddress const &', 'arg0')])
    11.9      ## inet6-socket-address.h: ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6, uint16_t port) [constructor]
   11.10      cls.add_constructor([param('ns3::Ipv6Address', 'ipv6'), param('uint16_t', 'port')])
   11.11      ## inet6-socket-address.h: ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6) [constructor]
   11.12 @@ -339,11 +337,10 @@
   11.13                     'ns3::Inet6SocketAddress', 
   11.14                     [param('ns3::Address const &', 'addr')], 
   11.15                     is_static=True)
   11.16 +    cls.add_copy_constructor()
   11.17      return
   11.18  
   11.19  def register_Ns3InetSocketAddress_methods(root_module, cls):
   11.20 -    ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(ns3::InetSocketAddress const & arg0) [copy constructor]
   11.21 -    cls.add_constructor([param('ns3::InetSocketAddress const &', 'arg0')])
   11.22      ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4, uint16_t port) [constructor]
   11.23      cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')])
   11.24      ## inet-socket-address.h: ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4) [constructor]
   11.25 @@ -382,6 +379,7 @@
   11.26                     'ns3::InetSocketAddress', 
   11.27                     [param('ns3::Address const &', 'address')], 
   11.28                     is_static=True)
   11.29 +    cls.add_copy_constructor()
   11.30      return
   11.31  
   11.32  def register_Ns3Ipv4Address_methods(root_module, cls):
   11.33 @@ -488,10 +486,6 @@
   11.34      return
   11.35  
   11.36  def register_Ns3Ipv4AddressGenerator_methods(root_module, cls):
   11.37 -    ## ipv4-address-generator.h: ns3::Ipv4AddressGenerator::Ipv4AddressGenerator(ns3::Ipv4AddressGenerator const & arg0) [copy constructor]
   11.38 -    cls.add_constructor([param('ns3::Ipv4AddressGenerator const &', 'arg0')])
   11.39 -    ## ipv4-address-generator.h: ns3::Ipv4AddressGenerator::Ipv4AddressGenerator() [constructor]
   11.40 -    cls.add_constructor([])
   11.41      ## 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]
   11.42      cls.add_method('Init', 
   11.43                     'void', 
   11.44 @@ -537,6 +531,8 @@
   11.45                     'void', 
   11.46                     [], 
   11.47                     is_static=True)
   11.48 +    cls.add_constructor([])
   11.49 +    cls.add_copy_constructor()
   11.50      return
   11.51  
   11.52  def register_Ns3Ipv4Mask_methods(root_module, cls):
   11.53 @@ -1033,10 +1029,6 @@
   11.54      return
   11.55  
   11.56  def register_Ns3NodeList_methods(root_module, cls):
   11.57 -    ## node-list.h: ns3::NodeList::NodeList(ns3::NodeList const & arg0) [copy constructor]
   11.58 -    cls.add_constructor([param('ns3::NodeList const &', 'arg0')])
   11.59 -    ## node-list.h: ns3::NodeList::NodeList() [constructor]
   11.60 -    cls.add_constructor([])
   11.61      ## node-list.h: static uint32_t ns3::NodeList::Add(ns3::Ptr<ns3::Node> node) [member function]
   11.62      cls.add_method('Add', 
   11.63                     'uint32_t', 
   11.64 @@ -1062,11 +1054,11 @@
   11.65                     'uint32_t', 
   11.66                     [], 
   11.67                     is_static=True)
   11.68 +    cls.add_constructor([])
   11.69 +    cls.add_copy_constructor()
   11.70      return
   11.71  
   11.72  def register_Ns3PacketSocketAddress_methods(root_module, cls):
   11.73 -    ## packet-socket-address.h: ns3::PacketSocketAddress::PacketSocketAddress(ns3::PacketSocketAddress const & arg0) [copy constructor]
   11.74 -    cls.add_constructor([param('ns3::PacketSocketAddress const &', 'arg0')])
   11.75      ## packet-socket-address.h: ns3::PacketSocketAddress::PacketSocketAddress() [constructor]
   11.76      cls.add_constructor([])
   11.77      ## packet-socket-address.h: void ns3::PacketSocketAddress::SetProtocol(uint16_t protocol) [member function]
   11.78 @@ -1115,18 +1107,15 @@
   11.79                     'bool', 
   11.80                     [param('ns3::Address const &', 'address')], 
   11.81                     is_static=True)
   11.82 +    cls.add_copy_constructor()
   11.83      return
   11.84  
   11.85  def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
   11.86 -    ## ipv4-address.h: ns3::Ipv4AddressChecker::Ipv4AddressChecker(ns3::Ipv4AddressChecker const & arg0) [copy constructor]
   11.87 -    cls.add_constructor([param('ns3::Ipv4AddressChecker const &', 'arg0')])
   11.88 -    ## ipv4-address.h: ns3::Ipv4AddressChecker::Ipv4AddressChecker() [constructor]
   11.89      cls.add_constructor([])
   11.90 +    cls.add_copy_constructor()
   11.91      return
   11.92  
   11.93  def register_Ns3Ipv4AddressValue_methods(root_module, cls):
   11.94 -    ## ipv4-address.h: ns3::Ipv4AddressValue::Ipv4AddressValue(ns3::Ipv4AddressValue const & arg0) [copy constructor]
   11.95 -    cls.add_constructor([param('ns3::Ipv4AddressValue const &', 'arg0')])
   11.96      ## ipv4-address.h: ns3::Ipv4AddressValue::Ipv4AddressValue() [constructor]
   11.97      cls.add_constructor([])
   11.98      ## ipv4-address.h: ns3::Ipv4AddressValue::Ipv4AddressValue(ns3::Ipv4Address const & value) [constructor]
   11.99 @@ -1155,11 +1144,10 @@
  11.100                     'bool', 
  11.101                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  11.102                     is_virtual=True)
  11.103 +    cls.add_copy_constructor()
  11.104      return
  11.105  
  11.106  def register_Ns3Ipv4Header_methods(root_module, cls):
  11.107 -    ## ipv4-header.h: ns3::Ipv4Header::Ipv4Header(ns3::Ipv4Header const & arg0) [copy constructor]
  11.108 -    cls.add_constructor([param('ns3::Ipv4Header const &', 'arg0')])
  11.109      ## ipv4-header.h: ns3::Ipv4Header::Ipv4Header() [constructor]
  11.110      cls.add_constructor([])
  11.111      ## ipv4-header.h: void ns3::Ipv4Header::EnableChecksum() [member function]
  11.112 @@ -1299,18 +1287,15 @@
  11.113                     'uint32_t', 
  11.114                     [param('ns3::Buffer::Iterator', 'start')], 
  11.115                     is_virtual=True)
  11.116 +    cls.add_copy_constructor()
  11.117      return
  11.118  
  11.119  def register_Ns3Ipv4MaskChecker_methods(root_module, cls):
  11.120 -    ## ipv4-address.h: ns3::Ipv4MaskChecker::Ipv4MaskChecker(ns3::Ipv4MaskChecker const & arg0) [copy constructor]
  11.121 -    cls.add_constructor([param('ns3::Ipv4MaskChecker const &', 'arg0')])
  11.122 -    ## ipv4-address.h: ns3::Ipv4MaskChecker::Ipv4MaskChecker() [constructor]
  11.123      cls.add_constructor([])
  11.124 +    cls.add_copy_constructor()
  11.125      return
  11.126  
  11.127  def register_Ns3Ipv4MaskValue_methods(root_module, cls):
  11.128 -    ## ipv4-address.h: ns3::Ipv4MaskValue::Ipv4MaskValue(ns3::Ipv4MaskValue const & arg0) [copy constructor]
  11.129 -    cls.add_constructor([param('ns3::Ipv4MaskValue const &', 'arg0')])
  11.130      ## ipv4-address.h: ns3::Ipv4MaskValue::Ipv4MaskValue() [constructor]
  11.131      cls.add_constructor([])
  11.132      ## ipv4-address.h: ns3::Ipv4MaskValue::Ipv4MaskValue(ns3::Ipv4Mask const & value) [constructor]
  11.133 @@ -1339,18 +1324,15 @@
  11.134                     'bool', 
  11.135                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  11.136                     is_virtual=True)
  11.137 +    cls.add_copy_constructor()
  11.138      return
  11.139  
  11.140  def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
  11.141 -    ## ipv6-address.h: ns3::Ipv6AddressChecker::Ipv6AddressChecker(ns3::Ipv6AddressChecker const & arg0) [copy constructor]
  11.142 -    cls.add_constructor([param('ns3::Ipv6AddressChecker const &', 'arg0')])
  11.143 -    ## ipv6-address.h: ns3::Ipv6AddressChecker::Ipv6AddressChecker() [constructor]
  11.144      cls.add_constructor([])
  11.145 +    cls.add_copy_constructor()
  11.146      return
  11.147  
  11.148  def register_Ns3Ipv6AddressValue_methods(root_module, cls):
  11.149 -    ## ipv6-address.h: ns3::Ipv6AddressValue::Ipv6AddressValue(ns3::Ipv6AddressValue const & arg0) [copy constructor]
  11.150 -    cls.add_constructor([param('ns3::Ipv6AddressValue const &', 'arg0')])
  11.151      ## ipv6-address.h: ns3::Ipv6AddressValue::Ipv6AddressValue() [constructor]
  11.152      cls.add_constructor([])
  11.153      ## ipv6-address.h: ns3::Ipv6AddressValue::Ipv6AddressValue(ns3::Ipv6Address const & value) [constructor]
  11.154 @@ -1379,11 +1361,10 @@
  11.155                     'bool', 
  11.156                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  11.157                     is_virtual=True)
  11.158 +    cls.add_copy_constructor()
  11.159      return
  11.160  
  11.161  def register_Ns3Ipv6Header_methods(root_module, cls):
  11.162 -    ## ipv6-header.h: ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
  11.163 -    cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
  11.164      ## ipv6-header.h: static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
  11.165      cls.add_method('GetTypeId', 
  11.166                     'ns3::TypeId', 
  11.167 @@ -1479,18 +1460,15 @@
  11.168                     'uint32_t', 
  11.169                     [param('ns3::Buffer::Iterator', 'start')], 
  11.170                     is_virtual=True)
  11.171 +    cls.add_copy_constructor()
  11.172      return
  11.173  
  11.174  def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
  11.175 -    ## ipv6-address.h: ns3::Ipv6PrefixChecker::Ipv6PrefixChecker(ns3::Ipv6PrefixChecker const & arg0) [copy constructor]
  11.176 -    cls.add_constructor([param('ns3::Ipv6PrefixChecker const &', 'arg0')])
  11.177 -    ## ipv6-address.h: ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
  11.178      cls.add_constructor([])
  11.179 +    cls.add_copy_constructor()
  11.180      return
  11.181  
  11.182  def register_Ns3Ipv6PrefixValue_methods(root_module, cls):
  11.183 -    ## ipv6-address.h: ns3::Ipv6PrefixValue::Ipv6PrefixValue(ns3::Ipv6PrefixValue const & arg0) [copy constructor]
  11.184 -    cls.add_constructor([param('ns3::Ipv6PrefixValue const &', 'arg0')])
  11.185      ## ipv6-address.h: ns3::Ipv6PrefixValue::Ipv6PrefixValue() [constructor]
  11.186      cls.add_constructor([])
  11.187      ## ipv6-address.h: ns3::Ipv6PrefixValue::Ipv6PrefixValue(ns3::Ipv6Prefix const & value) [constructor]
  11.188 @@ -1519,11 +1497,10 @@
  11.189                     'bool', 
  11.190                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  11.191                     is_virtual=True)
  11.192 +    cls.add_copy_constructor()
  11.193      return
  11.194  
  11.195  def register_Ns3LlcSnapHeader_methods(root_module, cls):
  11.196 -    ## llc-snap-header.h: ns3::LlcSnapHeader::LlcSnapHeader(ns3::LlcSnapHeader const & arg0) [copy constructor]
  11.197 -    cls.add_constructor([param('ns3::LlcSnapHeader const &', 'arg0')])
  11.198      ## llc-snap-header.h: ns3::LlcSnapHeader::LlcSnapHeader() [constructor]
  11.199      cls.add_constructor([])
  11.200      ## llc-snap-header.h: void ns3::LlcSnapHeader::SetType(uint16_t type) [member function]
  11.201 @@ -1564,18 +1541,15 @@
  11.202                     'uint32_t', 
  11.203                     [param('ns3::Buffer::Iterator', 'start')], 
  11.204                     is_virtual=True)
  11.205 +    cls.add_copy_constructor()
  11.206      return
  11.207  
  11.208  def register_Ns3Mac48AddressChecker_methods(root_module, cls):
  11.209 -    ## mac48-address.h: ns3::Mac48AddressChecker::Mac48AddressChecker(ns3::Mac48AddressChecker const & arg0) [copy constructor]
  11.210 -    cls.add_constructor([param('ns3::Mac48AddressChecker const &', 'arg0')])
  11.211 -    ## mac48-address.h: ns3::Mac48AddressChecker::Mac48AddressChecker() [constructor]
  11.212      cls.add_constructor([])
  11.213 +    cls.add_copy_constructor()
  11.214      return
  11.215  
  11.216  def register_Ns3Mac48AddressValue_methods(root_module, cls):
  11.217 -    ## mac48-address.h: ns3::Mac48AddressValue::Mac48AddressValue(ns3::Mac48AddressValue const & arg0) [copy constructor]
  11.218 -    cls.add_constructor([param('ns3::Mac48AddressValue const &', 'arg0')])
  11.219      ## mac48-address.h: ns3::Mac48AddressValue::Mac48AddressValue() [constructor]
  11.220      cls.add_constructor([])
  11.221      ## mac48-address.h: ns3::Mac48AddressValue::Mac48AddressValue(ns3::Mac48Address const & value) [constructor]
  11.222 @@ -1604,11 +1578,10 @@
  11.223                     'bool', 
  11.224                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  11.225                     is_virtual=True)
  11.226 +    cls.add_copy_constructor()
  11.227      return
  11.228  
  11.229  def register_Ns3Queue_methods(root_module, cls):
  11.230 -    ## queue.h: ns3::Queue::Queue(ns3::Queue const & arg0) [copy constructor]
  11.231 -    cls.add_constructor([param('ns3::Queue const &', 'arg0')])
  11.232      ## queue.h: static ns3::TypeId ns3::Queue::GetTypeId() [member function]
  11.233      cls.add_method('GetTypeId', 
  11.234                     'ns3::TypeId', 
  11.235 @@ -1692,11 +1665,10 @@
  11.236                     'ns3::Ptr< ns3::Packet const >', 
  11.237                     [], 
  11.238                     is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
  11.239 +    cls.add_copy_constructor()
  11.240      return
  11.241  
  11.242  def register_Ns3Socket_methods(root_module, cls):
  11.243 -    ## socket.h: ns3::Socket::Socket(ns3::Socket const & arg0) [copy constructor]
  11.244 -    cls.add_constructor([param('ns3::Socket const &', 'arg0')])
  11.245      ## socket.h: ns3::Socket::Socket() [constructor]
  11.246      cls.add_constructor([])
  11.247      ## socket.h: static ns3::Ptr<ns3::Socket> ns3::Socket::CreateSocket(ns3::Ptr<ns3::Node> node, ns3::TypeId tid) [member function]
  11.248 @@ -1867,11 +1839,10 @@
  11.249                     'void', 
  11.250                     [], 
  11.251                     visibility='protected')
  11.252 +    cls.add_copy_constructor()
  11.253      return
  11.254  
  11.255  def register_Ns3SocketAddressTag_methods(root_module, cls):
  11.256 -    ## socket.h: ns3::SocketAddressTag::SocketAddressTag(ns3::SocketAddressTag const & arg0) [copy constructor]
  11.257 -    cls.add_constructor([param('ns3::SocketAddressTag const &', 'arg0')])
  11.258      ## socket.h: ns3::SocketAddressTag::SocketAddressTag() [constructor]
  11.259      cls.add_constructor([])
  11.260      ## socket.h: void ns3::SocketAddressTag::SetAddress(ns3::Address addr) [member function]
  11.261 @@ -1913,11 +1884,10 @@
  11.262                     'void', 
  11.263                     [param('std::ostream &', 'os')], 
  11.264                     is_const=True, is_virtual=True)
  11.265 +    cls.add_copy_constructor()
  11.266      return
  11.267  
  11.268  def register_Ns3SocketFactory_methods(root_module, cls):
  11.269 -    ## socket-factory.h: ns3::SocketFactory::SocketFactory(ns3::SocketFactory const & arg0) [copy constructor]
  11.270 -    cls.add_constructor([param('ns3::SocketFactory const &', 'arg0')])
  11.271      ## socket-factory.h: static ns3::TypeId ns3::SocketFactory::GetTypeId() [member function]
  11.272      cls.add_method('GetTypeId', 
  11.273                     'ns3::TypeId', 
  11.274 @@ -1930,11 +1900,10 @@
  11.275                     'ns3::Ptr< ns3::Socket >', 
  11.276                     [], 
  11.277                     is_pure_virtual=True, is_virtual=True)
  11.278 +    cls.add_copy_constructor()
  11.279      return
  11.280  
  11.281  def register_Ns3SocketIpTtlTag_methods(root_module, cls):
  11.282 -    ## socket.h: ns3::SocketIpTtlTag::SocketIpTtlTag(ns3::SocketIpTtlTag const & arg0) [copy constructor]
  11.283 -    cls.add_constructor([param('ns3::SocketIpTtlTag const &', 'arg0')])
  11.284      ## socket.h: ns3::SocketIpTtlTag::SocketIpTtlTag() [constructor]
  11.285      cls.add_constructor([])
  11.286      ## socket.h: void ns3::SocketIpTtlTag::SetTtl(uint8_t ttl) [member function]
  11.287 @@ -1976,11 +1945,10 @@
  11.288                     'void', 
  11.289                     [param('std::ostream &', 'os')], 
  11.290                     is_const=True, is_virtual=True)
  11.291 +    cls.add_copy_constructor()
  11.292      return
  11.293  
  11.294  def register_Ns3SocketSetDontFragmentTag_methods(root_module, cls):
  11.295 -    ## socket.h: ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag(ns3::SocketSetDontFragmentTag const & arg0) [copy constructor]
  11.296 -    cls.add_constructor([param('ns3::SocketSetDontFragmentTag const &', 'arg0')])
  11.297      ## socket.h: ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag() [constructor]
  11.298      cls.add_constructor([])
  11.299      ## socket.h: void ns3::SocketSetDontFragmentTag::Enable() [member function]
  11.300 @@ -2026,11 +1994,10 @@
  11.301                     'void', 
  11.302                     [param('std::ostream &', 'os')], 
  11.303                     is_const=True, is_virtual=True)
  11.304 +    cls.add_copy_constructor()
  11.305      return
  11.306  
  11.307  def register_Ns3TcpSocket_methods(root_module, cls):
  11.308 -    ## tcp-socket.h: ns3::TcpSocket::TcpSocket(ns3::TcpSocket const & arg0) [copy constructor]
  11.309 -    cls.add_constructor([param('ns3::TcpSocket const &', 'arg0')])
  11.310      ## tcp-socket.h: static ns3::TypeId ns3::TcpSocket::GetTypeId() [member function]
  11.311      cls.add_method('GetTypeId', 
  11.312                     'ns3::TypeId', 
  11.313 @@ -2128,23 +2095,20 @@
  11.314                     'uint32_t', 
  11.315                     [], 
  11.316                     is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
  11.317 +    cls.add_copy_constructor()
  11.318      return
  11.319  
  11.320  def register_Ns3TcpSocketFactory_methods(root_module, cls):
  11.321 -    ## tcp-socket-factory.h: ns3::TcpSocketFactory::TcpSocketFactory(ns3::TcpSocketFactory const & arg0) [copy constructor]
  11.322 -    cls.add_constructor([param('ns3::TcpSocketFactory const &', 'arg0')])
  11.323 -    ## tcp-socket-factory.h: ns3::TcpSocketFactory::TcpSocketFactory() [constructor]
  11.324 -    cls.add_constructor([])
  11.325      ## tcp-socket-factory.h: static ns3::TypeId ns3::TcpSocketFactory::GetTypeId() [member function]
  11.326      cls.add_method('GetTypeId', 
  11.327                     'ns3::TypeId', 
  11.328                     [], 
  11.329                     is_static=True)
  11.330 +    cls.add_constructor([])
  11.331 +    cls.add_copy_constructor()
  11.332      return
  11.333  
  11.334  def register_Ns3UdpSocket_methods(root_module, cls):
  11.335 -    ## udp-socket.h: ns3::UdpSocket::UdpSocket(ns3::UdpSocket const & arg0) [copy constructor]
  11.336 -    cls.add_constructor([param('ns3::UdpSocket const &', 'arg0')])
  11.337      ## udp-socket.h: static ns3::TypeId ns3::UdpSocket::GetTypeId() [member function]
  11.338      cls.add_method('GetTypeId', 
  11.339                     'ns3::TypeId', 
  11.340 @@ -2192,30 +2156,25 @@
  11.341                     'bool', 
  11.342                     [], 
  11.343                     is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
  11.344 +    cls.add_copy_constructor()
  11.345      return
  11.346  
  11.347  def register_Ns3UdpSocketFactory_methods(root_module, cls):
  11.348 -    ## udp-socket-factory.h: ns3::UdpSocketFactory::UdpSocketFactory(ns3::UdpSocketFactory const & arg0) [copy constructor]
  11.349 -    cls.add_constructor([param('ns3::UdpSocketFactory const &', 'arg0')])
  11.350 -    ## udp-socket-factory.h: ns3::UdpSocketFactory::UdpSocketFactory() [constructor]
  11.351 -    cls.add_constructor([])
  11.352      ## udp-socket-factory.h: static ns3::TypeId ns3::UdpSocketFactory::GetTypeId() [member function]
  11.353      cls.add_method('GetTypeId', 
  11.354                     'ns3::TypeId', 
  11.355                     [], 
  11.356                     is_static=True)
  11.357 +    cls.add_constructor([])
  11.358 +    cls.add_copy_constructor()
  11.359      return
  11.360  
  11.361  def register_Ns3AddressChecker_methods(root_module, cls):
  11.362 -    ## address.h: ns3::AddressChecker::AddressChecker(ns3::AddressChecker const & arg0) [copy constructor]
  11.363 -    cls.add_constructor([param('ns3::AddressChecker const &', 'arg0')])
  11.364 -    ## address.h: ns3::AddressChecker::AddressChecker() [constructor]
  11.365      cls.add_constructor([])
  11.366 +    cls.add_copy_constructor()
  11.367      return
  11.368  
  11.369  def register_Ns3AddressValue_methods(root_module, cls):
  11.370 -    ## address.h: ns3::AddressValue::AddressValue(ns3::AddressValue const & arg0) [copy constructor]
  11.371 -    cls.add_constructor([param('ns3::AddressValue const &', 'arg0')])
  11.372      ## address.h: ns3::AddressValue::AddressValue() [constructor]
  11.373      cls.add_constructor([])
  11.374      ## address.h: ns3::AddressValue::AddressValue(ns3::Address const & value) [constructor]
  11.375 @@ -2244,11 +2203,10 @@
  11.376                     'bool', 
  11.377                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  11.378                     is_virtual=True)
  11.379 +    cls.add_copy_constructor()
  11.380      return
  11.381  
  11.382  def register_Ns3Application_methods(root_module, cls):
  11.383 -    ## application.h: ns3::Application::Application(ns3::Application const & arg0) [copy constructor]
  11.384 -    cls.add_constructor([param('ns3::Application const &', 'arg0')])
  11.385      ## application.h: static ns3::TypeId ns3::Application::GetTypeId() [member function]
  11.386      cls.add_method('GetTypeId', 
  11.387                     'ns3::TypeId', 
  11.388 @@ -2296,11 +2254,10 @@
  11.389                     'void', 
  11.390                     [], 
  11.391                     visibility='private', is_virtual=True)
  11.392 +    cls.add_copy_constructor()
  11.393      return
  11.394  
  11.395  def register_Ns3Channel_methods(root_module, cls):
  11.396 -    ## channel.h: ns3::Channel::Channel(ns3::Channel const & arg0) [copy constructor]
  11.397 -    cls.add_constructor([param('ns3::Channel const &', 'arg0')])
  11.398      ## channel.h: static ns3::TypeId ns3::Channel::GetTypeId() [member function]
  11.399      cls.add_method('GetTypeId', 
  11.400                     'ns3::TypeId', 
  11.401 @@ -2328,11 +2285,10 @@
  11.402                     'ns3::Ptr< ns3::NetDevice >', 
  11.403                     [param('uint32_t', 'i')], 
  11.404                     is_pure_virtual=True, is_const=True, is_virtual=True)
  11.405 +    cls.add_copy_constructor()
  11.406      return
  11.407  
  11.408  def register_Ns3DropTailQueue_methods(root_module, cls):
  11.409 -    ## drop-tail-queue.h: ns3::DropTailQueue::DropTailQueue(ns3::DropTailQueue const & arg0) [copy constructor]
  11.410 -    cls.add_constructor([param('ns3::DropTailQueue const &', 'arg0')])
  11.411      ## drop-tail-queue.h: static ns3::TypeId ns3::DropTailQueue::GetTypeId() [member function]
  11.412      cls.add_method('GetTypeId', 
  11.413                     'ns3::TypeId', 
  11.414 @@ -2355,11 +2311,10 @@
  11.415                     'ns3::Ptr< ns3::Packet const >', 
  11.416                     [], 
  11.417                     is_const=True, visibility='private', is_virtual=True)
  11.418 +    cls.add_copy_constructor()
  11.419      return
  11.420  
  11.421  def register_Ns3EthernetHeader_methods(root_module, cls):
  11.422 -    ## ethernet-header.h: ns3::EthernetHeader::EthernetHeader(ns3::EthernetHeader const & arg0) [copy constructor]
  11.423 -    cls.add_constructor([param('ns3::EthernetHeader const &', 'arg0')])
  11.424      ## ethernet-header.h: ns3::EthernetHeader::EthernetHeader(bool hasPreamble) [constructor]
  11.425      cls.add_constructor([param('bool', 'hasPreamble')])
  11.426      ## ethernet-header.h: ns3::EthernetHeader::EthernetHeader() [constructor]
  11.427 @@ -2440,11 +2395,10 @@
  11.428                     'uint32_t', 
  11.429                     [param('ns3::Buffer::Iterator', 'start')], 
  11.430                     is_virtual=True)
  11.431 +    cls.add_copy_constructor()
  11.432      return
  11.433  
  11.434  def register_Ns3EthernetTrailer_methods(root_module, cls):
  11.435 -    ## ethernet-trailer.h: ns3::EthernetTrailer::EthernetTrailer(ns3::EthernetTrailer const & arg0) [copy constructor]
  11.436 -    cls.add_constructor([param('ns3::EthernetTrailer const &', 'arg0')])
  11.437      ## ethernet-trailer.h: ns3::EthernetTrailer::EthernetTrailer() [constructor]
  11.438      cls.add_constructor([])
  11.439      ## ethernet-trailer.h: static void ns3::EthernetTrailer::EnableFcs(bool enable) [member function]
  11.440 @@ -2504,11 +2458,10 @@
  11.441                     'uint32_t', 
  11.442                     [param('ns3::Buffer::Iterator', 'end')], 
  11.443                     is_virtual=True)
  11.444 +    cls.add_copy_constructor()
  11.445      return
  11.446  
  11.447  def register_Ns3Ipv4_methods(root_module, cls):
  11.448 -    ## ipv4.h: ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
  11.449 -    cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
  11.450      ## ipv4.h: static ns3::TypeId ns3::Ipv4::GetTypeId() [member function]
  11.451      cls.add_method('GetTypeId', 
  11.452                     'ns3::TypeId', 
  11.453 @@ -2696,18 +2649,17 @@
  11.454                     'uint32_t', 
  11.455                     [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask', default_value='ns3::Ipv4Mask(((const char*)"255.255.255.255"))')], 
  11.456                     is_virtual=True)
  11.457 +    cls.add_copy_constructor()
  11.458      return
  11.459  
  11.460  def register_Ns3Ipv4RawSocketFactory_methods(root_module, cls):
  11.461 -    ## ipv4-raw-socket-factory.h: ns3::Ipv4RawSocketFactory::Ipv4RawSocketFactory(ns3::Ipv4RawSocketFactory const & arg0) [copy constructor]
  11.462 -    cls.add_constructor([param('ns3::Ipv4RawSocketFactory const &', 'arg0')])
  11.463 -    ## ipv4-raw-socket-factory.h: ns3::Ipv4RawSocketFactory::Ipv4RawSocketFactory() [constructor]
  11.464 -    cls.add_constructor([])
  11.465      ## ipv4-raw-socket-factory.h: static ns3::TypeId ns3::Ipv4RawSocketFactory::GetTypeId() [member function]
  11.466      cls.add_method('GetTypeId', 
  11.467                     'ns3::TypeId', 
  11.468                     [], 
  11.469                     is_static=True)
  11.470 +    cls.add_constructor([])
  11.471 +    cls.add_copy_constructor()
  11.472      return
  11.473  
  11.474  def register_Ns3Ipv4RoutingProtocol_methods(root_module, cls):
  11.475 @@ -2730,10 +2682,6 @@
  11.476      return
  11.477  
  11.478  def register_Ns3NetDevice_methods(root_module, cls):
  11.479 -    ## net-device.h: ns3::NetDevice::NetDevice(ns3::NetDevice const & arg0) [copy constructor]
  11.480 -    cls.add_constructor([param('ns3::NetDevice const &', 'arg0')])
  11.481 -    ## net-device.h: ns3::NetDevice::NetDevice() [constructor]
  11.482 -    cls.add_constructor([])
  11.483      ## net-device.h: static ns3::TypeId ns3::NetDevice::GetTypeId() [member function]
  11.484      cls.add_method('GetTypeId', 
  11.485                     'ns3::TypeId', 
  11.486 @@ -2864,11 +2812,11 @@
  11.487                     'bool', 
  11.488                     [], 
  11.489                     is_pure_virtual=True, is_const=True, is_virtual=True)
  11.490 +    cls.add_constructor([])
  11.491 +    cls.add_copy_constructor()
  11.492      return
  11.493  
  11.494  def register_Ns3Node_methods(root_module, cls):
  11.495 -    ## node.h: ns3::Node::Node(ns3::Node const & arg0) [copy constructor]
  11.496 -    cls.add_constructor([param('ns3::Node const &', 'arg0')])
  11.497      ## node.h: static ns3::TypeId ns3::Node::GetTypeId() [member function]
  11.498      cls.add_method('GetTypeId', 
  11.499                     'ns3::TypeId', 
  11.500 @@ -2934,11 +2882,10 @@
  11.501                     'void', 
  11.502                     [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
  11.503                     visibility='private', is_virtual=True)
  11.504 +    cls.add_copy_constructor()
  11.505      return
  11.506  
  11.507  def register_Ns3PacketSocketFactory_methods(root_module, cls):
  11.508 -    ## packet-socket-factory.h: ns3::PacketSocketFactory::PacketSocketFactory(ns3::PacketSocketFactory const & arg0) [copy constructor]
  11.509 -    cls.add_constructor([param('ns3::PacketSocketFactory const &', 'arg0')])
  11.510      ## packet-socket-factory.h: static ns3::TypeId ns3::PacketSocketFactory::GetTypeId() [member function]
  11.511      cls.add_method('GetTypeId', 
  11.512                     'ns3::TypeId', 
  11.513 @@ -2951,11 +2898,10 @@
  11.514                     'ns3::Ptr< ns3::Socket >', 
  11.515                     [], 
  11.516                     is_virtual=True)
  11.517 +    cls.add_copy_constructor()
  11.518      return
  11.519  
  11.520  def register_Ns3SimpleChannel_methods(root_module, cls):
  11.521 -    ## simple-channel.h: ns3::SimpleChannel::SimpleChannel(ns3::SimpleChannel const & arg0) [copy constructor]
  11.522 -    cls.add_constructor([param('ns3::SimpleChannel const &', 'arg0')])
  11.523      ## simple-channel.h: static ns3::TypeId ns3::SimpleChannel::GetTypeId() [member function]
  11.524      cls.add_method('GetTypeId', 
  11.525                     'ns3::TypeId', 
  11.526 @@ -2981,11 +2927,10 @@
  11.527                     'ns3::Ptr< ns3::NetDevice >', 
  11.528                     [param('uint32_t', 'i')], 
  11.529                     is_const=True, is_virtual=True)
  11.530 +    cls.add_copy_constructor()
  11.531      return
  11.532  
  11.533  def register_Ns3SimpleNetDevice_methods(root_module, cls):
  11.534 -    ## simple-net-device.h: ns3::SimpleNetDevice::SimpleNetDevice(ns3::SimpleNetDevice const & arg0) [copy constructor]
  11.535 -    cls.add_constructor([param('ns3::SimpleNetDevice const &', 'arg0')])
  11.536      ## simple-net-device.h: static ns3::TypeId ns3::SimpleNetDevice::GetTypeId() [member function]
  11.537      cls.add_method('GetTypeId', 
  11.538                     'ns3::TypeId', 
  11.539 @@ -3135,6 +3080,7 @@
  11.540                     'void', 
  11.541                     [], 
  11.542                     visibility='protected', is_virtual=True)
  11.543 +    cls.add_copy_constructor()
  11.544      return
  11.545  
  11.546  def register_functions(root_module):
    12.1 --- a/bindings/python/ns3_module_olsr.py	Tue Dec 30 11:35:31 2008 -0800
    12.2 +++ b/bindings/python/ns3_module_olsr.py	Tue Jan 13 17:15:44 2009 -0500
    12.3 @@ -86,10 +86,6 @@
    12.4      return
    12.5  
    12.6  def register_Ns3OlsrAgent_methods(root_module, cls):
    12.7 -    ## olsr-agent.h: ns3::olsr::Agent::Agent(ns3::olsr::Agent const & arg0) [copy constructor]
    12.8 -    cls.add_constructor([param('ns3::olsr::Agent const &', 'arg0')])
    12.9 -    ## olsr-agent.h: ns3::olsr::Agent::Agent() [constructor]
   12.10 -    cls.add_constructor([])
   12.11      ## olsr-agent.h: static ns3::TypeId ns3::olsr::Agent::GetTypeId() [member function]
   12.12      cls.add_method('GetTypeId', 
   12.13                     'ns3::TypeId', 
   12.14 @@ -115,6 +111,8 @@
   12.15                     'ns3::Ptr< ns3::olsr::RoutingTable const >', 
   12.16                     [], 
   12.17                     is_pure_virtual=True, is_const=True, is_virtual=True)
   12.18 +    cls.add_constructor([])
   12.19 +    cls.add_copy_constructor()
   12.20      return
   12.21  
   12.22  def register_Ns3OlsrMessageHeader_methods(root_module, cls):
   12.23 @@ -246,8 +244,6 @@
   12.24      return
   12.25  
   12.26  def register_Ns3OlsrMessageHeaderHello_methods(root_module, cls):
   12.27 -    ## olsr-header.h: ns3::olsr::MessageHeader::Hello::Hello() [constructor]
   12.28 -    cls.add_constructor([])
   12.29      ## olsr-header.h: ns3::olsr::MessageHeader::Hello::Hello(ns3::olsr::MessageHeader::Hello const & arg0) [copy constructor]
   12.30      cls.add_constructor([param('ns3::olsr::MessageHeader::Hello const &', 'arg0')])
   12.31      ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Hello::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
   12.32 @@ -291,15 +287,11 @@
   12.33      cls.add_instance_attribute('linkCode', 'uint8_t', is_const=False)
   12.34      ## olsr-header.h: ns3::olsr::MessageHeader::Hello::LinkMessage::neighborInterfaceAddresses [variable]
   12.35      cls.add_instance_attribute('neighborInterfaceAddresses', 'std::vector< ns3::Ipv4Address >', is_const=False)
   12.36 -    ## olsr-header.h: ns3::olsr::MessageHeader::Hello::LinkMessage::LinkMessage(ns3::olsr::MessageHeader::Hello::LinkMessage const & arg0) [copy constructor]
   12.37 -    cls.add_constructor([param('ns3::olsr::MessageHeader::Hello::LinkMessage const &', 'arg0')])
   12.38 -    ## olsr-header.h: ns3::olsr::MessageHeader::Hello::LinkMessage::LinkMessage() [constructor]
   12.39      cls.add_constructor([])
   12.40 +    cls.add_copy_constructor()
   12.41      return
   12.42  
   12.43  def register_Ns3OlsrMessageHeaderHna_methods(root_module, cls):
   12.44 -    ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Hna() [constructor]
   12.45 -    cls.add_constructor([])
   12.46      ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Hna(ns3::olsr::MessageHeader::Hna const & arg0) [copy constructor]
   12.47      cls.add_constructor([param('ns3::olsr::MessageHeader::Hna const &', 'arg0')])
   12.48      ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Hna::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
   12.49 @@ -330,15 +322,11 @@
   12.50      cls.add_instance_attribute('address', 'ns3::Ipv4Address', is_const=False)
   12.51      ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Association::mask [variable]
   12.52      cls.add_instance_attribute('mask', 'ns3::Ipv4Mask', is_const=False)
   12.53 -    ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Association::Association(ns3::olsr::MessageHeader::Hna::Association const & arg0) [copy constructor]
   12.54 -    cls.add_constructor([param('ns3::olsr::MessageHeader::Hna::Association const &', 'arg0')])
   12.55 -    ## olsr-header.h: ns3::olsr::MessageHeader::Hna::Association::Association() [constructor]
   12.56      cls.add_constructor([])
   12.57 +    cls.add_copy_constructor()
   12.58      return
   12.59  
   12.60  def register_Ns3OlsrMessageHeaderMid_methods(root_module, cls):
   12.61 -    ## olsr-header.h: ns3::olsr::MessageHeader::Mid::Mid() [constructor]
   12.62 -    cls.add_constructor([])
   12.63      ## olsr-header.h: ns3::olsr::MessageHeader::Mid::Mid(ns3::olsr::MessageHeader::Mid const & arg0) [copy constructor]
   12.64      cls.add_constructor([param('ns3::olsr::MessageHeader::Mid const &', 'arg0')])
   12.65      ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Mid::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
   12.66 @@ -365,8 +353,6 @@
   12.67      return
   12.68  
   12.69  def register_Ns3OlsrMessageHeaderTc_methods(root_module, cls):
   12.70 -    ## olsr-header.h: ns3::olsr::MessageHeader::Tc::Tc() [constructor]
   12.71 -    cls.add_constructor([])
   12.72      ## olsr-header.h: ns3::olsr::MessageHeader::Tc::Tc(ns3::olsr::MessageHeader::Tc const & arg0) [copy constructor]
   12.73      cls.add_constructor([param('ns3::olsr::MessageHeader::Tc const &', 'arg0')])
   12.74      ## olsr-header.h: uint32_t ns3::olsr::MessageHeader::Tc::Deserialize(ns3::Buffer::Iterator start, uint32_t messageSize) [member function]
   12.75 @@ -451,8 +437,6 @@
   12.76      return
   12.77  
   12.78  def register_Ns3OlsrRoutingTable_methods(root_module, cls):
   12.79 -    ## olsr-routing-table.h: ns3::olsr::RoutingTable::RoutingTable(ns3::olsr::RoutingTable const & arg0) [copy constructor]
   12.80 -    cls.add_constructor([param('ns3::olsr::RoutingTable const &', 'arg0')])
   12.81      ## olsr-routing-table.h: ns3::olsr::RoutingTable::RoutingTable() [constructor]
   12.82      cls.add_constructor([])
   12.83      ## olsr-routing-table.h: void ns3::olsr::RoutingTable::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
   12.84 @@ -514,6 +498,7 @@
   12.85                     'void', 
   12.86                     [], 
   12.87                     visibility='private', is_virtual=True)
   12.88 +    cls.add_copy_constructor()
   12.89      return
   12.90  
   12.91  def register_Ns3OlsrRoutingTableEntry_methods(root_module, cls):
   12.92 @@ -525,10 +510,9 @@
   12.93      cls.add_instance_attribute('interface', 'uint32_t', is_const=False)
   12.94      ## olsr-routing-table.h: ns3::olsr::RoutingTableEntry::distance [variable]
   12.95      cls.add_instance_attribute('distance', 'uint32_t', is_const=False)
   12.96 -    ## olsr-routing-table.h: ns3::olsr::RoutingTableEntry::RoutingTableEntry(ns3::olsr::RoutingTableEntry const & arg0) [copy constructor]
   12.97 -    cls.add_constructor([param('ns3::olsr::RoutingTableEntry const &', 'arg0')])
   12.98      ## olsr-routing-table.h: ns3::olsr::RoutingTableEntry::RoutingTableEntry() [constructor]
   12.99      cls.add_constructor([])
  12.100 +    cls.add_copy_constructor()
  12.101      return
  12.102  
  12.103  def register_functions(root_module):
    13.1 --- a/bindings/python/ns3_module_onoff.py	Tue Dec 30 11:35:31 2008 -0800
    13.2 +++ b/bindings/python/ns3_module_onoff.py	Tue Jan 13 17:15:44 2009 -0500
    13.3 @@ -51,8 +51,6 @@
    13.4      return
    13.5  
    13.6  def register_Ns3OnOffApplication_methods(root_module, cls):
    13.7 -    ## onoff-application.h: ns3::OnOffApplication::OnOffApplication(ns3::OnOffApplication const & arg0) [copy constructor]
    13.8 -    cls.add_constructor([param('ns3::OnOffApplication const &', 'arg0')])
    13.9      ## onoff-application.h: static ns3::TypeId ns3::OnOffApplication::GetTypeId() [member function]
   13.10      cls.add_method('GetTypeId', 
   13.11                     'ns3::TypeId', 
   13.12 @@ -79,6 +77,7 @@
   13.13                     'void', 
   13.14                     [], 
   13.15                     visibility='private', is_virtual=True)
   13.16 +    cls.add_copy_constructor()
   13.17      return
   13.18  
   13.19  def register_functions(root_module):
    14.1 --- a/bindings/python/ns3_module_packet_sink.py	Tue Dec 30 11:35:31 2008 -0800
    14.2 +++ b/bindings/python/ns3_module_packet_sink.py	Tue Jan 13 17:15:44 2009 -0500
    14.3 @@ -51,8 +51,6 @@
    14.4      return
    14.5  
    14.6  def register_Ns3PacketSink_methods(root_module, cls):
    14.7 -    ## packet-sink.h: ns3::PacketSink::PacketSink(ns3::PacketSink const & arg0) [copy constructor]
    14.8 -    cls.add_constructor([param('ns3::PacketSink const &', 'arg0')])
    14.9      ## packet-sink.h: static ns3::TypeId ns3::PacketSink::GetTypeId() [member function]
   14.10      cls.add_method('GetTypeId', 
   14.11                     'ns3::TypeId', 
   14.12 @@ -75,6 +73,7 @@
   14.13                     'void', 
   14.14                     [], 
   14.15                     visibility='private', is_virtual=True)
   14.16 +    cls.add_copy_constructor()
   14.17      return
   14.18  
   14.19  def register_functions(root_module):
    15.1 --- a/bindings/python/ns3_module_point_to_point.py	Tue Dec 30 11:35:31 2008 -0800
    15.2 +++ b/bindings/python/ns3_module_point_to_point.py	Tue Jan 13 17:15:44 2009 -0500
    15.3 @@ -57,8 +57,6 @@
    15.4      return
    15.5  
    15.6  def register_Ns3PppHeader_methods(root_module, cls):
    15.7 -    ## ppp-header.h: ns3::PppHeader::PppHeader(ns3::PppHeader const & arg0) [copy constructor]
    15.8 -    cls.add_constructor([param('ns3::PppHeader const &', 'arg0')])
    15.9      ## ppp-header.h: ns3::PppHeader::PppHeader() [constructor]
   15.10      cls.add_constructor([])
   15.11      ## ppp-header.h: static ns3::TypeId ns3::PppHeader::GetTypeId() [member function]
   15.12 @@ -91,11 +89,10 @@
   15.13                     'uint32_t', 
   15.14                     [], 
   15.15                     is_const=True, is_virtual=True)
   15.16 +    cls.add_copy_constructor()
   15.17      return
   15.18  
   15.19  def register_Ns3PointToPointChannel_methods(root_module, cls):
   15.20 -    ## point-to-point-channel.h: ns3::PointToPointChannel::PointToPointChannel(ns3::PointToPointChannel const & arg0) [copy constructor]
   15.21 -    cls.add_constructor([param('ns3::PointToPointChannel const &', 'arg0')])
   15.22      ## point-to-point-channel.h: static ns3::TypeId ns3::PointToPointChannel::GetTypeId() [member function]
   15.23      cls.add_method('GetTypeId', 
   15.24                     'ns3::TypeId', 
   15.25 @@ -126,11 +123,10 @@
   15.26                     'ns3::Ptr< ns3::NetDevice >', 
   15.27                     [param('uint32_t', 'i')], 
   15.28                     is_const=True, is_virtual=True)
   15.29 +    cls.add_copy_constructor()
   15.30      return
   15.31  
   15.32  def register_Ns3PointToPointNetDevice_methods(root_module, cls):
   15.33 -    ## point-to-point-net-device.h: ns3::PointToPointNetDevice::PointToPointNetDevice(ns3::PointToPointNetDevice const & arg0) [copy constructor]
   15.34 -    cls.add_constructor([param('ns3::PointToPointNetDevice const &', 'arg0')])
   15.35      ## point-to-point-net-device.h: static ns3::TypeId ns3::PointToPointNetDevice::GetTypeId() [member function]
   15.36      cls.add_method('GetTypeId', 
   15.37                     'ns3::TypeId', 
   15.38 @@ -305,6 +301,7 @@
   15.39                     'void', 
   15.40                     [], 
   15.41                     visibility='private', is_virtual=True)
   15.42 +    cls.add_copy_constructor()
   15.43      return
   15.44  
   15.45  def register_functions(root_module):
    16.1 --- a/bindings/python/ns3_module_simulator.py	Tue Dec 30 11:35:31 2008 -0800
    16.2 +++ b/bindings/python/ns3_module_simulator.py	Tue Jan 13 17:15:44 2009 -0500
    16.3 @@ -171,8 +171,6 @@
    16.4      return
    16.5  
    16.6  def register_Ns3EventImpl_methods(root_module, cls):
    16.7 -    ## event-impl.h: ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
    16.8 -    cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
    16.9      ## event-impl.h: ns3::EventImpl::EventImpl() [constructor]
   16.10      cls.add_constructor([])
   16.11      ## event-impl.h: void ns3::EventImpl::Ref() const [member function]
   16.12 @@ -202,6 +200,7 @@
   16.13                     'void', 
   16.14                     [], 
   16.15                     is_pure_virtual=True, visibility='protected', is_virtual=True)
   16.16 +    cls.add_copy_constructor()
   16.17      return
   16.18  
   16.19  def register_Ns3HighPrecision_methods(root_module, cls):
   16.20 @@ -257,8 +256,6 @@
   16.21      return
   16.22  
   16.23  def register_Ns3Simulator_methods(root_module, cls):
   16.24 -    ## simulator.h: ns3::Simulator::Simulator(ns3::Simulator const & arg0) [copy constructor]
   16.25 -    cls.add_constructor([param('ns3::Simulator const &', 'arg0')])
   16.26      ## simulator.h: static void ns3::Simulator::SetImplementation(ns3::Ptr<ns3::SimulatorImpl> impl) [member function]
   16.27      cls.add_method('SetImplementation', 
   16.28                     'void', 
   16.29 @@ -344,6 +341,7 @@
   16.30                     'ns3::Time', 
   16.31                     [], 
   16.32                     is_static=True)
   16.33 +    cls.add_copy_constructor()
   16.34      return
   16.35  
   16.36  def register_Ns3TimeInvert_methods(root_module, cls):
   16.37 @@ -587,8 +585,6 @@
   16.38      return
   16.39  
   16.40  def register_Ns3Timer_methods(root_module, cls):
   16.41 -    ## timer.h: ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
   16.42 -    cls.add_constructor([param('ns3::Timer const &', 'arg0')])
   16.43      ## timer.h: ns3::Timer::Timer() [constructor]
   16.44      cls.add_constructor([])
   16.45      ## timer.h: ns3::Timer::Timer(ns3::Timer::DestroyPolicy destroyPolicy) [constructor]
   16.46 @@ -651,13 +647,10 @@
   16.47      cls.add_method('Resume', 
   16.48                     'void', 
   16.49                     [])
   16.50 +    cls.add_copy_constructor()
   16.51      return
   16.52  
   16.53  def register_Ns3TimerImpl_methods(root_module, cls):
   16.54 -    ## timer-impl.h: ns3::TimerImpl::TimerImpl(ns3::TimerImpl const & arg0) [copy constructor]
   16.55 -    cls.add_constructor([param('ns3::TimerImpl const &', 'arg0')])
   16.56 -    ## timer-impl.h: ns3::TimerImpl::TimerImpl() [constructor]
   16.57 -    cls.add_constructor([])
   16.58      ## timer-impl.h: ns3::EventId ns3::TimerImpl::Schedule(ns3::Time const & delay) [member function]
   16.59      cls.add_method('Schedule', 
   16.60                     'ns3::EventId', 
   16.61 @@ -668,24 +661,21 @@
   16.62                     'void', 
   16.63                     [], 
   16.64                     is_pure_virtual=True, is_virtual=True)
   16.65 +    cls.add_constructor([])
   16.66 +    cls.add_copy_constructor()
   16.67      return
   16.68  
   16.69  def register_Ns3Watchdog_methods(root_module, cls):
   16.70 -    ## watchdog.h: ns3::Watchdog::Watchdog(ns3::Watchdog const & arg0) [copy constructor]
   16.71 -    cls.add_constructor([param('ns3::Watchdog const &', 'arg0')])
   16.72      ## watchdog.h: ns3::Watchdog::Watchdog() [constructor]
   16.73      cls.add_constructor([])
   16.74      ## watchdog.h: void ns3::Watchdog::Ping(ns3::Time delay) [member function]
   16.75      cls.add_method('Ping', 
   16.76                     'void', 
   16.77                     [param('ns3::Time', 'delay')])
   16.78 +    cls.add_copy_constructor()
   16.79      return
   16.80  
   16.81  def register_Ns3Scheduler_methods(root_module, cls):
   16.82 -    ## scheduler.h: ns3::Scheduler::Scheduler(ns3::Scheduler const & arg0) [copy constructor]
   16.83 -    cls.add_constructor([param('ns3::Scheduler const &', 'arg0')])
   16.84 -    ## scheduler.h: ns3::Scheduler::Scheduler() [constructor]
   16.85 -    cls.add_constructor([])
   16.86      ## scheduler.h: static ns3::TypeId ns3::Scheduler::GetTypeId() [member function]
   16.87      cls.add_method('GetTypeId', 
   16.88                     'ns3::TypeId', 
   16.89 @@ -716,6 +706,8 @@
   16.90                     'void', 
   16.91                     [param('ns3::Scheduler::Event const &', 'ev')], 
   16.92                     is_pure_virtual=True, is_virtual=True)
   16.93 +    cls.add_constructor([])
   16.94 +    cls.add_copy_constructor()
   16.95      return
   16.96  
   16.97  def register_Ns3SchedulerEvent_methods(root_module, cls):
   16.98 @@ -743,10 +735,6 @@
   16.99      return
  16.100  
  16.101  def register_Ns3SimulatorImpl_methods(root_module, cls):
  16.102 -    ## simulator-impl.h: ns3::SimulatorImpl::SimulatorImpl(ns3::SimulatorImpl const & arg0) [copy constructor]
  16.103 -    cls.add_constructor([param('ns3::SimulatorImpl const &', 'arg0')])
  16.104 -    ## simulator-impl.h: ns3::SimulatorImpl::SimulatorImpl() [constructor]
  16.105 -    cls.add_constructor([])
  16.106      ## simulator-impl.h: void ns3::SimulatorImpl::Destroy() [member function]
  16.107      cls.add_method('Destroy', 
  16.108                     'void', 
  16.109 @@ -832,11 +820,11 @@
  16.110                     'ns3::Ptr< ns3::Scheduler >', 
  16.111                     [], 
  16.112                     is_pure_virtual=True, is_const=True, is_virtual=True)
  16.113 +    cls.add_constructor([])
  16.114 +    cls.add_copy_constructor()
  16.115      return
  16.116  
  16.117  def register_Ns3Synchronizer_methods(root_module, cls):
  16.118 -    ## synchronizer.h: ns3::Synchronizer::Synchronizer(ns3::Synchronizer const & arg0) [copy constructor]
  16.119 -    cls.add_constructor([param('ns3::Synchronizer const &', 'arg0')])
  16.120      ## synchronizer.h: static ns3::TypeId ns3::Synchronizer::GetTypeId() [member function]
  16.121      cls.add_method('GetTypeId', 
  16.122                     'ns3::TypeId', 
  16.123 @@ -929,18 +917,15 @@
  16.124                     'uint64_t', 
  16.125                     [], 
  16.126                     is_pure_virtual=True, visibility='protected', is_virtual=True)
  16.127 +    cls.add_copy_constructor()
  16.128      return
  16.129  
  16.130  def register_Ns3TimeChecker_methods(root_module, cls):
  16.131 -    ## nstime.h: ns3::TimeChecker::TimeChecker(ns3::TimeChecker const & arg0) [copy constructor]
  16.132 -    cls.add_constructor([param('ns3::TimeChecker const &', 'arg0')])
  16.133 -    ## nstime.h: ns3::TimeChecker::TimeChecker() [constructor]
  16.134      cls.add_constructor([])
  16.135 +    cls.add_copy_constructor()
  16.136      return
  16.137  
  16.138  def register_Ns3TimeValue_methods(root_module, cls):
  16.139 -    ## nstime.h: ns3::TimeValue::TimeValue(ns3::TimeValue const & arg0) [copy constructor]
  16.140 -    cls.add_constructor([param('ns3::TimeValue const &', 'arg0')])
  16.141      ## nstime.h: ns3::TimeValue::TimeValue() [constructor]
  16.142      cls.add_constructor([])
  16.143      ## nstime.h: ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
  16.144 @@ -969,6 +954,7 @@
  16.145                     'bool', 
  16.146                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  16.147                     is_virtual=True)
  16.148 +    cls.add_copy_constructor()
  16.149      return
  16.150  
  16.151  def register_Ns3WallClockSynchronizer_methods(root_module, cls):
  16.152 @@ -978,8 +964,6 @@
  16.153      cls.add_static_attribute('US_PER_SEC', 'uint64_t const', is_const=True)
  16.154      ## wall-clock-synchronizer.h: ns3::WallClockSynchronizer::NS_PER_SEC [variable]
  16.155      cls.add_static_attribute('NS_PER_SEC', 'uint64_t const', is_const=True)
  16.156 -    ## wall-clock-synchronizer.h: ns3::WallClockSynchronizer::WallClockSynchronizer(ns3::WallClockSynchronizer const & arg0) [copy constructor]
  16.157 -    cls.add_constructor([param('ns3::WallClockSynchronizer const &', 'arg0')])
  16.158      ## wall-clock-synchronizer.h: ns3::WallClockSynchronizer::WallClockSynchronizer() [constructor]
  16.159      cls.add_constructor([])
  16.160      ## wall-clock-synchronizer.h: bool ns3::WallClockSynchronizer::DoRealtime() [member function]
  16.161 @@ -1067,11 +1051,10 @@
  16.162                     'void', 
  16.163                     [param('timeval *', 'tv1'), param('timeval *', 'tv2'), param('timeval *', 'result')], 
  16.164                     visibility='protected')
  16.165 +    cls.add_copy_constructor()
  16.166      return
  16.167  
  16.168  def register_Ns3CalendarScheduler_methods(root_module, cls):
  16.169 -    ## calendar-scheduler.h: ns3::CalendarScheduler::CalendarScheduler(ns3::CalendarScheduler const & arg0) [copy constructor]
  16.170 -    cls.add_constructor([param('ns3::CalendarScheduler const &', 'arg0')])
  16.171      ## calendar-scheduler.h: static ns3::TypeId ns3::CalendarScheduler::GetTypeId() [member function]
  16.172      cls.add_method('GetTypeId', 
  16.173                     'ns3::TypeId', 
  16.174 @@ -1104,11 +1087,10 @@
  16.175                     'void', 
  16.176                     [param('ns3::Scheduler::Event const &', 'ev')], 
  16.177                     is_virtual=True)
  16.178 +    cls.add_copy_constructor()
  16.179      return
  16.180  
  16.181  def register_Ns3DefaultSimulatorImpl_methods(root_module, cls):
  16.182 -    ## default-simulator-impl.h: ns3::DefaultSimulatorImpl::DefaultSimulatorImpl(ns3::DefaultSimulatorImpl const & arg0) [copy constructor]
  16.183 -    cls.add_constructor([param('ns3::DefaultSimulatorImpl const &', 'arg0')])
  16.184      ## default-simulator-impl.h: static ns3::TypeId ns3::DefaultSimulatorImpl::GetTypeId() [member function]
  16.185      cls.add_method('GetTypeId', 
  16.186                     'ns3::TypeId', 
  16.187 @@ -1201,11 +1183,10 @@
  16.188                     'ns3::Ptr< ns3::Scheduler >', 
  16.189                     [], 
  16.190                     is_const=True, is_virtual=True)
  16.191 +    cls.add_copy_constructor()
  16.192      return
  16.193  
  16.194  def register_Ns3HeapScheduler_methods(root_module, cls):
  16.195 -    ## heap-scheduler.h: ns3::HeapScheduler::HeapScheduler(ns3::HeapScheduler const & arg0) [copy constructor]
  16.196 -    cls.add_constructor([param('ns3::HeapScheduler const &', 'arg0')])
  16.197      ## heap-scheduler.h: static ns3::TypeId ns3::HeapScheduler::GetTypeId() [member function]
  16.198      cls.add_method('GetTypeId', 
  16.199                     'ns3::TypeId', 
  16.200 @@ -1238,11 +1219,10 @@
  16.201                     'void', 
  16.202                     [param('ns3::Scheduler::Event const &', 'ev')], 
  16.203                     is_virtual=True)
  16.204 +    cls.add_copy_constructor()
  16.205      return
  16.206  
  16.207  def register_Ns3ListScheduler_methods(root_module, cls):
  16.208 -    ## list-scheduler.h: ns3::ListScheduler::ListScheduler(ns3::ListScheduler const & arg0) [copy constructor]
  16.209 -    cls.add_constructor([param('ns3::ListScheduler const &', 'arg0')])
  16.210      ## list-scheduler.h: static ns3::TypeId ns3::ListScheduler::GetTypeId() [member function]
  16.211      cls.add_method('GetTypeId', 
  16.212                     'ns3::TypeId', 
  16.213 @@ -1275,11 +1255,10 @@
  16.214                     'void', 
  16.215                     [param('ns3::Scheduler::Event const &', 'ev')], 
  16.216                     is_virtual=True)
  16.217 +    cls.add_copy_constructor()
  16.218      return
  16.219  
  16.220  def register_Ns3MapScheduler_methods(root_module, cls):
  16.221 -    ## map-scheduler.h: ns3::MapScheduler::MapScheduler(ns3::MapScheduler const & arg0) [copy constructor]
  16.222 -    cls.add_constructor([param('ns3::MapScheduler const &', 'arg0')])
  16.223      ## map-scheduler.h: static ns3::TypeId ns3::MapScheduler::GetTypeId() [member function]
  16.224      cls.add_method('GetTypeId', 
  16.225                     'ns3::TypeId', 
  16.226 @@ -1312,11 +1291,10 @@
  16.227                     'void', 
  16.228                     [param('ns3::Scheduler::Event const &', 'ev')], 
  16.229                     is_virtual=True)
  16.230 +    cls.add_copy_constructor()
  16.231      return
  16.232  
  16.233  def register_Ns3RealtimeSimulatorImpl_methods(root_module, cls):
  16.234 -    ## realtime-simulator-impl.h: ns3::RealtimeSimulatorImpl::RealtimeSimulatorImpl(ns3::RealtimeSimulatorImpl const & arg0) [copy constructor]
  16.235 -    cls.add_constructor([param('ns3::RealtimeSimulatorImpl const &', 'arg0')])
  16.236      ## realtime-simulator-impl.h: static ns3::TypeId ns3::RealtimeSimulatorImpl::GetTypeId() [member function]
  16.237      cls.add_method('GetTypeId', 
  16.238                     'ns3::TypeId', 
  16.239 @@ -1440,6 +1418,7 @@
  16.240                     'ns3::Time', 
  16.241                     [], 
  16.242                     is_const=True)
  16.243 +    cls.add_copy_constructor()
  16.244      return
  16.245  
  16.246  def register_functions(root_module):
    17.1 --- a/bindings/python/ns3_module_stats.py	Tue Dec 30 11:35:31 2008 -0800
    17.2 +++ b/bindings/python/ns3_module_stats.py	Tue Jan 13 17:15:44 2009 -0500
    17.3 @@ -81,10 +81,6 @@
    17.4      return
    17.5  
    17.6  def register_Ns3DataOutputCallback_methods(root_module, cls):
    17.7 -    ## data-output-interface.h: ns3::DataOutputCallback::DataOutputCallback(ns3::DataOutputCallback const & arg0) [copy constructor]
    17.8 -    cls.add_constructor([param('ns3::DataOutputCallback const &', 'arg0')])
    17.9 -    ## data-output-interface.h: ns3::DataOutputCallback::DataOutputCallback() [constructor]
   17.10 -    cls.add_constructor([])
   17.11      ## data-output-interface.h: void ns3::DataOutputCallback::OutputSingleton(std::string key, std::string variable, int val) [member function]
   17.12      cls.add_method('OutputSingleton', 
   17.13                     'void', 
   17.14 @@ -110,11 +106,11 @@
   17.15                     'void', 
   17.16                     [param('std::string', 'key'), param('std::string', 'variable'), param('ns3::Time', 'val')], 
   17.17                     is_pure_virtual=True, is_virtual=True)
   17.18 +    cls.add_constructor([])
   17.19 +    cls.add_copy_constructor()
   17.20      return
   17.21  
   17.22  def register_Ns3DataCalculator_methods(root_module, cls):
   17.23 -    ## data-calculator.h: ns3::DataCalculator::DataCalculator(ns3::DataCalculator const & arg0) [copy constructor]
   17.24 -    cls.add_constructor([param('ns3::DataCalculator const &', 'arg0')])
   17.25      ## data-calculator.h: ns3::DataCalculator::DataCalculator() [constructor]
   17.26      cls.add_constructor([])
   17.27      ## data-calculator.h: bool ns3::DataCalculator::GetEnabled() const [member function]
   17.28 @@ -159,11 +155,10 @@
   17.29                     'void', 
   17.30                     [], 
   17.31                     visibility='protected', is_virtual=True)
   17.32 +    cls.add_copy_constructor()
   17.33      return
   17.34  
   17.35  def register_Ns3DataCollector_methods(root_module, cls):
   17.36 -    ## data-collector.h: ns3::DataCollector::DataCollector(ns3::DataCollector const & arg0) [copy constructor]
   17.37 -    cls.add_constructor([param('ns3::DataCollector const &', 'arg0')])
   17.38      ## data-collector.h: ns3::DataCollector::DataCollector() [constructor]
   17.39      cls.add_constructor([])
   17.40      ## data-collector.h: void ns3::DataCollector::DescribeRun(std::string experiment, std::string strategy, std::string input, std::string runID, std::string description="") [member function]
   17.41 @@ -232,11 +227,10 @@
   17.42                     'void', 
   17.43                     [], 
   17.44                     visibility='protected', is_virtual=True)
   17.45 +    cls.add_copy_constructor()
   17.46      return
   17.47  
   17.48  def register_Ns3DataOutputInterface_methods(root_module, cls):
   17.49 -    ## data-output-interface.h: ns3::DataOutputInterface::DataOutputInterface(ns3::DataOutputInterface const & arg0) [copy constructor]
   17.50 -    cls.add_constructor([param('ns3::DataOutputInterface const &', 'arg0')])
   17.51      ## data-output-interface.h: ns3::DataOutputInterface::DataOutputInterface() [constructor]
   17.52      cls.add_constructor([])
   17.53      ## data-output-interface.h: void ns3::DataOutputInterface::Output(ns3::DataCollector & dc) [member function]
   17.54 @@ -249,11 +243,10 @@
   17.55                     'void', 
   17.56                     [], 
   17.57                     visibility='protected', is_virtual=True)
   17.58 +    cls.add_copy_constructor()
   17.59      return
   17.60  
   17.61  def register_Ns3MinMaxAvgTotalCalculator__Unsigned_int_methods(root_module, cls):
   17.62 -    ## basic-data-calculators.h: ns3::MinMaxAvgTotalCalculator<unsigned int>::MinMaxAvgTotalCalculator(ns3::MinMaxAvgTotalCalculator<unsigned int> const & arg0) [copy constructor]
   17.63 -    cls.add_constructor([param('ns3::MinMaxAvgTotalCalculator< unsigned int > const &', 'arg0')])
   17.64      ## basic-data-calculators.h: ns3::MinMaxAvgTotalCalculator<unsigned int>::MinMaxAvgTotalCalculator() [constructor]
   17.65      cls.add_constructor([])
   17.66      ## basic-data-calculators.h: void ns3::MinMaxAvgTotalCalculator<unsigned int>::Update(unsigned int const i) [member function]
   17.67 @@ -270,11 +263,10 @@
   17.68                     'void', 
   17.69                     [], 
   17.70                     visibility='protected', is_virtual=True)
   17.71 +    cls.add_copy_constructor()
   17.72      return
   17.73  
   17.74  def register_Ns3OmnetDataOutput_methods(root_module, cls):
   17.75 -    ## omnet-data-output.h: ns3::OmnetDataOutput::OmnetDataOutput(ns3::OmnetDataOutput const & arg0) [copy constructor]
   17.76 -    cls.add_constructor([param('ns3::OmnetDataOutput const &', 'arg0')])
   17.77      ## omnet-data-output.h: ns3::OmnetDataOutput::OmnetDataOutput() [constructor]
   17.78      cls.add_constructor([])
   17.79      ## omnet-data-output.h: void ns3::OmnetDataOutput::Output(ns3::DataCollector & dc) [member function]
   17.80 @@ -296,11 +288,10 @@
   17.81                     'void', 
   17.82                     [], 
   17.83                     visibility='protected', is_virtual=True)
   17.84 +    cls.add_copy_constructor()
   17.85      return
   17.86  
   17.87  def register_Ns3PacketSizeMinMaxAvgTotalCalculator_methods(root_module, cls):
   17.88 -    ## packet-data-calculators.h: ns3::PacketSizeMinMaxAvgTotalCalculator::PacketSizeMinMaxAvgTotalCalculator(ns3::PacketSizeMinMaxAvgTotalCalculator const & arg0) [copy constructor]
   17.89 -    cls.add_constructor([param('ns3::PacketSizeMinMaxAvgTotalCalculator const &', 'arg0')])
   17.90      ## packet-data-calculators.h: ns3::PacketSizeMinMaxAvgTotalCalculator::PacketSizeMinMaxAvgTotalCalculator() [constructor]
   17.91      cls.add_constructor([])
   17.92      ## packet-data-calculators.h: void ns3::PacketSizeMinMaxAvgTotalCalculator::PacketUpdate(std::string path, ns3::Ptr<const ns3::Packet> packet) [member function]
   17.93 @@ -316,11 +307,10 @@
   17.94                     'void', 
   17.95                     [], 
   17.96                     visibility='protected', is_virtual=True)
   17.97 +    cls.add_copy_constructor()
   17.98      return
   17.99  
  17.100  def register_Ns3SqliteDataOutput_methods(root_module, cls):
  17.101 -    ## sqlite-data-output.h: ns3::SqliteDataOutput::SqliteDataOutput(ns3::SqliteDataOutput const & arg0) [copy constructor]
  17.102 -    cls.add_constructor([param('ns3::SqliteDataOutput const &', 'arg0')])
  17.103      ## sqlite-data-output.h: ns3::SqliteDataOutput::SqliteDataOutput() [constructor]
  17.104      cls.add_constructor([])
  17.105      ## sqlite-data-output.h: void ns3::SqliteDataOutput::Output(ns3::DataCollector & dc) [member function]
  17.106 @@ -342,11 +332,10 @@
  17.107                     'void', 
  17.108                     [], 
  17.109                     visibility='protected', is_virtual=True)
  17.110 +    cls.add_copy_constructor()
  17.111      return
  17.112  
  17.113  def register_Ns3TimeMinMaxAvgTotalCalculator_methods(root_module, cls):
  17.114 -    ## time-data-calculators.h: ns3::TimeMinMaxAvgTotalCalculator::TimeMinMaxAvgTotalCalculator(ns3::TimeMinMaxAvgTotalCalculator const & arg0) [copy constructor]
  17.115 -    cls.add_constructor([param('ns3::TimeMinMaxAvgTotalCalculator const &', 'arg0')])
  17.116      ## time-data-calculators.h: ns3::TimeMinMaxAvgTotalCalculator::TimeMinMaxAvgTotalCalculator() [constructor]
  17.117      cls.add_constructor([])
  17.118      ## time-data-calculators.h: void ns3::TimeMinMaxAvgTotalCalculator::Update(ns3::Time const i) [member function]
  17.119 @@ -363,11 +352,10 @@
  17.120                     'void', 
  17.121                     [], 
  17.122                     visibility='protected', is_virtual=True)
  17.123 +    cls.add_copy_constructor()
  17.124      return
  17.125  
  17.126  def register_Ns3CounterCalculator__Unsigned_int_methods(root_module, cls):
  17.127 -    ## basic-data-calculators.h: ns3::CounterCalculator<unsigned int>::CounterCalculator(ns3::CounterCalculator<unsigned int> const & arg0) [copy constructor]
  17.128 -    cls.add_constructor([param('ns3::CounterCalculator< unsigned int > const &', 'arg0')])
  17.129      ## basic-data-calculators.h: ns3::CounterCalculator<unsigned int>::CounterCalculator() [constructor]
  17.130      cls.add_constructor([])
  17.131      ## basic-data-calculators.h: void ns3::CounterCalculator<unsigned int>::Update() [member function]
  17.132 @@ -393,11 +381,10 @@
  17.133                     'void', 
  17.134                     [], 
  17.135                     visibility='protected', is_virtual=True)
  17.136 +    cls.add_copy_constructor()
  17.137      return
  17.138  
  17.139  def register_Ns3PacketCounterCalculator_methods(root_module, cls):
  17.140 -    ## packet-data-calculators.h: ns3::PacketCounterCalculator::PacketCounterCalculator(ns3::PacketCounterCalculator const & arg0) [copy constructor]
  17.141 -    cls.add_constructor([param('ns3::PacketCounterCalculator const &', 'arg0')])
  17.142      ## packet-data-calculators.h: ns3::PacketCounterCalculator::PacketCounterCalculator() [constructor]
  17.143      cls.add_constructor([])
  17.144      ## packet-data-calculators.h: void ns3::PacketCounterCalculator::PacketUpdate(std::string path, ns3::Ptr<const ns3::Packet> packet) [member function]
  17.145 @@ -413,6 +400,7 @@
  17.146                     'void', 
  17.147                     [], 
  17.148                     visibility='protected', is_virtual=True)
  17.149 +    cls.add_copy_constructor()
  17.150      return
  17.151  
  17.152  def register_functions(root_module):
    18.1 --- a/bindings/python/ns3_module_udp_echo.py	Tue Dec 30 11:35:31 2008 -0800
    18.2 +++ b/bindings/python/ns3_module_udp_echo.py	Tue Jan 13 17:15:44 2009 -0500
    18.3 @@ -54,8 +54,6 @@
    18.4      return
    18.5  
    18.6  def register_Ns3UdpEchoClient_methods(root_module, cls):
    18.7 -    ## udp-echo-client.h: ns3::UdpEchoClient::UdpEchoClient(ns3::UdpEchoClient const & arg0) [copy constructor]
    18.8 -    cls.add_constructor([param('ns3::UdpEchoClient const &', 'arg0')])
    18.9      ## udp-echo-client.h: static ns3::TypeId ns3::UdpEchoClient::GetTypeId() [member function]
   18.10      cls.add_method('GetTypeId', 
   18.11                     'ns3::TypeId', 
   18.12 @@ -82,11 +80,10 @@
   18.13                     'void', 
   18.14                     [], 
   18.15                     visibility='private', is_virtual=True)
   18.16 +    cls.add_copy_constructor()
   18.17      return
   18.18  
   18.19  def register_Ns3UdpEchoServer_methods(root_module, cls):
   18.20 -    ## udp-echo-server.h: ns3::UdpEchoServer::UdpEchoServer(ns3::UdpEchoServer const & arg0) [copy constructor]
   18.21 -    cls.add_constructor([param('ns3::UdpEchoServer const &', 'arg0')])
   18.22      ## udp-echo-server.h: static ns3::TypeId ns3::UdpEchoServer::GetTypeId() [member function]
   18.23      cls.add_method('GetTypeId', 
   18.24                     'ns3::TypeId', 
   18.25 @@ -109,6 +106,7 @@
   18.26                     'void', 
   18.27                     [], 
   18.28                     visibility='private', is_virtual=True)
   18.29 +    cls.add_copy_constructor()
   18.30      return
   18.31  
   18.32  def register_functions(root_module):
    19.1 --- a/bindings/python/ns3_module_v4ping.py	Tue Dec 30 11:35:31 2008 -0800
    19.2 +++ b/bindings/python/ns3_module_v4ping.py	Tue Jan 13 17:15:44 2009 -0500
    19.3 @@ -51,8 +51,6 @@
    19.4      return
    19.5  
    19.6  def register_Ns3V4Ping_methods(root_module, cls):
    19.7 -    ## v4ping.h: ns3::V4Ping::V4Ping(ns3::V4Ping const & arg0) [copy constructor]
    19.8 -    cls.add_constructor([param('ns3::V4Ping const &', 'arg0')])
    19.9      ## v4ping.h: static ns3::TypeId ns3::V4Ping::GetTypeId() [member function]
   19.10      cls.add_method('GetTypeId', 
   19.11                     'ns3::TypeId', 
   19.12 @@ -75,6 +73,7 @@
   19.13                     'void', 
   19.14                     [], 
   19.15                     visibility='private', is_virtual=True)
   19.16 +    cls.add_copy_constructor()
   19.17      return
   19.18  
   19.19  def register_functions(root_module):
    20.1 --- a/bindings/python/ns3_module_wifi.py	Tue Dec 30 11:35:31 2008 -0800
    20.2 +++ b/bindings/python/ns3_module_wifi.py	Tue Jan 13 17:15:44 2009 -0500
    20.3 @@ -244,14 +244,12 @@
    20.4      return
    20.5  
    20.6  def register_Ns3InterferenceHelperSnrPer_methods(root_module, cls):
    20.7 -    ## interference-helper.h: ns3::InterferenceHelper::SnrPer::SnrPer() [constructor]
    20.8 -    cls.add_constructor([])
    20.9 -    ## interference-helper.h: ns3::InterferenceHelper::SnrPer::SnrPer(ns3::InterferenceHelper::SnrPer const & arg0) [copy constructor]
   20.10 -    cls.add_constructor([param('ns3::InterferenceHelper::SnrPer const &', 'arg0')])
   20.11      ## interference-helper.h: ns3::InterferenceHelper::SnrPer::per [variable]
   20.12      cls.add_instance_attribute('per', 'double', is_const=False)
   20.13      ## interference-helper.h: ns3::InterferenceHelper::SnrPer::snr [variable]
   20.14      cls.add_instance_attribute('snr', 'double', is_const=False)
   20.15 +    cls.add_constructor([])
   20.16 +    cls.add_copy_constructor()
   20.17      return
   20.18  
   20.19  def register_Ns3Ssid_methods(root_module, cls):
   20.20 @@ -359,10 +357,8 @@
   20.21      cls.add_instance_attribute('pmtl', 'double', is_const=False)
   20.22      ## rraa-wifi-manager.h: ns3::ThresholdsItem::ewnd [variable]
   20.23      cls.add_instance_attribute('ewnd', 'uint32_t', is_const=False)
   20.24 -    ## rraa-wifi-manager.h: ns3::ThresholdsItem::ThresholdsItem(ns3::ThresholdsItem const & arg0) [copy constructor]
   20.25 -    cls.add_constructor([param('ns3::ThresholdsItem const &', 'arg0')])
   20.26 -    ## rraa-wifi-manager.h: ns3::ThresholdsItem::ThresholdsItem() [constructor]
   20.27      cls.add_constructor([])
   20.28 +    cls.add_copy_constructor()
   20.29      return
   20.30  
   20.31  def register_Ns3WifiMode_methods(root_module, cls):
   20.32 @@ -427,8 +423,6 @@
   20.33      return
   20.34  
   20.35  def register_Ns3WifiModeFactory_methods(root_module, cls):
   20.36 -    ## wifi-mode.h: ns3::WifiModeFactory::WifiModeFactory(ns3::WifiModeFactory const & arg0) [copy constructor]
   20.37 -    cls.add_constructor([param('ns3::WifiModeFactory const &', 'arg0')])
   20.38      ## 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]
   20.39      cls.add_method('CreateBpsk', 
   20.40                     'ns3::WifiMode', 
   20.41 @@ -439,13 +433,10 @@
   20.42                     'ns3::WifiMode', 
   20.43                     [param('std::string', 'uniqueName'), param('bool', 'isMandatory'), param('uint32_t', 'bandwidth'), param('uint32_t', 'dataRate'), param('uint32_t', 'phyRate'), param('uint8_t', 'constellationSize')], 
   20.44                     is_static=True)
   20.45 +    cls.add_copy_constructor()
   20.46      return
   20.47  
   20.48  def register_Ns3WifiPhyListener_methods(root_module, cls):
   20.49 -    ## wifi-phy.h: ns3::WifiPhyListener::WifiPhyListener(ns3::WifiPhyListener const & arg0) [copy constructor]
   20.50 -    cls.add_constructor([param('ns3::WifiPhyListener const &', 'arg0')])
   20.51 -    ## wifi-phy.h: ns3::WifiPhyListener::WifiPhyListener() [constructor]
   20.52 -    cls.add_constructor([])
   20.53      ## wifi-phy.h: void ns3::WifiPhyListener::NotifyRxStart(ns3::Time duration) [member function]
   20.54      cls.add_method('NotifyRxStart', 
   20.55                     'void', 
   20.56 @@ -471,11 +462,11 @@
   20.57                     'void', 
   20.58                     [param('ns3::Time', 'duration')], 
   20.59                     is_pure_virtual=True, is_virtual=True)
   20.60 +    cls.add_constructor([])
   20.61 +    cls.add_copy_constructor()
   20.62      return
   20.63  
   20.64  def register_Ns3WifiRemoteStation_methods(root_module, cls):
   20.65 -    ## wifi-remote-station-manager.h: ns3::WifiRemoteStation::WifiRemoteStation(ns3::WifiRemoteStation const & arg0) [copy constructor]
   20.66 -    cls.add_constructor([param('ns3::WifiRemoteStation const &', 'arg0')])
   20.67      ## wifi-remote-station-manager.h: static ns3::TypeId ns3::WifiRemoteStation::GetTypeId() [member function]
   20.68      cls.add_method('GetTypeId', 
   20.69                     'ns3::TypeId', 
   20.70 @@ -665,11 +656,10 @@
   20.71                     'ns3::WifiMode', 
   20.72                     [], 
   20.73                     is_pure_virtual=True, visibility='private', is_virtual=True)
   20.74 +    cls.add_copy_constructor()
   20.75      return
   20.76  
   20.77  def register_Ns3AmrrWifiRemoteStation_methods(root_module, cls):
   20.78 -    ## amrr-wifi-manager.h: ns3::AmrrWifiRemoteStation::AmrrWifiRemoteStation(ns3::AmrrWifiRemoteStation const & arg0) [copy constructor]
   20.79 -    cls.add_constructor([param('ns3::AmrrWifiRemoteStation const &', 'arg0')])
   20.80      ## amrr-wifi-manager.h: ns3::AmrrWifiRemoteStation::AmrrWifiRemoteStation(ns3::Ptr<ns3::AmrrWifiManager> stations) [constructor]
   20.81      cls.add_constructor([param('ns3::Ptr< ns3::AmrrWifiManager >', 'stations')])
   20.82      ## amrr-wifi-manager.h: void ns3::AmrrWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
   20.83 @@ -722,11 +712,10 @@
   20.84                     'ns3::WifiMode', 
   20.85                     [], 
   20.86                     visibility='private', is_virtual=True)
   20.87 +    cls.add_copy_constructor()
   20.88      return
   20.89  
   20.90  def register_Ns3ArfWifiRemoteStation_methods(root_module, cls):
   20.91 -    ## arf-wifi-manager.h: ns3::ArfWifiRemoteStation::ArfWifiRemoteStation(ns3::ArfWifiRemoteStation const & arg0) [copy constructor]
   20.92 -    cls.add_constructor([param('ns3::ArfWifiRemoteStation const &', 'arg0')])
   20.93      ## arf-wifi-manager.h: ns3::ArfWifiRemoteStation::ArfWifiRemoteStation(ns3::Ptr<ns3::ArfWifiManager> stations, int minTimerTimeout, int minSuccessThreshold) [constructor]
   20.94      cls.add_constructor([param('ns3::Ptr< ns3::ArfWifiManager >', 'stations'), param('int', 'minTimerTimeout'), param('int', 'minSuccessThreshold')])
   20.95      ## arf-wifi-manager.h: void ns3::ArfWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
   20.96 @@ -819,11 +808,10 @@
   20.97                     'void', 
   20.98                     [], 
   20.99                     visibility='private', is_virtual=True)
  20.100 +    cls.add_copy_constructor()
  20.101      return
  20.102  
  20.103  def register_Ns3ConstantRateWifiRemoteStation_methods(root_module, cls):
  20.104 -    ## constant-rate-wifi-manager.h: ns3::ConstantRateWifiRemoteStation::ConstantRateWifiRemoteStation(ns3::ConstantRateWifiRemoteStation const & arg0) [copy constructor]
  20.105 -    cls.add_constructor([param('ns3::ConstantRateWifiRemoteStation const &', 'arg0')])
  20.106      ## constant-rate-wifi-manager.h: ns3::ConstantRateWifiRemoteStation::ConstantRateWifiRemoteStation(ns3::Ptr<ns3::ConstantRateWifiManager> stations) [constructor]
  20.107      cls.add_constructor([param('ns3::Ptr< ns3::ConstantRateWifiManager >', 'stations')])
  20.108      ## constant-rate-wifi-manager.h: void ns3::ConstantRateWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
  20.109 @@ -876,11 +864,10 @@
  20.110                     'ns3::WifiMode', 
  20.111                     [], 
  20.112                     visibility='private', is_virtual=True)
  20.113 +    cls.add_copy_constructor()
  20.114      return
  20.115  
  20.116  def register_Ns3IdealWifiRemoteStation_methods(root_module, cls):
  20.117 -    ## ideal-wifi-manager.h: ns3::IdealWifiRemoteStation::IdealWifiRemoteStation(ns3::IdealWifiRemoteStation const & arg0) [copy constructor]
  20.118 -    cls.add_constructor([param('ns3::IdealWifiRemoteStation const &', 'arg0')])
  20.119      ## ideal-wifi-manager.h: ns3::IdealWifiRemoteStation::IdealWifiRemoteStation(ns3::Ptr<ns3::IdealWifiManager> stations) [constructor]
  20.120      cls.add_constructor([param('ns3::Ptr< ns3::IdealWifiManager >', 'stations')])
  20.121      ## ideal-wifi-manager.h: void ns3::IdealWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
  20.122 @@ -933,11 +920,10 @@
  20.123                     'ns3::WifiMode', 
  20.124                     [], 
  20.125                     visibility='private', is_virtual=True)
  20.126 +    cls.add_copy_constructor()
  20.127      return
  20.128  
  20.129  def register_Ns3OnoeWifiRemoteStation_methods(root_module, cls):
  20.130 -    ## onoe-wifi-manager.h: ns3::OnoeWifiRemoteStation::OnoeWifiRemoteStation(ns3::OnoeWifiRemoteStation const & arg0) [copy constructor]
  20.131 -    cls.add_constructor([param('ns3::OnoeWifiRemoteStation const &', 'arg0')])
  20.132      ## onoe-wifi-manager.h: ns3::OnoeWifiRemoteStation::OnoeWifiRemoteStation(ns3::Ptr<ns3::OnoeWifiManager> stations) [constructor]
  20.133      cls.add_constructor([param('ns3::Ptr< ns3::OnoeWifiManager >', 'stations')])
  20.134      ## onoe-wifi-manager.h: void ns3::OnoeWifiRemoteStation::DoReportRxOk(double rxSnr, ns3::WifiMode txMode) [member function]
  20.135 @@ -990,13 +976,10 @@
  20.136                     'ns3::WifiMode', 
  20.137                     [], 
  20.138                     visibility='private', is_virtual=True)
  20.139 +    cls.add_copy_constructor()
  20.140      return
  20.141  
  20.142  def register_Ns3PropagationDelayModel_methods(root_module, cls):
  20.143 -    ## propagation-delay-model.h: ns3::PropagationDelayModel::PropagationDelayModel(ns3::PropagationDelayModel const & arg0) [copy constructor]
  20.144 -    cls.add_constructor([param('ns3::PropagationDelayModel const &', 'arg0')])
  20.145 -    ## propagation-delay-model.h: ns3::PropagationDelayModel::PropagationDelayModel() [constructor]
  20.146 -    cls.add_constructor([])
  20.147      ## propagation-delay-model.h: static ns3::TypeId ns3::PropagationDelayModel::GetTypeId() [member function]
  20.148      cls.add_method('GetTypeId', 
  20.149                     'ns3::TypeId', 
  20.150 @@ -1007,6 +990,8 @@
  20.151                     'ns3::Time', 
  20.152                     [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
  20.153                     is_pure_virtual=True, is_const=True, is_virtual=True)
  20.154 +    cls.add_constructor([])
  20.155 +    cls.add_copy_constructor()
  20.156      return
  20.157  
  20.158  def register_Ns3PropagationLossModel_methods(root_module, cls):
  20.159 @@ -1034,8 +1019,6 @@
  20.160      return
  20.161  
  20.162  def register_Ns3RandomPropagationDelayModel_methods(root_module, cls):
  20.163 -    ## propagation-delay-model.h: ns3::RandomPropagationDelayModel::RandomPropagationDelayModel(ns3::RandomPropagationDelayModel const & arg0) [copy constructor]
  20.164 -    cls.add_constructor([param('ns3::RandomPropagationDelayModel const &', 'arg0')])
  20.165      ## propagation-delay-model.h: static ns3::TypeId ns3::RandomPropagationDelayModel::GetTypeId() [member function]
  20.166      cls.add_method('GetTypeId', 
  20.167                     'ns3::TypeId', 
  20.168 @@ -1048,6 +1031,7 @@
  20.169                     'ns3::Time', 
  20.170                     [param('ns3::Ptr< ns3::MobilityModel >', 'a'), param('ns3::Ptr< ns3::MobilityModel >', 'b')], 
  20.171                     is_const=True, is_virtual=True)
  20.172 +    cls.add_copy_constructor()
  20.173      return
  20.174  
  20.175  def register_Ns3RandomPropagationLossModel_methods(root_module, cls):
  20.176 @@ -1066,8 +1050,6 @@
  20.177      return
  20.178  
  20.179  def register_Ns3RraaWifiRemoteStation_methods(root_module, cls):
  20.180 -    ## rraa-wifi-manager.h: ns3::RraaWifiRemoteStation::RraaWifiRemoteStation(ns3::RraaWifiRemoteStation const & arg0) [copy constructor]
  20.181 -    cls.add_constructor([param('ns3::RraaWifiRemoteStation const &', 'arg0')])
  20.182      ## rraa-wifi-manager.h: ns3::RraaWifiRemoteStation::RraaWifiRemoteStation(ns3::Ptr<ns3::RraaWifiManager> stations) [constructor]
  20.183      cls.add_constructor([param('ns3::Ptr< ns3::RraaWifiManager >', 'stations')])
  20.184      ## rraa-wifi-manager.h: bool ns3::RraaWifiRemoteStation::NeedRts(ns3::Ptr<const ns3::Packet> packet) [member function]
  20.185 @@ -1125,18 +1107,15 @@
  20.186                     'ns3::WifiMode', 
  20.187                     [], 
  20.188                     visibility='private', is_virtual=True)
  20.189 +    cls.add_copy_constructor()
  20.190      return
  20.191  
  20.192  def register_Ns3SsidChecker_methods(root_module, cls):
  20.193 -    ## ssid.h: ns3::SsidChecker::SsidChecker(ns3::SsidChecker const & arg0) [copy constructor]
  20.194 -    cls.add_constructor([param('ns3::SsidChecker const &', 'arg0')])
  20.195 -    ## ssid.h: ns3::SsidChecker::SsidChecker() [constructor]
  20.196      cls.add_constructor([])
  20.197 +    cls.add_copy_constructor()
  20.198      return
  20.199  
  20.200  def register_Ns3SsidValue_methods(root_module, cls):
  20.201 -    ## ssid.h: ns3::SsidValue::SsidValue(ns3::SsidValue const & arg0) [copy constructor]
  20.202 -    cls.add_constructor([param('ns3::SsidValue const &', 'arg0')])
  20.203      ## ssid.h: ns3::SsidValue::SsidValue() [constructor]
  20.204      cls.add_constructor([])
  20.205      ## ssid.h: ns3::SsidValue::SsidValue(ns3::Ssid const & value) [constructor]
  20.206 @@ -1165,6 +1144,7 @@
  20.207                     'bool', 
  20.208                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  20.209                     is_virtual=True)
  20.210 +    cls.add_copy_constructor()
  20.211      return
  20.212  
  20.213  def register_Ns3ThreeLogDistancePropagationLossModel_methods(root_module, cls):
  20.214 @@ -1183,10 +1163,6 @@
  20.215      return
  20.216  
  20.217  def register_Ns3WifiMac_methods(root_module, cls):
  20.218 -    ## wifi-mac.h: ns3::WifiMac::WifiMac(ns3::WifiMac const & arg0) [copy constructor]
  20.219 -    cls.add_constructor([param('ns3::WifiMac const &', 'arg0')])
  20.220 -    ## wifi-mac.h: ns3::WifiMac::WifiMac() [constructor]
  20.221 -    cls.add_constructor([])
  20.222      ## wifi-mac.h: static ns3::TypeId ns3::WifiMac::GetTypeId() [member function]
  20.223      cls.add_method('GetTypeId', 
  20.224                     'ns3::TypeId', 
  20.225 @@ -1336,18 +1312,16 @@
  20.226                     'void', 
  20.227                     [param('ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'linkDown')], 
  20.228                     is_pure_virtual=True, is_virtual=True)
  20.229 +    cls.add_constructor([])
  20.230 +    cls.add_copy_constructor()
  20.231      return
  20.232  
  20.233  def register_Ns3WifiModeChecker_methods(root_module, cls):
  20.234 -    ## wifi-mode.h: ns3::WifiModeChecker::WifiModeChecker(ns3::WifiModeChecker const & arg0) [copy constructor]
  20.235 -    cls.add_constructor([param('ns3::WifiModeChecker const &', 'arg0')])
  20.236 -    ## wifi-mode.h: ns3::WifiModeChecker::WifiModeChecker() [constructor]
  20.237      cls.add_constructor([])
  20.238 +    cls.add_copy_constructor()
  20.239      return
  20.240  
  20.241  def register_Ns3WifiModeValue_methods(root_module, cls):
  20.242 -    ## wifi-mode.h: ns3::WifiModeValue::WifiModeValue(ns3::WifiModeValue const & arg0) [copy constructor]
  20.243 -    cls.add_constructor([param('ns3::WifiModeValue const &', 'arg0')])
  20.244      ## wifi-mode.h: ns3::WifiModeValue::WifiModeValue() [constructor]
  20.245      cls.add_constructor([])
  20.246      ## wifi-mode.h: ns3::WifiModeValue::WifiModeValue(ns3::WifiMode const & value) [constructor]
  20.247 @@ -1376,11 +1350,10 @@
  20.248                     'bool', 
  20.249                     [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
  20.250                     is_virtual=True)
  20.251 +    cls.add_copy_constructor()
  20.252      return
  20.253  
  20.254  def register_Ns3WifiPhy_methods(root_module, cls):
  20.255 -    ## wifi-phy.h: ns3::WifiPhy::WifiPhy(ns3::WifiPhy const & arg0) [copy constructor]
  20.256 -    cls.add_constructor([param('ns3::WifiPhy const &', 'arg0')])
  20.257      ## wifi-phy.h: static ns3::TypeId ns3::WifiPhy::GetTypeId() [member function]
  20.258      cls.add_method('GetTypeId', 
  20.259                     'ns3::TypeId', 
  20.260 @@ -1528,11 +1501,10 @@
  20.261                     'ns3::WifiMode', 
  20.262                     [], 
  20.263                     is_static=True)
  20.264 +    cls.add_copy_constructor()
  20.265      return
  20.266  
  20.267  def register_Ns3WifiRemoteStationManager_methods(root_module, cls):
  20.268 -    ## wifi-remote-station-manager.h: ns3::WifiRemoteStationManager::WifiRemoteStationManager(ns3::WifiRemoteStationManager const & arg0) [copy constructor]
  20.269 -    cls.add_constructor([param('ns3::WifiRemoteStationManager const &', 'arg0')])
  20.270      ## wifi-remote-station-manager.h: static ns3::TypeId ns3::WifiRemoteStationManager::GetTypeId() [member function]
  20.271      cls.add_method('GetTypeId', 
  20.272                     'ns3::TypeId', 
  20.273 @@ -1637,6 +1609,7 @@
  20.274                     'ns3::WifiRemoteStation *', 
  20.275                     [], 
  20.276                     is_pure_virtual=True, visibility='private', is_virtual=True)
  20.277 +    cls.add_copy_constructor()
  20.278      return
  20.279  
  20.280  def register_Ns3YansWifiPhy_methods(root_module, cls):
  20.281 @@ -1850,8 +1823,6 @@
  20.282      return
  20.283  
  20.284  def register_Ns3AarfWifiRemoteStation_methods(root_module, cls):
  20.285 -    ## aarf-wifi-manager.h: ns3::AarfWifiRemoteStation::AarfWifiRemoteStation(ns3::AarfWifiRemoteStation const & arg0) [copy constructor]
  20.286 -    cls.add_constructor([param('ns3::AarfWifiRemoteStation const &', 'arg0')])
  20.287      ## 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]
  20.288      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')])
  20.289      ## aarf-wifi-manager.h: void ns3::AarfWifiRemoteStation::ReportRecoveryFailure() [member function]
  20.290 @@ -1864,6 +1835,7 @@
  20.291                     'void', 
  20.292                     [], 
  20.293                     visibility='private', is_virtual=True)
  20.294 +    cls.add_copy_constructor()
  20.295      return
  20.296  
  20.297  def register_Ns3AdhocWifiMac_methods(root_module, cls):
  20.298 @@ -2007,8 +1979,6 @@
  20.299      return
  20.300  
  20.301  def register_Ns3AmrrWifiManager_methods(root_module, cls):
  20.302 -    ## amrr-wifi-manager.h: ns3::AmrrWifiManager::AmrrWifiManager(ns3::AmrrWifiManager const & arg0) [copy constructor]
  20.303 -    cls.add_constructor([param('ns3::AmrrWifiManager const &', 'arg0')])
  20.304      ## amrr-wifi-manager.h: static ns3::TypeId ns3::AmrrWifiManager::GetTypeId() [member function]
  20.305      cls.add_method('GetTypeId', 
  20.306                     'ns3::TypeId', 
  20.307 @@ -2021,11 +1991,10 @@
  20.308                     'ns3::WifiRemoteStation *', 
  20.309                     [], 
  20.310                     visibility='private', is_virtual=True)
  20.311 +    cls.add_copy_constructor()
  20.312      return
  20.313  
  20.314  def register_Ns3ArfWifiManager_methods(root_module, cls):
  20.315 -    ## arf-wifi-manager.h: ns3::ArfWifiManager::ArfWifiManager(ns3::ArfWifiManager const & arg0) [copy constructor]
  20.316 -    cls.add_constructor([param('ns3::ArfWifiManager const &', 'arg0')])
  20.317      ## arf-wifi-manager.h: static ns3::TypeId ns3::ArfWifiManager::GetTypeId() [member function]
  20.318      cls.add_method('GetTypeId', 
  20.319                     'ns3::TypeId', 
  20.320 @@ -2038,11 +2007,10 @@
  20.321                     'ns3::WifiRemoteStation *', 
  20.322                     [], 
  20.323                     visibility='private', is_virtual=True)
  20.324 +    cls.add_copy_constructor()
  20.325      return
  20.326  
  20.327  def register_Ns3ConstantRateWifiManager_methods(root_module, cls):
  20.328 -    ## constant-rate-wifi-manager.h: ns3::ConstantRateWifiManager::ConstantRateWifiManager(ns3::ConstantRateWifiManager const & arg0) [copy constructor]
  20.329 -    cls.add_constructor([param('ns3::ConstantRateWifiManager const &', 'arg0')])
  20.330      ## constant-rate-wifi-manager.h: static ns3::TypeId ns3::ConstantRateWifiManager::GetTypeId() [member function]
  20.331      cls.add_method('GetTypeId', 
  20.332                     'ns3::TypeId', 
  20.333 @@ -2065,11 +2033,10 @@
  20.334                     'ns3::WifiRemoteStation *', 
  20.335                     [], 
  20.336                     visibility='private', is_virtual=True)
  20.337 +    cls.add_copy_constructor()
  20.338      return
  20.339  
  20.340  def register_Ns3ConstantSpeedPropagationDelayModel_methods(root_module, cls):
  20.341 -    ## propagation-delay-model.h: ns3::ConstantSpeedPropagationDelayModel::ConstantSpeedPropagationDelayModel(ns3::ConstantSpeedPropagationDelayModel const & arg0) [copy constructor]
  20.342 -    cls.add_constructor([param('ns3::ConstantSpeedPropagationDelayModel const &', 'arg0')])
  20.343      ## propagation-delay-model.h: static ns3::TypeId ns3::ConstantSpeedPropagationDelayModel::GetTypeId() [member function]
  20.344      cls.add_method('GetTypeId', 
  20.345                     'ns3::TypeId', 
  20.346 @@ -2091,13 +2058,10 @@
  20.347                     'double', 
  20.348                     [], 
  20.349                     is_const=True)
  20.350 +    cls.add_copy_constructor()
  20.351      return
  20.352  
  20.353  def register_Ns3ErrorRateModel_methods(root_module, cls):
  20.354 -    ## error-rate-model.h: ns3::ErrorRateModel::ErrorRateModel(ns3::ErrorRateModel const & arg0) [copy constructor]
  20.355 -    cls.add_constructor([param('ns3::ErrorRateModel const &', 'arg0')])
  20.356 -    ## error-rate-model.h: ns3::ErrorRateModel::ErrorRateModel() [constructor]
  20.357 -    cls.add_constructor([])
  20.358      ## error-rate-model.h: static ns3::TypeId ns3::ErrorRateModel::GetTypeId() [member function]
  20.359      cls.add_method('GetTypeId', 
  20.360                     'ns3::TypeId', 
  20.361 @@ -2113,6 +2077,8 @@
  20.362                     'double', 
  20.363                     [param('ns3::WifiMode', 'mode'), param('double', 'snr'), param('uint32_t', 'nbits')], 
  20.364                     is_pure_virtual=True, is_const=True, is_virtual=True)
  20.365 +    cls.add_constructor([])
  20.366 +    cls.add_copy_constructor()
  20.367      return
  20.368  
  20.369  def register_Ns3FriisPropagationLossModel_methods(root_module, cls):
  20.370 @@ -2162,8 +2128,6 @@
  20.371      return
  20.372  
  20.373  def register_Ns3IdealWifiManager_methods(root_module, cls):
  20.374 -    ## ideal-wifi-manager.h: ns3::IdealWifiManager::IdealWifiManager(ns3::IdealWifiManager const & arg0) [copy constructor]
  20.375 -    cls.add_constructor([param('ns3::IdealWifiManager const &', 'arg0')])
  20.376      ## ideal-wifi-manager.h: static ns3::TypeId ns3::IdealWifiManager::GetTypeId() [member function]
  20.377      cls.add_method('GetTypeId', 
  20.378                     'ns3::TypeId', 
  20.379 @@ -2190,6 +2154,7 @@
  20.380                     'ns3::WifiRemoteStation *', 
  20.381                     [], 
  20.382                     visibility='private', is_virtual=True)
  20.383 +    cls.add_copy_constructor()
  20.384      return
  20.385  
  20.386  def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
  20.387 @@ -2553,8 +2518,6 @@
  20.388      return
  20.389  
  20.390  def register_Ns3OnoeWifiManager_methods(root_module, cls):
  20.391 -    ## onoe-wifi-manager.h: ns3::OnoeWifiManager::OnoeWifiManager(ns3::OnoeWifiManager const & arg0) [copy constructor]
  20.392 -    cls.add_constructor([param('ns3::OnoeWifiManager const &', 'arg0')])
  20.393      ## onoe-wifi-manager.h: static ns3::TypeId ns3::OnoeWifiManager::GetTypeId() [member function]
  20.394      cls.add_method('GetTypeId', 
  20.395                     'ns3::TypeId', 
  20.396 @@ -2567,11 +2530,10 @@
  20.397                     'ns3::WifiRemoteStation *', 
  20.398                     [], 
  20.399                     visibility='private', is_virtual=True)
  20.400 +    cls.add_copy_constructor()
  20.401      return
  20.402  
  20.403  def register_Ns3RraaWifiManager_methods(root_module, cls):
  20.404 -    ## rraa-wifi-manager.h: ns3::RraaWifiManager::RraaWifiManager(ns3::RraaWifiManager const & arg0) [copy constructor]
  20.405 -    cls.add_constructor([param('ns3::RraaWifiManager const &', 'arg0')])
  20.406      ## rraa-wifi-manager.h: static ns3::TypeId ns3::RraaWifiManager::GetTypeId() [member function]
  20.407      cls.add_method('GetTypeId', 
  20.408                     'ns3::TypeId', 
  20.409 @@ -2598,23 +2560,20 @@
  20.410                     'ns3::WifiRemoteStation *', 
  20.411                     [], 
  20.412                     visibility='private', is_virtual=True)
  20.413 +    cls.add_copy_constructor()
  20.414      return
  20.415  
  20.416  def register_Ns3WifiChannel_methods(root_module, cls):
  20.417 -    ## wifi-channel.h: ns3::WifiChannel::WifiChannel(ns3::WifiChannel const & arg0) [copy constructor]
  20.418 -    cls.add_constructor([param('ns3::WifiChannel const &', 'arg0')])
  20.419 -    ## wifi-channel.h: ns3::WifiChannel::WifiChannel() [constructor]
  20.420 -    cls.add_constructor([])
  20.421      ## wifi-channel.h: static ns3::TypeId ns3::WifiChannel::GetTypeId() [member function]
  20.422      cls.add_method('GetTypeId', 
  20.423                     'ns3::TypeId', 
  20.424                     [], 
  20.425                     is_static=True)
  20.426 +    cls.add_constructor([])
  20.427 +    cls.add_copy_constructor()
  20.428      return
  20.429  
  20.430  def register_Ns3WifiNetDevice_methods(root_module, cls):
  20.431 -    ## wifi-net-device.h: ns3::WifiNetDevice::WifiNetDevice(ns3::WifiNetDevice const & arg0) [copy constructor]
  20.432 -    cls.add_constructor([param('ns3::WifiNetDevice const &', 'arg0')])
  20.433      ## wifi-net-device.h: static ns3::TypeId ns3::WifiNetDevice::GetTypeId() [member function]
  20.434      cls.add_method('GetTypeId', 
  20.435                     'ns3::TypeId', 
  20.436 @@ -2779,11 +2738,10 @@
  20.437                     'void', 
  20.438                     [], 
  20.439                     visibility='private', is_virtual=True)
  20.440 +    cls.add_copy_constructor()
  20.441      return
  20.442  
  20.443  def register_Ns3YansErrorRateModel_methods(root_module, cls):
  20.444 -    ## yans-error-rate-model.h: ns3::YansErrorRateModel::YansErrorRateModel(ns3::YansErrorRateModel const & arg0) [copy constructor]
  20.445 -    cls.add_constructor([param('ns3::YansErrorRateModel const &', 'arg0')])
  20.446      ## yans-error-rate-model.h: static ns3::TypeId ns3::YansErrorRateModel::GetTypeId() [member function]
  20.447      cls.add_method('GetTypeId', 
  20.448                     'ns3::TypeId', 
  20.449 @@ -2796,11 +2754,10 @@
  20.450                     'double', 
  20.451                     [param('ns3::WifiMode', 'mode'), param('double', 'snr'), param('uint32_t', 'nbits')], 
  20.452                     is_const=True, is_virtual=True)
  20.453 +    cls.add_copy_constructor()
  20.454      return
  20.455  
  20.456  def register_Ns3YansWifiChannel_methods(root_module, cls):
  20.457 -    ## yans-wifi-channel.h: ns3::YansWifiChannel::YansWifiChannel(ns3::YansWifiChannel const & arg0) [copy constructor]
  20.458 -    cls.add_constructor([param('ns3::YansWifiChannel const &', 'arg0')])
  20.459      ## yans-wifi-channel.h: static ns3::TypeId ns3::YansWifiChannel::GetTypeId() [member function]
  20.460      cls.add_method('GetTypeId', 
  20.461                     'ns3::TypeId', 
  20.462 @@ -2835,11 +2792,10 @@
  20.463                     'void', 
  20.464                     [param('ns3::Ptr< ns3::YansWifiPhy >', 'sender'), param('ns3::Ptr< ns3::Packet const >', 'packet'), param('double', 'txPowerDbm'), param('ns3::WifiMode', 'wifiMode'), param('ns3::WifiPreamble', 'preamble')], 
  20.465                     is_const=True)
  20.466 +    cls.add_copy_constructor()
  20.467      return
  20.468  
  20.469  def register_Ns3AarfWifiManager_methods(root_module, cls):
  20.470 -    ## aarf-wifi-manager.h: ns3::AarfWifiManager::AarfWifiManager(ns3::AarfWifiManager const & arg0) [copy constructor]
  20.471 -    cls.add_constructor([param('ns3::AarfWifiManager const &', 'arg0')])
  20.472      ## aarf-wifi-manager.h: static ns3::TypeId ns3::AarfWifiManager::GetTypeId() [member function]
  20.473      cls.add_method('GetTypeId', 
  20.474                     'ns3::TypeId', 
  20.475 @@ -2852,6 +2808,7 @@
  20.476                     'ns3::WifiRemoteStation *', 
  20.477                     [], 
  20.478                     visibility='private', is_virtual=True)
  20.479 +    cls.add_copy_constructor()
  20.480      return
  20.481  
  20.482  def register_functions(root_module):
    21.1 --- a/examples/csma-bridge-one-hop.cc	Tue Dec 30 11:35:31 2008 -0800
    21.2 +++ b/examples/csma-bridge-one-hop.cc	Tue Jan 13 17:15:44 2009 -0500
    21.3 @@ -94,7 +94,8 @@
    21.4    //
    21.5    // Make the random number generators generate reproducible results.
    21.6    //
    21.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    21.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    21.9 +  SeedManager::SetSeed(seed);
   21.10  
   21.11    //
   21.12    // Allow the user to override any of the defaults and the above Bind() at
    22.1 --- a/examples/csma-bridge.cc	Tue Dec 30 11:35:31 2008 -0800
    22.2 +++ b/examples/csma-bridge.cc	Tue Jan 13 17:15:44 2009 -0500
    22.3 @@ -56,7 +56,8 @@
    22.4    //
    22.5    // Make the random number generators generate reproducible results.
    22.6    //
    22.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    22.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    22.9 +  SeedManager::SetSeed(seed);
   22.10  
   22.11    //
   22.12    // Allow the user to override any of the defaults and the above Bind() at
    23.1 --- a/examples/csma-bridge.py	Tue Dec 30 11:35:31 2008 -0800
    23.2 +++ b/examples/csma-bridge.py	Tue Jan 13 17:15:44 2009 -0500
    23.3 @@ -35,7 +35,8 @@
    23.4      #
    23.5      # Make the random number generators generate reproducible results.
    23.6      #
    23.7 -    ns3.RandomVariable.UseGlobalSeed(1, 1, 2, 3, 5, 8)
    23.8 +    seed = array([1, 1, 2, 3, 5, 8]);
    23.9 +    ns3.SeedManager.SetSeed(seed)
   23.10  
   23.11      #
   23.12      # Allow the user to override any of the defaults and the above Bind() at
    24.1 --- a/examples/csma-broadcast.cc	Tue Dec 30 11:35:31 2008 -0800
    24.2 +++ b/examples/csma-broadcast.cc	Tue Jan 13 17:15:44 2009 -0500
    24.3 @@ -54,7 +54,8 @@
    24.4    //
    24.5    // Make the random number generators generate reproducible results.
    24.6    //
    24.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    24.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    24.9 +  SeedManager::SetSeed(seed);
   24.10  
   24.11    // Allow the user to override any of the defaults and the above
   24.12    // Bind()s at run-time, via command-line arguments
    25.1 --- a/examples/csma-multicast.cc	Tue Dec 30 11:35:31 2008 -0800
    25.2 +++ b/examples/csma-multicast.cc	Tue Jan 13 17:15:44 2009 -0500
    25.3 @@ -53,8 +53,8 @@
    25.4    //
    25.5    // Make the random number generators generate reproducible results.
    25.6    //
    25.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    25.8 -
    25.9 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
   25.10 +  SeedManager::SetSeed(seed);
   25.11    //
   25.12    // Set up default values for the simulation.  
   25.13    //
    26.1 --- a/examples/csma-one-subnet.cc	Tue Dec 30 11:35:31 2008 -0800
    26.2 +++ b/examples/csma-one-subnet.cc	Tue Jan 13 17:15:44 2009 -0500
    26.3 @@ -50,7 +50,8 @@
    26.4  //
    26.5  // Make the random number generators generate reproducible results.
    26.6  //
    26.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    26.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    26.9 +  SeedManager::SetSeed(seed);
   26.10  //
   26.11  // Allow the user to override any of the defaults and the above Bind() at
   26.12  // run-time, via command-line arguments
    27.1 --- a/examples/csma-packet-socket.cc	Tue Dec 30 11:35:31 2008 -0800
    27.2 +++ b/examples/csma-packet-socket.cc	Tue Jan 13 17:15:44 2009 -0500
    27.3 @@ -60,8 +60,8 @@
    27.4    //
    27.5    // Make the random number generators generate reproducible results.
    27.6    //
    27.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    27.8 -
    27.9 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
   27.10 +  SeedManager::SetSeed(seed);
   27.11    CommandLine cmd;
   27.12    cmd.Parse (argc, argv);
   27.13  
    28.1 --- a/examples/csma-ping.cc	Tue Dec 30 11:35:31 2008 -0800
    28.2 +++ b/examples/csma-ping.cc	Tue Jan 13 17:15:44 2009 -0500
    28.3 @@ -59,7 +59,8 @@
    28.4    //
    28.5    // Make the random number generators generate reproducible results.
    28.6    //
    28.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    28.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    28.9 +  SeedManager::SetSeed(seed);
   28.10  
   28.11    CommandLine cmd;
   28.12    cmd.Parse (argc, argv);
    29.1 --- a/examples/csma-raw-ip-socket.cc	Tue Dec 30 11:35:31 2008 -0800
    29.2 +++ b/examples/csma-raw-ip-socket.cc	Tue Jan 13 17:15:44 2009 -0500
    29.3 @@ -57,7 +57,8 @@
    29.4    //
    29.5    // Make the random number generators generate reproducible results.
    29.6    //
    29.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    29.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    29.9 +  SeedManager::SetSeed(seed);
   29.10  
   29.11    CommandLine cmd;
   29.12    cmd.Parse (argc, argv);
    30.1 --- a/examples/csma-star.cc	Tue Dec 30 11:35:31 2008 -0800
    30.2 +++ b/examples/csma-star.cc	Tue Jan 13 17:15:44 2009 -0500
    30.3 @@ -49,7 +49,8 @@
    30.4    //
    30.5    // Make the random number generators generate reproducible results.
    30.6    //
    30.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    30.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    30.9 +  SeedManager::SetSeed(seed);
   30.10  
   30.11    //
   30.12    // Set up some default values for the simulation.
    31.1 --- a/examples/first.cc	Tue Dec 30 11:35:31 2008 -0800
    31.2 +++ b/examples/first.cc	Tue Jan 13 17:15:44 2009 -0500
    31.3 @@ -29,7 +29,8 @@
    31.4    LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
    31.5    LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
    31.6  
    31.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    31.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    31.9 +  SeedManager::SetSeed(seed);
   31.10  
   31.11    NodeContainer nodes;
   31.12    nodes.Create (2);
    32.1 --- a/examples/global-routing-slash32.cc	Tue Dec 30 11:35:31 2008 -0800
    32.2 +++ b/examples/global-routing-slash32.cc	Tue Jan 13 17:15:44 2009 -0500
    32.3 @@ -40,7 +40,8 @@
    32.4  {
    32.5    // Make the random number generators generate reproducible results.
    32.6    //
    32.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    32.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    32.9 +  SeedManager::SetSeed(seed);
   32.10  
   32.11    // Allow the user to override any of the defaults and the above
   32.12    // DefaultValue::Bind ()s at run-time, via command-line arguments
    33.1 --- a/examples/realtime-udp-echo.cc	Tue Dec 30 11:35:31 2008 -0800
    33.2 +++ b/examples/realtime-udp-echo.cc	Tue Jan 13 17:15:44 2009 -0500
    33.3 @@ -40,8 +40,8 @@
    33.4    //
    33.5    // Make the random number generators generate reproducible results.
    33.6    //
    33.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    33.8 -
    33.9 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
   33.10 +  SeedManager::SetSeed(seed);
   33.11    //
   33.12    // Allow the user to override any of the defaults and the above Bind() at
   33.13    // run-time, via command-line arguments
    34.1 --- a/examples/second.cc	Tue Dec 30 11:35:31 2008 -0800
    34.2 +++ b/examples/second.cc	Tue Jan 13 17:15:44 2009 -0500
    34.3 @@ -39,7 +39,8 @@
    34.4    LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
    34.5    LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
    34.6  
    34.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    34.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    34.9 +  SeedManager::SetSeed(seed);
   34.10  
   34.11    uint32_t nCsma = 3;
   34.12    CommandLine cmd;
    35.1 --- a/examples/simple-alternate-routing.cc	Tue Dec 30 11:35:31 2008 -0800
    35.2 +++ b/examples/simple-alternate-routing.cc	Tue Jan 13 17:15:44 2009 -0500
    35.3 @@ -60,7 +60,8 @@
    35.4    //
    35.5    // Make the random number generators generate reproducible results.
    35.6    //
    35.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    35.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    35.9 +  SeedManager::SetSeed(seed);
   35.10  
   35.11    Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210));
   35.12    Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("300b/s"));
    36.1 --- a/examples/simple-error-model.cc	Tue Dec 30 11:35:31 2008 -0800
    36.2 +++ b/examples/simple-error-model.cc	Tue Jan 13 17:15:44 2009 -0500
    36.3 @@ -62,7 +62,8 @@
    36.4    //
    36.5    // Make the random number generators generate reproducible results.
    36.6    //
    36.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    36.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    36.9 +  SeedManager::SetSeed(seed);
   36.10  
   36.11    // Set a few attributes
   36.12    Config::SetDefault ("ns3::RateErrorModel::ErrorRate", DoubleValue (0.01));
    37.1 --- a/examples/simple-global-routing.cc	Tue Dec 30 11:35:31 2008 -0800
    37.2 +++ b/examples/simple-global-routing.cc	Tue Jan 13 17:15:44 2009 -0500
    37.3 @@ -64,7 +64,8 @@
    37.4    //
    37.5    // Make the random number generators generate reproducible results.
    37.6    //
    37.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    37.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    37.9 +  SeedManager::SetSeed(seed);
   37.10  
   37.11    // Set up some default values for the simulation.  Use the 
   37.12    Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210));
    38.1 --- a/examples/simple-point-to-point-olsr.cc	Tue Dec 30 11:35:31 2008 -0800
    38.2 +++ b/examples/simple-point-to-point-olsr.cc	Tue Jan 13 17:15:44 2009 -0500
    38.3 @@ -63,7 +63,8 @@
    38.4    //
    38.5    // Make the random number generators generate reproducible results.
    38.6    //
    38.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    38.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    38.9 +  SeedManager::SetSeed(seed);
   38.10  
   38.11    // Set up some default values for the simulation.  Use the 
   38.12  
    39.1 --- a/examples/star.cc	Tue Dec 30 11:35:31 2008 -0800
    39.2 +++ b/examples/star.cc	Tue Jan 13 17:15:44 2009 -0500
    39.3 @@ -43,7 +43,8 @@
    39.4    //
    39.5    // Make the random number generators generate reproducible results.
    39.6    //
    39.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    39.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    39.9 +  SeedManager::SetSeed(seed);
   39.10  
   39.11    //
   39.12    // Set up some default values for the simulation.
    40.1 --- a/examples/static-routing-slash32.cc	Tue Dec 30 11:35:31 2008 -0800
    40.2 +++ b/examples/static-routing-slash32.cc	Tue Jan 13 17:15:44 2009 -0500
    40.3 @@ -39,7 +39,8 @@
    40.4  {
    40.5    // Make the random number generators generate reproducible results.
    40.6    //
    40.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    40.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    40.9 +  SeedManager::SetSeed(seed);
   40.10  
   40.11    // Allow the user to override any of the defaults and the above
   40.12    // DefaultValue::Bind ()s at run-time, via command-line arguments
    41.1 --- a/examples/tcp-large-transfer.cc	Tue Dec 30 11:35:31 2008 -0800
    41.2 +++ b/examples/tcp-large-transfer.cc	Tue Jan 13 17:15:44 2009 -0500
    41.3 @@ -70,7 +70,8 @@
    41.4    //
    41.5    // Make the random number generators generate reproducible results.
    41.6    //
    41.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    41.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    41.9 +  SeedManager::SetSeed(seed);
   41.10  
   41.11    // Allow the user to override any of the defaults and the above
   41.12    // Bind()s at run-time, via command-line arguments
    42.1 --- a/examples/tcp-nsc-lfn.cc	Tue Dec 30 11:35:31 2008 -0800
    42.2 +++ b/examples/tcp-nsc-lfn.cc	Tue Jan 13 17:15:44 2009 -0500
    42.3 @@ -46,7 +46,8 @@
    42.4  
    42.5  int main (int argc, char *argv[])
    42.6  {
    42.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    42.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    42.9 +  SeedManager::SetSeed(seed);
   42.10  
   42.11    Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (4096));
   42.12    Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("6Mbps"));
    43.1 --- a/examples/tcp-nsc-zoo.cc	Tue Dec 30 11:35:31 2008 -0800
    43.2 +++ b/examples/tcp-nsc-zoo.cc	Tue Jan 13 17:15:44 2009 -0500
    43.3 @@ -47,7 +47,8 @@
    43.4    unsigned int MaxNodes = 4;
    43.5    unsigned int runtime = 3;
    43.6  
    43.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    43.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    43.9 +  SeedManager::SetSeed(seed);
   43.10  
   43.11    Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (2048));
   43.12    Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("8kbps"));
    44.1 --- a/examples/tcp-star-server.cc	Tue Dec 30 11:35:31 2008 -0800
    44.2 +++ b/examples/tcp-star-server.cc	Tue Jan 13 17:15:44 2009 -0500
    44.3 @@ -71,7 +71,8 @@
    44.4    //
    44.5    // Make the random number generators generate reproducible results.
    44.6    //
    44.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    44.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    44.9 +  SeedManager::SetSeed(seed);
   44.10  
   44.11    // Set up some default values for the simulation.
   44.12    Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (250));
    45.1 --- a/examples/third.cc	Tue Dec 30 11:35:31 2008 -0800
    45.2 +++ b/examples/third.cc	Tue Jan 13 17:15:44 2009 -0500
    45.3 @@ -43,7 +43,8 @@
    45.4    LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
    45.5    LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
    45.6  
    45.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    45.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    45.9 +  SeedManager::SetSeed(seed);
   45.10  
   45.11    uint32_t nCsma = 3;
   45.12    uint32_t nWifi = 3;
    46.1 --- a/examples/wifi-wired-bridging.cc	Tue Dec 30 11:35:31 2008 -0800
    46.2 +++ b/examples/wifi-wired-bridging.cc	Tue Jan 13 17:15:44 2009 -0500
    46.3 @@ -63,7 +63,8 @@
    46.4    uint32_t nStas = 2;
    46.5    bool sendIp = true;
    46.6  
    46.7 -  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    46.8 +  uint32_t seed[6] = {1, 1, 2, 3, 5, 8};
    46.9 +  SeedManager::SetSeed(seed);
   46.10  
   46.11    CommandLine cmd;
   46.12    cmd.AddValue ("nWifis", "Number of wifi networks", nWifis);
    47.1 --- a/src/core/random-variable.cc	Tue Dec 30 11:35:31 2008 -0800
    47.2 +++ b/src/core/random-variable.cc	Tue Jan 13 17:15:44 2009 -0500
    47.3 @@ -16,6 +16,7 @@
    47.4  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    47.5  //
    47.6  // Author: Rajib Bhattacharjea<raj.b@gatech.edu>
    47.7 +// Author: Hadi Arbabi<marbabi@cs.odu.edu>
    47.8  //
    47.9  
   47.10  #include <iostream>
   47.11 @@ -41,6 +42,78 @@
   47.12  namespace ns3{
   47.13  
   47.14  //-----------------------------------------------------------------------------
   47.15 +// Seed Manager
   47.16 +//-----------------------------------------------------------------------------
   47.17 +
   47.18 +uint32_t SeedManager::seed_[6]={1,2,3,4,5,6};
   47.19 +bool     SeedManager::seedSet=false;
   47.20 +uint32_t SeedManager::runNumber=0;
   47.21 +
   47.22 +void SeedManager::SetSeed(uint32_t seed[6])
   47.23 +{
   47.24 +	  if (SeedManager::seedSet)
   47.25 +	  {
   47.26 +	      cerr << "Seed Manager already set!" << endl;
   47.27 +	      cerr << "Call to SeedManager::SetSeed(...) ignored" << endl;
   47.28 +	      return;
   47.29 +	  }
   47.30 +	  SeedManager::seed_[0]=seed[0];
   47.31 +	  SeedManager::seed_[1]=seed[1];
   47.32 +	  SeedManager::seed_[2]=seed[2];
   47.33 +	  SeedManager::seed_[3]=seed[3];
   47.34 +	  SeedManager::seed_[4]=seed[4];
   47.35 +	  SeedManager::seed_[5]=seed[5];
   47.36 +	  if (!RngStream::CheckSeed(SeedManager::seed_))
   47.37 +	    NS_FATAL_ERROR("Invalid seed");
   47.38 +	  
   47.39 +	  SeedManager::seedSet = true;
   47.40 +}
   47.41 +
   47.42 +void SeedManager::GetSeed(uint32_t seed[6])
   47.43 +{
   47.44 +    for (int i=0; i<6; i++) 
   47.45 +    {
   47.46 +            seed[i] = seed_[i];
   47.47 +    }
   47.48 +}
   47.49 +
   47.50 +void SeedManager::SetSeed(uint32_t seed)
   47.51 +{
   47.52 +	uint32_t s[6];
   47.53 +	s[0]=s[1]=s[2]=s[3]=s[4]=s[5]=seed;
   47.54 +	SetSeed(s);
   47.55 +}
   47.56 +
   47.57 +uint32_t SeedManager::GetSeed()
   47.58 +{
   47.59 +	uint32_t s[6];
   47.60 +	GetSeed(s);
   47.61 +	return s[0];
   47.62 +}
   47.63 +
   47.64 +void SeedManager::SetRun(uint32_t run)
   47.65 +{
   47.66 +	runNumber=run;
   47.67 +}
   47.68 +
   47.69 +uint32_t SeedManager::GetRun()
   47.70 +{
   47.71 +	return runNumber; 
   47.72 +}
   47.73 +
   47.74 +bool SeedManager::CheckSeed (uint32_t seed)
   47.75 +{
   47.76 +	uint32_t s[6]; 
   47.77 +	s[0]=s[1]=s[2]=s[3]=s[4]=s[5]=seed;
   47.78 +	return RngStream::CheckSeed(s);
   47.79 +}
   47.80 +
   47.81 +bool SeedManager::CheckSeed (uint32_t seed[6])
   47.82 +{
   47.83 +	return RngStream::CheckSeed(seed);
   47.84 +}
   47.85 +
   47.86 +//-----------------------------------------------------------------------------
   47.87  //-----------------------------------------------------------------------------
   47.88  // RandomVariableBase methods
   47.89  
   47.90 @@ -54,63 +127,24 @@
   47.91    virtual double  GetValue() = 0;
   47.92    virtual uint32_t GetInteger();
   47.93    virtual RandomVariableBase*   Copy(void) const = 0;
   47.94 -  virtual void GetSeed(uint32_t seed[6]);
   47.95  
   47.96 -  static  void UseDevRandom(bool udr = true);
   47.97 -  static void UseGlobalSeed(uint32_t s0, uint32_t s1, uint32_t s2, 
   47.98 -                            uint32_t s3, uint32_t s4, uint32_t s5);
   47.99 -  static void SetRunNumber(uint32_t n);
  47.100 -private:
  47.101 -  static void GetRandomSeeds(uint32_t seeds[6]);
  47.102 -private:
  47.103 -  static bool useDevRandom;    // True if using /dev/random desired
  47.104 -  static bool globalSeedSet;   // True if global seed has been specified
  47.105 -  static int  devRandom;       // File handle for /dev/random
  47.106 -  static uint32_t globalSeed[6]; // The global seed to use
  47.107 -  friend class RandomVariableInitializer;
  47.108  protected:
  47.109 -  static unsigned long heuristic_sequence;
  47.110 -  static RngStream* m_static_generator;
  47.111 -  static uint32_t runNumber;
  47.112    static void Initialize();    // Initialize  the RNG system
  47.113    static bool initialized;     // True if package seed is set 
  47.114    RngStream* m_generator;  //underlying generator being wrapped
  47.115  };
  47.116  
  47.117 +bool          RandomVariableBase::initialized = false;   // True if RngStream seed set 
  47.118  
  47.119  
  47.120 -bool          RandomVariableBase::initialized = false;   // True if RngStream seed set 
  47.121 -bool          RandomVariableBase::useDevRandom = false;  // True if use /dev/random
  47.122 -bool          RandomVariableBase::globalSeedSet = false; // True if GlobalSeed called
  47.123 -int           RandomVariableBase::devRandom = -1;
  47.124 -uint32_t      RandomVariableBase::globalSeed[6];
  47.125 -unsigned long RandomVariableBase::heuristic_sequence;
  47.126 -RngStream*    RandomVariableBase::m_static_generator = 0;
  47.127 -uint32_t      RandomVariableBase::runNumber = 0;
  47.128 -
  47.129 -//the static object random_variable_initializer initializes the static members
  47.130 -//of RandomVariable
  47.131 -static class RandomVariableInitializer
  47.132 -{
  47.133 -  public:
  47.134 -  RandomVariableInitializer()
  47.135 -  {
  47.136 -//     RandomVariableBase::Initialize(); // sets the static package seed
  47.137 -//     RandomVariableBase::m_static_generator = new RngStream();
  47.138 -//     RandomVariableBase::m_static_generator->InitializeStream();
  47.139 -  }
  47.140 -  ~RandomVariableInitializer()
  47.141 -  {
  47.142 -    delete RandomVariableBase::m_static_generator;
  47.143 -  }
  47.144 -} random_variable_initializer;
  47.145 -
  47.146  RandomVariableBase::RandomVariableBase() 
  47.147    : m_generator(NULL)
  47.148  {
  47.149 -//   m_generator = new RngStream();
  47.150 -//   m_generator->InitializeStream();
  47.151 -//   m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.152 +	 // it's better to be initialzed first and then set run number, 
  47.153 +	 // it happens in GetValue() automatically
  47.154 +	 //m_generator = new RngStream();
  47.155 +     //m_generator->InitializeStream();
  47.156 +     //m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.157  }
  47.158  
  47.159  RandomVariableBase::RandomVariableBase(const RandomVariableBase& r)
  47.160 @@ -132,115 +166,16 @@
  47.161    return (uint32_t)GetValue();
  47.162  }
  47.163  
  47.164 -void RandomVariableBase::UseDevRandom(bool udr) 
  47.165 -{
  47.166 -  RandomVariableBase::useDevRandom = udr;
  47.167 +void RandomVariableBase::Initialize()
  47.168 +{ 
  47.169 +  uint32_t s[6];
  47.170 +  if (RandomVariableBase::initialized) return; // Already initialized and seeded
  47.171 +  RandomVariableBase::initialized = true;
  47.172 +  SeedManager::GetSeed(s);
  47.173 +  RngStream::SetPackageSeed(s);
  47.174  }
  47.175  
  47.176 -void RandomVariableBase::GetSeed(uint32_t seed[6])
  47.177 -{
  47.178 -  if(!m_generator)
  47.179 -  {
  47.180 -    m_generator = new RngStream();
  47.181 -    m_generator->InitializeStream();
  47.182 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.183 -  }
  47.184 -  m_generator->GetState(seed);
  47.185 -}
  47.186 -
  47.187 -//-----------------------------------------------------------------------------
  47.188 -//-----------------------------------------------------------------------------
  47.189 -// RandomVariableBase static methods
  47.190 -void RandomVariableBase::UseGlobalSeed(uint32_t s0, uint32_t s1, uint32_t s2, 
  47.191 -                                   uint32_t s3, uint32_t s4, uint32_t s5)
  47.192 -{
  47.193 -  if (RandomVariableBase::globalSeedSet)
  47.194 -    {
  47.195 -      NS_FATAL_ERROR ("Random number generator already initialized! "
  47.196 -                      "Call to RandomVariableBase::UseGlobalSeed() ignored");
  47.197 -    }
  47.198 -  RandomVariableBase::globalSeed[0] = s0;
  47.199 -  RandomVariableBase::globalSeed[1] = s1;
  47.200 -  RandomVariableBase::globalSeed[2] = s2;
  47.201 -  RandomVariableBase::globalSeed[3] = s3;
  47.202 -  RandomVariableBase::globalSeed[4] = s4;
  47.203 -  RandomVariableBase::globalSeed[5] = s5;
  47.204 -  if (!RngStream::CheckSeed(RandomVariableBase::globalSeed))
  47.205 -    NS_FATAL_ERROR("Invalid seed");
  47.206 -  
  47.207 -  RandomVariableBase::globalSeedSet = true;
  47.208 -}
  47.209 -
  47.210 -void RandomVariableBase::Initialize()
  47.211 -{ 
  47.212 -  if (RandomVariableBase::initialized) return; // Already initialized and seeded
  47.213 -  RandomVariableBase::initialized = true;
  47.214 -  if (!RandomVariableBase::globalSeedSet)
  47.215 -    { // No global seed, try a random one
  47.216 -      GetRandomSeeds(globalSeed);
  47.217 -    }
  47.218 -  // Seed the RngStream package
  47.219 -  RngStream::SetPackageSeed(globalSeed);
  47.220 -}
  47.221 -
  47.222 -void RandomVariableBase::GetRandomSeeds(uint32_t seeds[6])
  47.223 -{
  47.224 -  // Check if /dev/random exists
  47.225 -  if (RandomVariableBase::useDevRandom && RandomVariableBase::devRandom < 0)
  47.226 -    {
  47.227 -      RandomVariableBase::devRandom = open("/dev/random", O_RDONLY);
  47.228 -    }
  47.229 -  if (RandomVariableBase::devRandom > 0)
  47.230 -    { // Use /dev/random
  47.231 -      while(true)
  47.232 -        {
  47.233 -          for (int i = 0; i < 6; ++i)
  47.234 -            {
  47.235 -              ssize_t bytes_read = read (RandomVariableBase::devRandom,
  47.236 -                                         &seeds[i], sizeof (seeds[i]));
  47.237 -              if (bytes_read != sizeof (seeds[i]))
  47.238 -                {
  47.239 -                  NS_FATAL_ERROR ("Read from /dev/random failed");
  47.240 -                }
  47.241 -            }
  47.242 -          if (RngStream::CheckSeed(seeds)) break; // Got a valid one
  47.243 -        }
  47.244 -    }
  47.245 -  else
  47.246 -    { // Seed from time of day (code borrowed from ns2 random seeding)
  47.247 -      // Thanks to John Heidemann for this technique
  47.248 -      while(true)
  47.249 -        {
  47.250 -          timeval tv;
  47.251 -          gettimeofday(&tv, 0);
  47.252 -          seeds[0] = (tv.tv_sec^tv.tv_usec^(++heuristic_sequence <<8))
  47.253 -              & 0x7fffffff;
  47.254 -          gettimeofday(&tv, 0);
  47.255 -          seeds[1] = (tv.tv_sec^tv.tv_usec^(++heuristic_sequence <<8))
  47.256 -              & 0x7fffffff;
  47.257 -          gettimeofday(&tv, 0);
  47.258 -          seeds[2] = (tv.tv_sec^tv.tv_usec^(++heuristic_sequence <<8))
  47.259 -              & 0x7fffffff;
  47.260 -          gettimeofday(&tv, 0);
  47.261 -          seeds[3] = (tv.tv_sec^tv.tv_usec^(++heuristic_sequence <<8))
  47.262 -              & 0x7fffffff;
  47.263 -          gettimeofday(&tv, 0);
  47.264 -          seeds[4] = (tv.tv_sec^tv.tv_usec^(++heuristic_sequence <<8))
  47.265 -              & 0x7fffffff;
  47.266 -          gettimeofday(&tv, 0);
  47.267 -          seeds[5] = (tv.tv_sec^tv.tv_usec^(++heuristic_sequence <<8))
  47.268 -              & 0x7fffffff;
  47.269 -          if (RngStream::CheckSeed(seeds)) break; // Got a valid one
  47.270 -        }
  47.271 -    }
  47.272 -}
  47.273 -
  47.274 -void RandomVariableBase::SetRunNumber(uint32_t n)
  47.275 -{
  47.276 -  runNumber = n;
  47.277 -}
  47.278 -
  47.279 -
  47.280 +//-------------------------------------------------------
  47.281  
  47.282  RandomVariable::RandomVariable()
  47.283    : m_variable (0)
  47.284 @@ -277,33 +212,14 @@
  47.285  {
  47.286    return m_variable->GetInteger ();
  47.287  }
  47.288 -void 
  47.289 -RandomVariable::GetSeed(uint32_t seed[6]) const
  47.290 -{
  47.291 -  return m_variable->GetSeed (seed);
  47.292 -}
  47.293 -void 
  47.294 -RandomVariable::UseDevRandom(bool udr)
  47.295 -{
  47.296 -  RandomVariableBase::UseDevRandom (udr);
  47.297 -}
  47.298 -void 
  47.299 -RandomVariable::UseGlobalSeed(uint32_t s0, uint32_t s1, uint32_t s2, 
  47.300 -                              uint32_t s3, uint32_t s4, uint32_t s5)
  47.301 -{
  47.302 -  RandomVariableBase::UseGlobalSeed (s0, s1, s2, s3, s4, s5);
  47.303 -}
  47.304 -void 
  47.305 -RandomVariable::SetRunNumber(uint32_t n)
  47.306 -{
  47.307 -  RandomVariableBase::SetRunNumber (n);
  47.308 -}
  47.309 +
  47.310  RandomVariableBase *
  47.311  RandomVariable::Peek (void) const
  47.312  {
  47.313    return m_variable;
  47.314  }
  47.315  
  47.316 +
  47.317  ATTRIBUTE_VALUE_IMPLEMENT (RandomVariable);
  47.318  ATTRIBUTE_CHECKER_IMPLEMENT (RandomVariable);
  47.319  
  47.320 @@ -335,15 +251,14 @@
  47.321     * \return A value between low and high values specified by the constructor
  47.322     */
  47.323    virtual double GetValue();
  47.324 +
  47.325 +  /**
  47.326 +   * \return A value between low and high values specified by parameters
  47.327 +   */
  47.328 +  virtual double GetValue(double s, double l);
  47.329 +  
  47.330    virtual RandomVariableBase*  Copy(void) const;
  47.331  
  47.332 -public:
  47.333 -  /**
  47.334 -   * \param s Low end of the range
  47.335 -   * \param l High end of the range
  47.336 -   * \return A uniformly distributed random number between s and l
  47.337 -   */
  47.338 -  static double GetSingleValue(double s, double l);
  47.339  private:
  47.340    double m_min;
  47.341    double m_max;
  47.342 @@ -380,37 +295,46 @@
  47.343    {
  47.344      m_generator = new RngStream();
  47.345      m_generator->InitializeStream();
  47.346 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.347 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.348    }
  47.349    return m_min + m_generator->RandU01() * (m_max - m_min);
  47.350  }
  47.351  
  47.352 +double UniformVariableImpl::GetValue(double s, double l) 
  47.353 +{
  47.354 +	  if(!RandomVariableBase::initialized)
  47.355 +	  {
  47.356 +	    RandomVariableBase::Initialize();
  47.357 +	  }
  47.358 +	  if(!m_generator)
  47.359 +	  {
  47.360 +	    m_generator = new RngStream();
  47.361 +	    m_generator->InitializeStream();
  47.362 +	    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.363 +	  }
  47.364 +	  return s + m_generator->RandU01() * (l-s); 
  47.365 +}
  47.366 +
  47.367  RandomVariableBase* UniformVariableImpl::Copy() const
  47.368  {
  47.369    return new UniformVariableImpl(*this);
  47.370  }
  47.371  
  47.372 -double UniformVariableImpl::GetSingleValue(double s, double l)
  47.373 -{
  47.374 -  if(!RandomVariableBase::m_static_generator)
  47.375 -  {
  47.376 -    RandomVariableBase::Initialize(); // sets the static package seed
  47.377 -    RandomVariableBase::m_static_generator = new RngStream();
  47.378 -    RandomVariableBase::m_static_generator->InitializeStream();
  47.379 -  }
  47.380 -  return s + m_static_generator->RandU01() * (l - s);;
  47.381 -}
  47.382 -
  47.383  UniformVariable::UniformVariable()
  47.384    : RandomVariable (UniformVariableImpl ())
  47.385  {}
  47.386  UniformVariable::UniformVariable(double s, double l)
  47.387    : RandomVariable (UniformVariableImpl (s, l))
  47.388  {}
  47.389 -double 
  47.390 -UniformVariable::GetSingleValue(double s, double l)
  47.391 +
  47.392 +double UniformVariable::GetValue()
  47.393  {
  47.394 -  return UniformVariableImpl::GetSingleValue (s, l);
  47.395 +	return Peek()->GetValue();
  47.396 +}
  47.397 +
  47.398 +double UniformVariable::GetValue(double s, double l)
  47.399 +{
  47.400 +  return ((UniformVariableImpl*)Peek())->GetValue(s,l);
  47.401  }
  47.402  
  47.403  
  47.404 @@ -623,13 +547,7 @@
  47.405     */
  47.406    virtual double GetValue();
  47.407    virtual RandomVariableBase* Copy(void) const;
  47.408 -public:
  47.409 -  /**
  47.410 -   * \param m The mean of the distribution from which the return value is drawn
  47.411 -   * \param b The upper bound value desired, beyond which values get clipped
  47.412 -   * \return A random number from an exponential distribution with mean m
  47.413 -   */
  47.414 -  static double GetSingleValue(double m, double b=0);
  47.415 +
  47.416  private:
  47.417    double m_mean;  // Mean value of RV
  47.418    double m_bound; // Upper bound on value (if non-zero)
  47.419 @@ -657,7 +575,7 @@
  47.420    {
  47.421      m_generator = new RngStream();
  47.422      m_generator->InitializeStream();
  47.423 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.424 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.425    }
  47.426    double r = -m_mean*log(m_generator->RandU01());
  47.427    if (m_bound != 0 && r > m_bound) return m_bound;
  47.428 @@ -668,18 +586,6 @@
  47.429  {
  47.430    return new ExponentialVariableImpl(*this);
  47.431  }
  47.432 -double ExponentialVariableImpl::GetSingleValue(double m, double b/*=0*/)
  47.433 -{
  47.434 -  if(!RandomVariableBase::m_static_generator)
  47.435 -  {
  47.436 -    RandomVariableBase::Initialize(); // sets the static package seed
  47.437 -    RandomVariableBase::m_static_generator = new RngStream();
  47.438 -    RandomVariableBase::m_static_generator->InitializeStream();
  47.439 -  }
  47.440 -  double r = -m*log(m_static_generator->RandU01());
  47.441 -  if (b != 0 && r > b) return b;
  47.442 -  return r;
  47.443 -}
  47.444  
  47.445  ExponentialVariable::ExponentialVariable()
  47.446    : RandomVariable (ExponentialVariableImpl ())
  47.447 @@ -690,11 +596,6 @@
  47.448  ExponentialVariable::ExponentialVariable(double m, double b)
  47.449    : RandomVariable (ExponentialVariableImpl (m, b))
  47.450  {}
  47.451 -double 
  47.452 -ExponentialVariable::GetSingleValue(double m, double b)
  47.453 -{
  47.454 -  return ExponentialVariableImpl::GetSingleValue (m, b);
  47.455 -}
  47.456  
  47.457  //-----------------------------------------------------------------------------
  47.458  //-----------------------------------------------------------------------------
  47.459 @@ -743,17 +644,7 @@
  47.460     */
  47.461    virtual double GetValue();
  47.462    virtual RandomVariableBase* Copy() const;
  47.463 -public:
  47.464 -  /**
  47.465 -   * \param m The mean value of the distribution from which the return value
  47.466 -   * is drawn.
  47.467 -   * \param s The shape parameter of the distribution from which the return
  47.468 -   * value is drawn.
  47.469 -   * \param b The upper bound to which to restrict return values
  47.470 -   * \return A random number from a Pareto distribution with mean m and shape
  47.471 -   * parameter s.
  47.472 -   */
  47.473 -  static double GetSingleValue(double m, double s, double b=0);
  47.474 +
  47.475  private:
  47.476    double m_mean;  // Mean value of RV
  47.477    double m_shape; // Shape parameter
  47.478 @@ -786,7 +677,7 @@
  47.479    {
  47.480      m_generator = new RngStream();
  47.481      m_generator->InitializeStream();
  47.482 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.483 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.484    }
  47.485    double scale = m_mean * ( m_shape - 1.0) / m_shape;
  47.486    double r = (scale * ( 1.0 / pow(m_generator->RandU01(), 1.0 / m_shape)));
  47.487 @@ -799,20 +690,6 @@
  47.488    return new ParetoVariableImpl(*this);
  47.489  }
  47.490  
  47.491 -double ParetoVariableImpl::GetSingleValue(double m, double s, double b/*=0*/)
  47.492 -{
  47.493 -  if(!RandomVariableBase::m_static_generator)
  47.494 -  {
  47.495 -    RandomVariableBase::Initialize(); // sets the static package seed
  47.496 -    RandomVariableBase::m_static_generator = new RngStream();
  47.497 -    RandomVariableBase::m_static_generator->InitializeStream();
  47.498 -  }
  47.499 -  double scale = m * ( s - 1.0) / s;
  47.500 -  double r = (scale * ( 1.0 / pow(m_static_generator->RandU01(), 1.0 / s)));
  47.501 -  if (b != 0 && r > b) return b;
  47.502 -  return r;
  47.503 -}
  47.504 -
  47.505  ParetoVariable::ParetoVariable ()
  47.506    : RandomVariable (ParetoVariableImpl ())
  47.507  {}
  47.508 @@ -825,11 +702,6 @@
  47.509  ParetoVariable::ParetoVariable(double m, double s, double b)
  47.510    : RandomVariable (ParetoVariableImpl (m, s, b))
  47.511  {}
  47.512 -double 
  47.513 -ParetoVariable::GetSingleValue(double m, double s, double b)
  47.514 -{
  47.515 -  return ParetoVariableImpl::GetSingleValue (m, s, b);
  47.516 -}
  47.517  
  47.518  //-----------------------------------------------------------------------------
  47.519  //-----------------------------------------------------------------------------
  47.520 @@ -879,14 +751,7 @@
  47.521     */
  47.522    virtual double GetValue();
  47.523    virtual RandomVariableBase* Copy(void) const;
  47.524 -public:
  47.525 -  /**
  47.526 -   * \param m Mean value for the distribution.
  47.527 -   * \param s Shape (alpha) parameter for the distribution.
  47.528 -   * \param b Upper limit on returned values
  47.529 -   * \return Random number from a distribution specified by m,s, and b
  47.530 -   */
  47.531 -  static double GetSingleValue(double m, double s, double b=0);
  47.532 +
  47.533  private:
  47.534    double m_mean;  // Mean value of RV
  47.535    double m_alpha; // Shape parameter
  47.536 @@ -914,7 +779,7 @@
  47.537    {
  47.538      m_generator = new RngStream();
  47.539      m_generator->InitializeStream();
  47.540 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.541 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.542    }
  47.543    double exponent = 1.0 / m_alpha;
  47.544    double r = m_mean * pow( -log(m_generator->RandU01()), exponent);
  47.545 @@ -927,20 +792,6 @@
  47.546    return new WeibullVariableImpl(*this);
  47.547  }
  47.548  
  47.549 -double WeibullVariableImpl::GetSingleValue(double m, double s, double b/*=0*/)
  47.550 -{
  47.551 -  if(!RandomVariableBase::m_static_generator)
  47.552 -  {
  47.553 -    RandomVariableBase::Initialize(); // sets the static package seed
  47.554 -    RandomVariableBase::m_static_generator = new RngStream();
  47.555 -    RandomVariableBase::m_static_generator->InitializeStream();
  47.556 -  }
  47.557 -  double exponent = 1.0 / s;
  47.558 -  double r = m * pow( -log(m_static_generator->RandU01()), exponent);
  47.559 -  if (b != 0 && r > b) return b;
  47.560 -  return r;
  47.561 -}
  47.562 -
  47.563  WeibullVariable::WeibullVariable()
  47.564    : RandomVariable (WeibullVariableImpl ())
  47.565  {}
  47.566 @@ -953,11 +804,7 @@
  47.567  WeibullVariable::WeibullVariable(double m, double s, double b)
  47.568    : RandomVariable (WeibullVariableImpl (m, s, b))
  47.569  {}
  47.570 -double 
  47.571 -WeibullVariable::GetSingleValue(double m, double s, double b)
  47.572 -{
  47.573 -  return WeibullVariableImpl::GetSingleValue (m, s, b);
  47.574 -}
  47.575 +
  47.576  //-----------------------------------------------------------------------------
  47.577  //-----------------------------------------------------------------------------
  47.578  // NormalVariableImpl methods
  47.579 @@ -987,14 +834,7 @@
  47.580     */
  47.581    virtual double GetValue();
  47.582    virtual RandomVariableBase* Copy(void) const;
  47.583 -public:
  47.584 -  /**
  47.585 -   * \param m Mean value
  47.586 -   * \param v Variance
  47.587 -   * \param b Bound.  The NormalVariableImpl is bounded within +-bound.
  47.588 -   * \return A random number from a distribution specified by m,v, and b.
  47.589 -   */ 
  47.590 -  static double GetSingleValue(double m, double v, double b = INFINITE_VALUE);
  47.591 +
  47.592  private:
  47.593    double m_mean;      // Mean value of RV
  47.594    double m_variance;  // Mean value of RV
  47.595 @@ -1017,7 +857,7 @@
  47.596  
  47.597  NormalVariableImpl::NormalVariableImpl(const NormalVariableImpl& c)
  47.598    : RandomVariableBase(c), m_mean(c.m_mean), m_variance(c.m_variance),
  47.599 -    m_bound(c.m_bound), m_nextValid(false) { }
  47.600 +    m_bound(c.m_bound) { }
  47.601  
  47.602  double NormalVariableImpl::GetValue()
  47.603  {
  47.604 @@ -1029,7 +869,7 @@
  47.605    {
  47.606      m_generator = new RngStream();
  47.607      m_generator->InitializeStream();
  47.608 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.609 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.610    }
  47.611    if (m_nextValid)
  47.612      { // use previously generated
  47.613 @@ -1049,21 +889,11 @@
  47.614          { // Got good pair
  47.615            double y = sqrt((-2 * log(w))/w);
  47.616            m_next = m_mean + v2 * y * sqrt(m_variance);
  47.617 -          //if next is in bounds, it is valid
  47.618 -          m_nextValid = fabs(m_next-m_mean) <= m_bound;
  47.619 +          if (fabs(m_next) > m_bound) m_next = m_bound * (m_next)/fabs(m_next);
  47.620 +          m_nextValid = true;
  47.621            double x1 = m_mean + v1 * y * sqrt(m_variance);
  47.622 -          //if x1 is in bounds, return it
  47.623 -          if (fabs(x1-m_mean) <= m_bound)
  47.624 -          {
  47.625 -            return x1;
  47.626 -          }
  47.627 -          //otherwise try and return m_next if it is valid
  47.628 -          else if (m_nextValid)
  47.629 -          {
  47.630 -            m_nextValid = false;
  47.631 -            return m_next;
  47.632 -          }
  47.633 -          //otherwise, just run this loop again
  47.634 +          if (fabs(x1) > m_bound) x1 = m_bound * (x1)/fabs(x1);
  47.635 +          return x1;
  47.636          }
  47.637      }
  47.638  }
  47.639 @@ -1073,71 +903,12 @@
  47.640    return new NormalVariableImpl(*this);
  47.641  }
  47.642  
  47.643 -double NormalVariableImpl::GetSingleValue(double m, double v, double b)
  47.644 -{
  47.645 -  if(!RandomVariableBase::m_static_generator)
  47.646 -  {
  47.647 -    RandomVariableBase::Initialize(); // sets the static package seed
  47.648 -    RandomVariableBase::m_static_generator = new RngStream();
  47.649 -    RandomVariableBase::m_static_generator->InitializeStream();
  47.650 -  }
  47.651 -  if (m_static_nextValid)
  47.652 -    { // use previously generated
  47.653 -      m_static_nextValid = false;
  47.654 -      return m_static_next;
  47.655 -    }
  47.656 -  while(1)
  47.657 -    { // See Simulation Modeling and Analysis p. 466 (Averill Law)
  47.658 -      // for algorithm; basically a Box-Muller transform:
  47.659 -      // http://en.wikipedia.org/wiki/Box-Muller_transform
  47.660 -      double u1 = m_static_generator->RandU01();
  47.661 -      double u2 = m_static_generator->RandU01();;
  47.662 -      double v1 = 2 * u1 - 1;
  47.663 -      double v2 = 2 * u2 - 1;
  47.664 -      double w = v1 * v1 + v2 * v2;
  47.665 -      if (w <= 1.0)
  47.666 -        { // Got good pair
  47.667 -          double y = sqrt((-2 * log(w))/w);
  47.668 -          m_static_next = m + v2 * y * sqrt(v);
  47.669 -          //if next is in bounds, it is valid
  47.670 -          m_static_nextValid = fabs(m_static_next-m) <= b;;
  47.671 -          double x1 = m + v1 * y * sqrt(v);
  47.672 -          //if x1 is in bounds, return it
  47.673 -          if (fabs(x1-m) <= b)
  47.674 -          {
  47.675 -            return x1;
  47.676 -          }
  47.677 -          //otherwise try and return m_next if it is valid
  47.678 -          else if (m_static_nextValid)
  47.679 -          {
  47.680 -            m_static_nextValid = false;
  47.681 -            return m_static_next;
  47.682 -          }
  47.683 -          //otherwise, just run this loop again
  47.684 -        }
  47.685 -    }
  47.686 -}
  47.687 -
  47.688  NormalVariable::NormalVariable()
  47.689    : RandomVariable (NormalVariableImpl ())
  47.690  {}
  47.691 -NormalVariable::NormalVariable(double m, double v)
  47.692 -  : RandomVariable (NormalVariableImpl (m, v))
  47.693 -{}
  47.694  NormalVariable::NormalVariable(double m, double v, double b)
  47.695    : RandomVariable (NormalVariableImpl (m, v, b))
  47.696  {}
  47.697 -double 
  47.698 -NormalVariable::GetSingleValue(double m, double v)
  47.699 -{
  47.700 -  return NormalVariableImpl::GetSingleValue (m, v);
  47.701 -}
  47.702 -double 
  47.703 -NormalVariable::GetSingleValue(double m, double v, double b)
  47.704 -{
  47.705 -  return NormalVariableImpl::GetSingleValue (m, v, b);
  47.706 -}
  47.707 -
  47.708  
  47.709  //-----------------------------------------------------------------------------
  47.710  //-----------------------------------------------------------------------------
  47.711 @@ -1208,7 +979,7 @@
  47.712    {
  47.713      m_generator = new RngStream();
  47.714      m_generator->InitializeStream();
  47.715 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.716 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.717    }
  47.718    if (emp.size() == 0) return 0.0; // HuH? No empirical data
  47.719    if (!validated) Validate();      // Insure in non-decreasing
  47.720 @@ -1395,13 +1166,7 @@
  47.721     */
  47.722    virtual double GetValue ();
  47.723    virtual RandomVariableBase* Copy(void) const;
  47.724 -public:
  47.725 -  /**
  47.726 -   * \param mu mu parameter of the underlying normal distribution
  47.727 -   * \param sigma sigma parameter of the underlying normal distribution
  47.728 -   * \return A random number from the distribution specified by mu and sigma
  47.729 -   */
  47.730 -  static double GetSingleValue(double mu, double sigma);
  47.731 +
  47.732  private:
  47.733    double m_mu;
  47.734    double m_sigma;
  47.735 @@ -1455,7 +1220,7 @@
  47.736    {
  47.737      m_generator = new RngStream();
  47.738      m_generator->InitializeStream();
  47.739 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.740 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.741    }
  47.742    double u, v, r2, normal, z;
  47.743  
  47.744 @@ -1478,42 +1243,9 @@
  47.745    return z;
  47.746  }
  47.747  
  47.748 -double LogNormalVariableImpl::GetSingleValue (double mu, double sigma)
  47.749 -{
  47.750 -  if(!RandomVariableBase::m_static_generator)
  47.751 -  {
  47.752 -    RandomVariableBase::Initialize(); // sets the static package seed
  47.753 -    RandomVariableBase::m_static_generator = new RngStream();
  47.754 -    RandomVariableBase::m_static_generator->InitializeStream();
  47.755 -  }
  47.756 -  double u, v, r2, normal, z;
  47.757 -  do
  47.758 -    {
  47.759 -      /* choose x,y in uniform square (-1,-1) to (+1,+1) */
  47.760 -      u = -1 + 2 * m_static_generator->RandU01 ();
  47.761 -      v = -1 + 2 * m_static_generator->RandU01 ();
  47.762 -
  47.763 -      /* see if it is in the unit circle */
  47.764 -      r2 = u * u + v * v;
  47.765 -    }
  47.766 -  while (r2 > 1.0 || r2 == 0);
  47.767 -
  47.768 -  normal = u * sqrt (-2.0 * log (r2) / r2);
  47.769 -
  47.770 -  z =  exp (sigma * normal + mu);
  47.771 -
  47.772 -  return z;
  47.773 -}
  47.774 -
  47.775  LogNormalVariable::LogNormalVariable (double mu, double sigma)
  47.776    : RandomVariable (LogNormalVariableImpl (mu, sigma))
  47.777  {}
  47.778 -double 
  47.779 -LogNormalVariable::GetSingleValue(double mu, double sigma)
  47.780 -{
  47.781 -  return LogNormalVariableImpl::GetSingleValue (mu, sigma);
  47.782 -}
  47.783 -
  47.784  
  47.785  //-----------------------------------------------------------------------------
  47.786  //-----------------------------------------------------------------------------
  47.787 @@ -1542,14 +1274,7 @@
  47.788     */
  47.789    virtual double GetValue();
  47.790    virtual RandomVariableBase*  Copy(void) const;
  47.791 -public:
  47.792 -  /**
  47.793 -   * \param s Low end of the range
  47.794 -   * \param l High end of the range
  47.795 -   * \param mean mean of the distribution
  47.796 -   * \return A triangularly distributed random number between s and l
  47.797 -   */
  47.798 -  static double GetSingleValue(double s, double l, double mean);
  47.799 +
  47.800  private:
  47.801    double m_min;
  47.802    double m_max;
  47.803 @@ -1576,7 +1301,7 @@
  47.804    {
  47.805      m_generator = new RngStream();
  47.806      m_generator->InitializeStream();
  47.807 -    m_generator->ResetNthSubstream(RandomVariableBase::runNumber);
  47.808 +    m_generator->ResetNthSubstream(SeedManager::GetRun());
  47.809    }
  47.810    double u = m_generator->RandU01();
  47.811    if(u <= (m_mode - m_min) / (m_max - m_min) )
  47.812 @@ -1590,33 +1315,12 @@
  47.813    return new TriangularVariableImpl(*this);
  47.814  }
  47.815  
  47.816 -double TriangularVariableImpl::GetSingleValue(double s, double l, double mean)
  47.817 -{
  47.818 -  if(!RandomVariableBase::m_static_generator)
  47.819 -  {
  47.820 -    RandomVariableBase::Initialize(); // sets the static package seed
  47.821 -    RandomVariableBase::m_static_generator = new RngStream();
  47.822 -    RandomVariableBase::m_static_generator->InitializeStream();
  47.823 -  }
  47.824 -  double mode = 3.0*mean-s-l;
  47.825 -  double u = m_static_generator->RandU01();
  47.826 -  if(u <= (mode - s) / (l - s) )
  47.827 -    return s + sqrt(u * (l - s) * (mode - s) );
  47.828 -  else
  47.829 -    return l - sqrt( (1-u) * (l - s) * (l - mode) );
  47.830 -}
  47.831 -
  47.832  TriangularVariable::TriangularVariable()
  47.833    : RandomVariable (TriangularVariableImpl ())
  47.834  {}
  47.835  TriangularVariable::TriangularVariable(double s, double l, double mean)
  47.836    : RandomVariable (TriangularVariableImpl (s,l,mean))
  47.837  {}
  47.838 -double 
  47.839 -TriangularVariable::GetSingleValue(double s, double l, double mean)
  47.840 -{
  47.841 -  return TriangularVariableImpl::GetSingleValue (s,l,mean);
  47.842 -}
  47.843  
  47.844  
  47.845  std::ostream &operator << (std::ostream &os, const RandomVariable &var)
  47.846 @@ -1691,112 +1395,3 @@
  47.847  
  47.848  }//namespace ns3
  47.849  
  47.850 -
  47.851 -#ifdef RUN_SELF_TESTS
  47.852 -#include "test.h"
  47.853 -#include <vector>
  47.854 -
  47.855 -namespace ns3 {
  47.856 -
  47.857 -
  47.858 -class RandomVariableTest : public Test
  47.859 -{
  47.860 -public:
  47.861 -  RandomVariableTest () : Test ("RandomVariable") {}
  47.862 -  virtual bool RunTests (void)
  47.863 -  {
  47.864 -    bool result = true;
  47.865 -    const double desired_mean = 1.0;
  47.866 -    const double desired_stddev = 1.0;
  47.867 -    double tmp = log (1 + (desired_stddev/desired_mean)*(desired_stddev/desired_mean));
  47.868 -    double sigma = sqrt (tmp);
  47.869 -    double mu = log (desired_mean) - 0.5*tmp;
  47.870 -
  47.871 -    // Test a custom lognormal instance
  47.872 -    {
  47.873 -      LogNormalVariable lognormal (mu, sigma);
  47.874 -      vector<double> samples;
  47.875 -      const int NSAMPLES = 10000;
  47.876 -      double sum = 0;
  47.877 -      for (int n = NSAMPLES; n; --n)
  47.878 -        {
  47.879 -          double value = lognormal.GetValue ();
  47.880 -          sum += value;
  47.881 -          samples.push_back (value);
  47.882 -        }
  47.883 -      double obtained_mean = sum / NSAMPLES;
  47.884 -      sum = 0;
  47.885 -      for (vector<double>::iterator iter = samples.begin (); iter != samples.end (); iter++)
  47.886 -        {
  47.887 -          double tmp = (*iter - obtained_mean);
  47.888 -          sum += tmp*tmp;
  47.889 -        }
  47.890 -      double obtained_stddev = sqrt (sum / (NSAMPLES - 1));
  47.891 -
  47.892 -      if (not (obtained_mean/desired_mean > 0.90 and obtained_mean/desired_mean < 1.10))
  47.893 -        {
  47.894 -          result = false;
  47.895 -          Failure () << "Obtained lognormal mean value " << obtained_mean << ", expected " << desired_mean << std::endl;
  47.896 -        }
  47.897 -
  47.898 -      if (not (obtained_stddev/desired_stddev > 0.90 and obtained_stddev/desired_stddev < 1.10))
  47.899 -        {
  47.900 -          result = false;
  47.901 -          Failure () << "Obtained lognormal stddev value " << obtained_stddev <<
  47.902 -            ", expected " << desired_stddev << std::endl;
  47.903 -        }
  47.904 -    }
  47.905 -
  47.906 -    // Test GetSingleValue
  47.907 -    {
  47.908 -      vector<double> samples;
  47.909 -      const int NSAMPLES = 10000;
  47.910 -      double sum = 0;
  47.911 -      for (int n = NSAMPLES; n; --n)
  47.912 -        {
  47.913 -          double value = LogNormalVariable::GetSingleValue (mu, sigma);
  47.914 -          sum += value;
  47.915 -          samples.push_back (value);
  47.916 -        }
  47.917 -      double obtained_mean = sum / NSAMPLES;
  47.918 -      sum = 0;
  47.919 -      for (vector<double>::iterator iter = samples.begin (); iter != samples.end (); iter++)
  47.920 -        {
  47.921 -          double tmp = (*iter - obtained_mean);
  47.922 -          sum += tmp*tmp;
  47.923 -        }
  47.924 -      double obtained_stddev = sqrt (sum / (NSAMPLES - 1));
  47.925 -
  47.926 -      if (not (obtained_mean/desired_mean > 0.90 and obtained_mean/desired_mean < 1.10))
  47.927 -        {
  47.928 -          result = false;
  47.929 -          Failure () << "Obtained LogNormalVariable::GetSingleValue mean value " << obtained_mean
  47.930 -                     << ", expected " << desired_mean << std::endl;
  47.931 -        }
  47.932 -
  47.933 -      if (not (obtained_stddev/desired_stddev > 0.90 and obtained_stddev/desired_stddev < 1.10))
  47.934 -        {
  47.935 -          result = false;
  47.936 -          Failure () << "Obtained LogNormalVariable::GetSingleValue stddev value " << obtained_stddev <<
  47.937 -            ", expected " << desired_stddev << std::endl;
  47.938 -        }
  47.939 -    }
  47.940 -
  47.941 -    // Test attribute serialization
  47.942 -    {
  47.943 -      RandomVariableValue val;
  47.944 -      val.DeserializeFromString ("Uniform:0.1:0.2", MakeRandomVariableChecker ());
  47.945 -      RandomVariable rng = val.Get ();
  47.946 -      NS_TEST_ASSERT_EQUAL (val.SerializeToString (MakeRandomVariableChecker ()), "Uniform:0.1:0.2");
  47.947 -    }
  47.948 -
  47.949 -    return result;
  47.950 -  }
  47.951 -};
  47.952 -
  47.953 -
  47.954 -static RandomVariableTest g_random_variable_tests;
  47.955 -
  47.956 -}//namespace ns3
  47.957 -
  47.958 -#endif /* RUN_SELF_TESTS */
    48.1 --- a/src/core/random-variable.h	Tue Dec 30 11:35:31 2008 -0800
    48.2 +++ b/src/core/random-variable.h	Tue Jan 13 17:15:44 2009 -0500
    48.3 @@ -16,10 +16,11 @@
    48.4  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    48.5  //
    48.6  // Author: Rajib Bhattacharjea<raj.b@gatech.edu>
    48.7 +// Author: Hadi Arbabi<marbabi@cs.odu.edu>
    48.8  //
    48.9  
   48.10 -#ifndef __random_variable_h__
   48.11 -#define __random_variable_h__
   48.12 +#ifndef __random_variable_h
   48.13 +#define __random_variable_h
   48.14  
   48.15  #include <vector>
   48.16  #include <algorithm>
   48.17 @@ -39,6 +40,94 @@
   48.18  
   48.19  class RandomVariableBase;
   48.20  
   48.21 +class SeedManager
   48.22 +{
   48.23 +private:
   48.24 + static uint32_t runNumber;
   48.25 + static bool seedSet;
   48.26 + static uint32_t seed_[6];
   48.27 + 
   48.28 +public:
   48.29 +	  
   48.30 +	 /**
   48.31 +	 * \brief set the seed
   48.32 +	 * it will duplicate the seed value 6 times
   48.33 +	 * \code
   48.34 +	 * SeedManger::SetSeed(15);
   48.35 +	 * UniformVariable x(2,3);     //these will give the same output everytime
   48.36 +	 * ExponentialVariable y(120); //as long as the seed stays the same
   48.37 +	 * \endcode
   48.38 +	 * \param seed
   48.39 +	 */ 
   48.40 +	static void SetSeed (uint32_t seed);
   48.41 + 
   48.42 +	 /**
   48.43 +	  * \brief Get the seed value
   48.44 +	  * \return seed value
   48.45 +	  */
   48.46 + 	static uint32_t GetSeed ();
   48.47 + 
   48.48 +	 /**
   48.49 +	 * \brief set the seed
   48.50 +	 * \code
   48.51 +	 * uint32_t seed[6]={10,5,2,3,5,11};
   48.52 +	 * SeedManger::SetSeed(seed);
   48.53 +	 * UniformVariable x(2,3);     //these will give the same output everytime
   48.54 +	 * ExponentialVariable y(120); //as long as the seed stays the same
   48.55 +	 * \endcode
   48.56 +	 * \param seed
   48.57 +	 */ 
   48.58 + 	static void SetSeed (uint32_t seed[6]);
   48.59 + 
   48.60 +	/**
   48.61 +	 * \brief Get the seed value
   48.62 +	 * \param array of size 6 which will hold returned seed values
   48.63 +	 */
   48.64 + 	static void GetSeed (uint32_t seed[6]);
   48.65 + 
   48.66 + 	/**
   48.67 +    * \brief Set the run number of simulation
   48.68 +    *
   48.69 +    * \code
   48.70 +    * SeedManager::SetSeed(12);
   48.71 +    * int N = atol(argv[1]); //read in run number from command line
   48.72 +    * SeedManager::SetRun(N);
   48.73 +    * UniformVariable x(0,10);
   48.74 +    * ExponentialVariable y(2902);
   48.75 +    * \endcode
   48.76 +    * In this example, N could successivly be equal to 1,2,3, etc. and the user
   48.77 +    * would continue to get independent runs out of the single simulation.  For
   48.78 +    * this simple example, the following might work:
   48.79 +    * \code
   48.80 +    * ./simulation 0
   48.81 +    * ...Results for run 0:...
   48.82 +    *
   48.83 +    * ./simulation 1
   48.84 +    * ...Results for run 1:...
   48.85 +    * \endcode
   48.86 +    */
   48.87 +	static void SetRun (uint32_t run);
   48.88 +
   48.89 +	/**
   48.90 +	 * \brief Get the run number
   48.91 +	 * \return run number
   48.92 +	 */
   48.93 +	static uint32_t GetRun ();
   48.94 +	
   48.95 +	/**
   48.96 +	 * \brief Check if seed value is valid if wanted to be used as seed
   48.97 +	 * \return true if valid and false if invalid
   48.98 +	 */
   48.99 +	static bool CheckSeed (uint32_t seed);
  48.100 +	
  48.101 +    /**
  48.102 +     * \brief Checks if seed array has valid values if wanted to be used as further seed
  48.103 +     * \return true if valid and false if invalid
  48.104 +     */
  48.105 +	static bool CheckSeed (uint32_t seed[6]);
  48.106 +};
  48.107 +
  48.108 +
  48.109  /**
  48.110   * \brief The basic RNG for NS-3.
  48.111   * \ingroup randomvariable
  48.112 @@ -73,95 +162,6 @@
  48.113     * \return  Integer cast of ::GetValue()
  48.114     */
  48.115    uint32_t GetInteger (void) const;
  48.116 -  
  48.117 -  /**
  48.118 -   * \brief Get the internal state of the RNG
  48.119 -   *
  48.120 -   * This function is for power users who understand the inner workings
  48.121 -   * of the underlying RngStream method used.  It returns the internal
  48.122 -   * state of the RNG via the input parameter.
  48.123 -   * \param seed Output parameter; gets overwritten with the internal state of
  48.124 -   * of the RNG.
  48.125 -   */
  48.126 -  void GetSeed(uint32_t seed[6]) const;
  48.127 -  
  48.128 -  /**
  48.129 -   * \brief Set seeding behavior
  48.130 -   * 
  48.131 -   * Specify whether the POSIX device /dev/random is to
  48.132 -   * be used for seeding.  When this is used, the underlying
  48.133 -   * generator is seeded with data from /dev/random instead of
  48.134 -   * being seeded based upon the time of day.  For this to be effective,
  48.135 -   * it must be called before the creation of the first instance of a 
  48.136 -   * RandomVariable or subclass.  Example:
  48.137 -   * \code
  48.138 -   * RandomVariable::UseDevRandom();
  48.139 -   * UniformVariable x(2,3);  //these are seeded randomly
  48.140 -   * ExponentialVariable y(120); //etc
  48.141 -   * \endcode
  48.142 -   * \param udr True if /dev/random desired.
  48.143 -   */
  48.144 -  static  void UseDevRandom(bool udr = true);
  48.145 -
  48.146 -   /**
  48.147 -   * \brief Use the global seed to force precisely reproducible results.
  48.148 -   *
  48.149 -   * It is often desirable to create a simulation that uses random
  48.150 -   * numbers, while at the same time is completely reproducible.
  48.151 -   * Specifying this set of six random seeds initializes the
  48.152 -   * random number generator with the specified seed.
  48.153 -   * Once this is set, all generators will produce fixed output
  48.154 -   * from run to run.  This is because each time a new generator is created,
  48.155 -   * the underlying RngStream deterministically creates a new seed based upon
  48.156 -   * the old one, hence a "stream" of RNGs.  Example:
  48.157 -   * \code
  48.158 -   * RandomVariable::UseGlobalSeed(...);
  48.159 -   * UniformVariable x(2,3);     //these will give the same output everytime
  48.160 -   * ExponentialVariable y(120); //as long as the seed stays the same
  48.161 -   * \endcode
  48.162 -   * \param s0
  48.163 -   * \param s1
  48.164 -   * \param s2
  48.165 -   * \param s3
  48.166 -   * \param s4
  48.167 -   * \param s5
  48.168 -   * \return True if seed is valid.
  48.169 -   */ 
  48.170 -  static void UseGlobalSeed(uint32_t s0, uint32_t s1, uint32_t s2, 
  48.171 -                            uint32_t s3, uint32_t s4, uint32_t s5);
  48.172 -  
  48.173 -  /**
  48.174 -   * \brief Set the run number of this simulation
  48.175 -   *
  48.176 -   * These RNGs have the ability to give independent sets of trials for a fixed
  48.177 -   * global seed.  For example, suppose one sets up a simulation with
  48.178 -   * RandomVariables with a given global seed.  Suppose the user wanted to
  48.179 -   * retry the same simulation with different random values for validity,
  48.180 -   * statistical rigor, etc.  The user could either change the global seed and
  48.181 -   * re-run the simulation, or could use this facility to increment all of the
  48.182 -   * RNGs to a next substream state.  This predictably advances the internal
  48.183 -   * state of all RandomVariables n steps.  This should be called immediately
  48.184 -   * after the global seed is set, and before the creation of any
  48.185 -   * RandomVariables.  For example:
  48.186 -   * \code
  48.187 -   * RandomVariable::UseGlobalSeed(1,2,3,4,5,6);
  48.188 -   * int N = atol(argv[1]); //read in run number from command line
  48.189 -   * RandomVariable::SetRunNumber(N);
  48.190 -   * UniformVariable x(0,10);
  48.191 -   * ExponentialVariable y(2902);
  48.192 -   * \endcode
  48.193 -   * In this example, N could successivly be equal to 1,2,3, etc. and the user
  48.194 -   * would continue to get independent runs out of the single simulation.  For
  48.195 -   * this simple example, the following might work:
  48.196 -   * \code
  48.197 -   * ./simulation 0
  48.198 -   * ...Results for run 0:...
  48.199 -   *
  48.200 -   * ./simulation 1
  48.201 -   * ...Results for run 1:...
  48.202 -   * \endcode
  48.203 -   */
  48.204 -  static void SetRunNumber(uint32_t n);
  48.205  
  48.206  private:
  48.207    friend std::ostream &operator << (std::ostream &os, const RandomVariable &var);
  48.208 @@ -204,13 +204,21 @@
  48.209     * \param l High end of the range
  48.210     */
  48.211    UniformVariable(double s, double l);
  48.212 -public:
  48.213 +
  48.214    /**
  48.215 -   * \param s Low end of the range
  48.216 -   * \param l High end of the range
  48.217 -   * \return A uniformly distributed random number between s and l
  48.218 -   */
  48.219 -  static double GetSingleValue(double s, double l);
  48.220 +  * \brief Returns a random double with the specified range given by constructor
  48.221 +  * \return A floating point random value
  48.222 +  */
  48.223 +  double GetValue();
  48.224 +  
  48.225 +  /**
  48.226 +  * \brief Returns a random double with the specified range
  48.227 +  * \param s Low end of the range
  48.228 +  * \param l High end of the range
  48.229 +  * \return A floating point random value
  48.230 +  */
  48.231 +  double GetValue(double s, double l);
  48.232 +
  48.233  };
  48.234  
  48.235  /**
  48.236 @@ -334,12 +342,6 @@
  48.237     */
  48.238    ExponentialVariable(double m, double b);
  48.239  
  48.240 -  /**
  48.241 -   * \param m The mean of the distribution from which the return value is drawn
  48.242 -   * \param b The upper bound value desired, beyond which values get clipped
  48.243 -   * \return A random number from an exponential distribution with mean m
  48.244 -   */
  48.245 -  static double GetSingleValue(double m, double b=0);
  48.246  };
  48.247  
  48.248  /**
  48.249 @@ -402,16 +404,6 @@
  48.250     */
  48.251    ParetoVariable(double m, double s, double b);
  48.252  
  48.253 -  /**
  48.254 -   * \param m The mean value of the distribution from which the return value
  48.255 -   * is drawn.
  48.256 -   * \param s The shape parameter of the distribution from which the return
  48.257 -   * value is drawn.
  48.258 -   * \param b The upper bound to which to restrict return values
  48.259 -   * \return A random number from a Pareto distribution with mean m and shape
  48.260 -   * parameter s.
  48.261 -   */
  48.262 -  static double GetSingleValue(double m, double s, double b=0);
  48.263  };
  48.264  
  48.265  /**
  48.266 @@ -464,13 +456,7 @@
  48.267     * \param b Upper limit on returned values
  48.268     */
  48.269    WeibullVariable(double m, double s, double b);
  48.270 -  /**
  48.271 -   * \param m Mean value for the distribution.
  48.272 -   * \param s Shape (alpha) parameter for the distribution.
  48.273 -   * \param b Upper limit on returned values
  48.274 -   * \return Random number from a distribution specified by m,s, and b
  48.275 -   */
  48.276 -  static double GetSingleValue(double m, double s, double b=0);
  48.277 +
  48.278  };
  48.279  
  48.280  /**
  48.281 @@ -490,6 +476,7 @@
  48.282  class NormalVariable : public RandomVariable
  48.283  {
  48.284  public:
  48.285 +   static const double INFINITE_VALUE;
  48.286    /**
  48.287     * Constructs an normal random variable  with a mean
  48.288     * value of 0 and variance of 1.
  48.289 @@ -497,36 +484,12 @@
  48.290    NormalVariable();
  48.291  
  48.292    /**
  48.293 -   * \brief Construct a normal random variable with specified mean and variance.
  48.294 -   * \param m Mean value
  48.295 -   * \param v Variance
  48.296 -   */ 
  48.297 -  NormalVariable(double m, double v);
  48.298 -
  48.299 -  /**
  48.300     * \brief Construct a normal random variable with specified mean and variance
  48.301     * \param m Mean value
  48.302     * \param v Variance
  48.303 -   * \param b Bound.  The NormalVariable is bounded symetrically about the mean
  48.304 -   * [mean-bound,mean+bound]
  48.305 +   * \param b Bound.  The NormalVariable is bounded within +-bound.
  48.306     */ 
  48.307 -  NormalVariable(double m, double v, double b);
  48.308 -
  48.309 -  /**
  48.310 -   * \param m Mean value
  48.311 -   * \param v Variance
  48.312 -   * \return A random number from a distribution specified by m, and v.
  48.313 -   */ 
  48.314 -  static double GetSingleValue(double m, double v);
  48.315 -
  48.316 -  /**
  48.317 -   * \param m Mean value
  48.318 -   * \param v Variance
  48.319 -   * \param b Bound.  The NormalVariable is bounded symetrically about the mean
  48.320 -   * [mean-bound,mean+bound]
  48.321 -   * \return A random number from a distribution specified by m,v, and b.
  48.322 -   */ 
  48.323 -  static double GetSingleValue(double m, double v, double b);
  48.324 +  NormalVariable(double m, double v, double b = INFINITE_VALUE);
  48.325  };
  48.326  
  48.327  /**
  48.328 @@ -633,13 +596,6 @@
  48.329     * \param sigma sigma parameter of the lognormal distribution
  48.330     */
  48.331    LogNormalVariable (double mu, double sigma);
  48.332 -
  48.333 -  /**
  48.334 -   * \param mu mu parameter of the underlying normal distribution
  48.335 -   * \param sigma sigma parameter of the underlying normal distribution
  48.336 -   * \return A random number from the distribution specified by mu and sigma
  48.337 -   */
  48.338 -  static double GetSingleValue(double mu, double sigma);
  48.339  };
  48.340  
  48.341  /**
  48.342 @@ -666,13 +622,7 @@
  48.343     * \param mean mean of the distribution
  48.344     */
  48.345    TriangularVariable(double s, double l, double mean);
  48.346 -  /**
  48.347 -   * \param s Low end of the range
  48.348 -   * \param l High end of the range
  48.349 -   * \param mean mean of the distribution
  48.350 -   * \return A triangularly distributed random number between s and l
  48.351 -   */
  48.352 -  static double GetSingleValue(double s, double l, double mean);
  48.353 +
  48.354  };
  48.355  
  48.356  std::ostream &operator << (std::ostream &os, const RandomVariable &var);
    49.1 --- a/src/devices/csma/backoff.cc	Tue Dec 30 11:35:31 2008 -0800
    49.2 +++ b/src/devices/csma/backoff.cc	Tue Jan 13 17:15:44 2009 -0500
    49.3 @@ -64,7 +64,8 @@
    49.4        maxSlot = m_maxSlots;
    49.5      }
    49.6  
    49.7 -  uint32_t backoffSlots = (uint32_t)UniformVariable::GetSingleValue(minSlot, maxSlot);
    49.8 +  UniformVariable rng;
    49.9 +  uint32_t backoffSlots = (uint32_t)rng.GetValue(minSlot, maxSlot);
   49.10  
   49.11    backoff = Scalar(backoffSlots) * m_slotTime;
   49.12    return (backoff);
    50.1 --- a/src/mobility/random-direction-2d-mobility-model.cc	Tue Dec 30 11:35:31 2008 -0800
    50.2 +++ b/src/mobility/random-direction-2d-mobility-model.cc	Tue Jan 13 17:15:44 2009 -0500
    50.3 @@ -69,7 +69,7 @@
    50.4  void
    50.5  RandomDirection2dMobilityModel::Start (void)
    50.6  {
    50.7 -  double direction = UniformVariable::GetSingleValue (0, 2 * PI);
    50.8 +  double direction = UniformVariable().GetValue (0, 2 * PI);
    50.9    SetDirectionAndSpeed (direction);
   50.10  }
   50.11  
   50.12 @@ -104,7 +104,7 @@
   50.13  void
   50.14  RandomDirection2dMobilityModel::ResetDirectionAndSpeed (void)
   50.15  {
   50.16 -  double direction = UniformVariable::GetSingleValue (0, PI);
   50.17 +  double direction = UniformVariable().GetValue (0, PI);
   50.18    
   50.19    m_helper.UpdateWithBounds (m_bounds);
   50.20    Vector position = m_helper.GetCurrentPosition ();
    51.1 --- a/src/routing/olsr/olsr-agent-impl.cc	Tue Dec 30 11:35:31 2008 -0800
    51.2 +++ b/src/routing/olsr/olsr-agent-impl.cc	Tue Jan 13 17:15:44 2009 -0500
    51.3 @@ -120,7 +120,7 @@
    51.4  /// Maximum allowed sequence number.
    51.5  #define OLSR_MAX_SEQ_NUM	65535
    51.6  /// Random number between [0-OLSR_MAXJITTER] used to jitter OLSR packet transmission.
    51.7 -#define JITTER (Seconds (UniformVariable::GetSingleValue (0, OLSR_MAXJITTER)))
    51.8 +#define JITTER (Seconds (UniformVariable().GetValue (0, OLSR_MAXJITTER)))
    51.9  
   51.10  
   51.11  #define OLSR_PORT_NUMBER 698
    52.1 --- a/utils/run-tests.cc	Tue Dec 30 11:35:31 2008 -0800
    52.2 +++ b/utils/run-tests.cc	Tue Jan 13 17:15:44 2009 -0500
    52.3 @@ -26,7 +26,8 @@
    52.4  int main (int argc, char *argv[])
    52.5  {
    52.6  #ifdef RUN_SELF_TESTS
    52.7 -  ns3::RandomVariable::UseGlobalSeed(1,2,3,4,5,6);
    52.8 +  uint32_t rngSeed[6] = {1,2,3,4,5,6};
    52.9 +  ns3::SeedManager::SetSeed(rngSeed);
   52.10    ns3::PacketMetadata::Enable ();
   52.11    ns3::TestManager::EnableVerbose ();
   52.12    bool success = ns3::TestManager::RunTests ();