Split contrib module into config-store and tools
authorMitch Watrous <watrous@u.washington.edu>
Thu, 24 Mar 2011 09:23:44 -0700
changeset 6941 9d2c79c992d7
parent 6940 afe2960e58b7
child 6942 3b9ce3a727a5
Split contrib module into config-store and tools
bindings/python/apidefs/gcc-ILP32/ns3_module_config_store.py
bindings/python/apidefs/gcc-ILP32/ns3_module_contrib.py
bindings/python/apidefs/gcc-ILP32/ns3_module_network.py
bindings/python/apidefs/gcc-ILP32/ns3_module_tools.py
bindings/python/apidefs/gcc-ILP32/ns3modulegen_generated.py
bindings/python/apidefs/gcc-LP64/ns3_module_config_store.py
bindings/python/apidefs/gcc-LP64/ns3_module_contrib.py
bindings/python/apidefs/gcc-LP64/ns3_module_network.py
bindings/python/apidefs/gcc-LP64/ns3_module_tools.py
bindings/python/apidefs/gcc-LP64/ns3modulegen_generated.py
doc/manual/source/attributes.rst
examples/energy/energy-model-example.cc
examples/wireless/mixed-wireless.cc
examples/wireless/multirate.cc
examples/wireless/wifi-adhoc.cc
examples/wireless/wifi-ap.cc
examples/wireless/wifi-clear-channel-cmu.cc
examples/wireless/wifi-simple-adhoc-grid.cc
examples/wireless/wifi-simple-adhoc.cc
examples/wireless/wifi-simple-infra.cc
examples/wireless/wifi-simple-interference.cc
examples/wireless/wscript
samples/wscript
src/applications/wscript
src/config-store/model/attribute-default-iterator.cc
src/config-store/model/attribute-default-iterator.h
src/config-store/model/attribute-iterator.cc
src/config-store/model/attribute-iterator.h
src/config-store/model/config-store.cc
src/config-store/model/config-store.h
src/config-store/model/display-functions.cc
src/config-store/model/display-functions.h
src/config-store/model/file-config.cc
src/config-store/model/file-config.h
src/config-store/model/gtk-config-store.cc
src/config-store/model/gtk-config-store.h
src/config-store/model/model-node-creator.cc
src/config-store/model/model-node-creator.h
src/config-store/model/model-typeid-creator.cc
src/config-store/model/model-typeid-creator.h
src/config-store/model/raw-text-config.cc
src/config-store/model/raw-text-config.h
src/config-store/model/xml-config.cc
src/config-store/model/xml-config.h
src/config-store/wscript
src/contrib/attribute-default-iterator.cc
src/contrib/attribute-default-iterator.h
src/contrib/attribute-iterator.cc
src/contrib/attribute-iterator.h
src/contrib/average.h
src/contrib/bindings/callbacks_list.py
src/contrib/bindings/modulegen__gcc_ILP32.py
src/contrib/bindings/modulegen__gcc_LP64.py
src/contrib/config-store.cc
src/contrib/config-store.h
src/contrib/contrib.h
src/contrib/delay-jitter-estimation.cc
src/contrib/delay-jitter-estimation.h
src/contrib/display-functions.cc
src/contrib/display-functions.h
src/contrib/event-garbage-collector.cc
src/contrib/event-garbage-collector.h
src/contrib/file-config.cc
src/contrib/file-config.h
src/contrib/flow-id-tag.cc
src/contrib/flow-id-tag.h
src/contrib/gnuplot.cc
src/contrib/gnuplot.h
src/contrib/gtk-config-store.cc
src/contrib/gtk-config-store.h
src/contrib/model-node-creator.cc
src/contrib/model-node-creator.h
src/contrib/model-typeid-creator.cc
src/contrib/model-typeid-creator.h
src/contrib/raw-text-config.cc
src/contrib/raw-text-config.h
src/contrib/test/examples-to-run.py
src/contrib/wscript
src/contrib/xml-config.cc
src/contrib/xml-config.h
src/dsdv/examples/dsdv-manet.cc
src/flow-monitor/wscript
src/lte/examples/lte-device.cc
src/lte/examples/lte-multiple-flows.cc
src/network/utils/flow-id-tag.cc
src/network/utils/flow-id-tag.h
src/network/wscript
src/olsr/examples/olsr-hna.cc
src/olsr/wscript
src/test/wscript
src/tools/model/average.h
src/tools/model/delay-jitter-estimation.cc
src/tools/model/delay-jitter-estimation.h
src/tools/model/event-garbage-collector.cc
src/tools/model/event-garbage-collector.h
src/tools/model/gnuplot.cc
src/tools/model/gnuplot.h
src/tools/wscript
src/uan/examples/uan-cw-example.cc
src/uan/examples/uan-cw-example.h
src/uan/examples/uan-rc-example.cc
src/uan/examples/uan-rc-example.h
src/uan/examples/wscript
src/uan/wscript
src/wimax/examples/wimax-ipv4.cc
src/wimax/examples/wimax-multicast.cc
src/wimax/examples/wimax-simple.cc
src/wscript
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_config_store.py	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,261 @@
+from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
+
+def register_types(module):
+    root_module = module.get_root()
+    
+    ## file-config.h: ns3::FileConfig [class]
+    module.add_class('FileConfig', allow_subclassing=True)
+    ## gtk-config-store.h: ns3::GtkConfigStore [class]
+    module.add_class('GtkConfigStore')
+    ## file-config.h: ns3::NoneFileConfig [class]
+    module.add_class('NoneFileConfig', parent=root_module['ns3::FileConfig'])
+    ## config-store.h: ns3::ConfigStore [class]
+    module.add_class('ConfigStore', parent=root_module['ns3::ObjectBase'])
+    ## config-store.h: ns3::ConfigStore::Mode [enumeration]
+    module.add_enum('Mode', ['LOAD', 'SAVE', 'NONE'], outer_class=root_module['ns3::ConfigStore'])
+    ## config-store.h: ns3::ConfigStore::FileFormat [enumeration]
+    module.add_enum('FileFormat', ['XML', 'RAW_TEXT'], outer_class=root_module['ns3::ConfigStore'])
+    
+    ## Register a nested module for the namespace Config
+    
+    nested_module = module.add_cpp_namespace('Config')
+    register_types_ns3_Config(nested_module)
+    
+    
+    ## Register a nested module for the namespace FatalImpl
+    
+    nested_module = module.add_cpp_namespace('FatalImpl')
+    register_types_ns3_FatalImpl(nested_module)
+    
+    
+    ## Register a nested module for the namespace addressUtils
+    
+    nested_module = module.add_cpp_namespace('addressUtils')
+    register_types_ns3_addressUtils(nested_module)
+    
+    
+    ## Register a nested module for the namespace aodv
+    
+    nested_module = module.add_cpp_namespace('aodv')
+    register_types_ns3_aodv(nested_module)
+    
+    
+    ## Register a nested module for the namespace dot11s
+    
+    nested_module = module.add_cpp_namespace('dot11s')
+    register_types_ns3_dot11s(nested_module)
+    
+    
+    ## Register a nested module for the namespace dsdv
+    
+    nested_module = module.add_cpp_namespace('dsdv')
+    register_types_ns3_dsdv(nested_module)
+    
+    
+    ## Register a nested module for the namespace flame
+    
+    nested_module = module.add_cpp_namespace('flame')
+    register_types_ns3_flame(nested_module)
+    
+    
+    ## Register a nested module for the namespace internal
+    
+    nested_module = module.add_cpp_namespace('internal')
+    register_types_ns3_internal(nested_module)
+    
+    
+    ## Register a nested module for the namespace olsr
+    
+    nested_module = module.add_cpp_namespace('olsr')
+    register_types_ns3_olsr(nested_module)
+    
+
+def register_types_ns3_Config(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_FatalImpl(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_addressUtils(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_aodv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dot11s(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dsdv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_flame(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_internal(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_olsr(module):
+    root_module = module.get_root()
+    
+
+def register_methods(root_module):
+    register_Ns3FileConfig_methods(root_module, root_module['ns3::FileConfig'])
+    register_Ns3GtkConfigStore_methods(root_module, root_module['ns3::GtkConfigStore'])
+    register_Ns3NoneFileConfig_methods(root_module, root_module['ns3::NoneFileConfig'])
+    register_Ns3ConfigStore_methods(root_module, root_module['ns3::ConfigStore'])
+    return
+
+def register_Ns3FileConfig_methods(root_module, cls):
+    ## file-config.h: ns3::FileConfig::FileConfig() [constructor]
+    cls.add_constructor([])
+    ## file-config.h: ns3::FileConfig::FileConfig(ns3::FileConfig const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::FileConfig const &', 'arg0')])
+    ## file-config.h: void ns3::FileConfig::Attributes() [member function]
+    cls.add_method('Attributes', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## file-config.h: void ns3::FileConfig::Default() [member function]
+    cls.add_method('Default', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## file-config.h: void ns3::FileConfig::Global() [member function]
+    cls.add_method('Global', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## file-config.h: void ns3::FileConfig::SetFilename(std::string filename) [member function]
+    cls.add_method('SetFilename', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3GtkConfigStore_methods(root_module, cls):
+    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore(ns3::GtkConfigStore const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::GtkConfigStore const &', 'arg0')])
+    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore() [constructor]
+    cls.add_constructor([])
+    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureAttributes() [member function]
+    cls.add_method('ConfigureAttributes', 
+                   'void', 
+                   [])
+    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureDefaults() [member function]
+    cls.add_method('ConfigureDefaults', 
+                   'void', 
+                   [])
+    return
+
+def register_Ns3NoneFileConfig_methods(root_module, cls):
+    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig(ns3::NoneFileConfig const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NoneFileConfig const &', 'arg0')])
+    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig() [constructor]
+    cls.add_constructor([])
+    ## file-config.h: void ns3::NoneFileConfig::Attributes() [member function]
+    cls.add_method('Attributes', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## file-config.h: void ns3::NoneFileConfig::Default() [member function]
+    cls.add_method('Default', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## file-config.h: void ns3::NoneFileConfig::Global() [member function]
+    cls.add_method('Global', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## file-config.h: void ns3::NoneFileConfig::SetFilename(std::string filename) [member function]
+    cls.add_method('SetFilename', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_virtual=True)
+    return
+
+def register_Ns3ConfigStore_methods(root_module, cls):
+    ## config-store.h: ns3::ConfigStore::ConfigStore(ns3::ConfigStore const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ConfigStore const &', 'arg0')])
+    ## config-store.h: ns3::ConfigStore::ConfigStore() [constructor]
+    cls.add_constructor([])
+    ## config-store.h: void ns3::ConfigStore::ConfigureAttributes() [member function]
+    cls.add_method('ConfigureAttributes', 
+                   'void', 
+                   [])
+    ## config-store.h: void ns3::ConfigStore::ConfigureDefaults() [member function]
+    cls.add_method('ConfigureDefaults', 
+                   'void', 
+                   [])
+    ## config-store.h: ns3::TypeId ns3::ConfigStore::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## config-store.h: static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## config-store.h: void ns3::ConfigStore::SetFileFormat(ns3::ConfigStore::FileFormat format) [member function]
+    cls.add_method('SetFileFormat', 
+                   'void', 
+                   [param('ns3::ConfigStore::FileFormat', 'format')])
+    ## config-store.h: void ns3::ConfigStore::SetFilename(std::string filename) [member function]
+    cls.add_method('SetFilename', 
+                   'void', 
+                   [param('std::string', 'filename')])
+    ## config-store.h: void ns3::ConfigStore::SetMode(ns3::ConfigStore::Mode mode) [member function]
+    cls.add_method('SetMode', 
+                   'void', 
+                   [param('ns3::ConfigStore::Mode', 'mode')])
+    return
+
+def register_functions(root_module):
+    module = root_module
+    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
+    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
+    register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
+    register_functions_ns3_aodv(module.get_submodule('aodv'), root_module)
+    register_functions_ns3_dot11s(module.get_submodule('dot11s'), root_module)
+    register_functions_ns3_dsdv(module.get_submodule('dsdv'), root_module)
+    register_functions_ns3_flame(module.get_submodule('flame'), root_module)
+    register_functions_ns3_internal(module.get_submodule('internal'), root_module)
+    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
+    return
+
+def register_functions_ns3_Config(module, root_module):
+    return
+
+def register_functions_ns3_FatalImpl(module, root_module):
+    return
+
+def register_functions_ns3_addressUtils(module, root_module):
+    return
+
+def register_functions_ns3_aodv(module, root_module):
+    return
+
+def register_functions_ns3_dot11s(module, root_module):
+    return
+
+def register_functions_ns3_dsdv(module, root_module):
+    return
+
+def register_functions_ns3_flame(module, root_module):
+    return
+
+def register_functions_ns3_internal(module, root_module):
+    return
+
+def register_functions_ns3_olsr(module, root_module):
+    return
+
--- a/bindings/python/apidefs/gcc-ILP32/ns3_module_contrib.py	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,626 +0,0 @@
-from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
-
-def register_types(module):
-    root_module = module.get_root()
-    
-    ## average.h: ns3::Average<double> [class]
-    module.add_class('Average', template_parameters=['double'])
-    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation [class]
-    module.add_class('DelayJitterEstimation')
-    ## event-garbage-collector.h: ns3::EventGarbageCollector [class]
-    module.add_class('EventGarbageCollector')
-    ## file-config.h: ns3::FileConfig [class]
-    module.add_class('FileConfig', allow_subclassing=True)
-    ## gnuplot.h: ns3::Gnuplot [class]
-    module.add_class('Gnuplot')
-    ## gnuplot.h: ns3::GnuplotCollection [class]
-    module.add_class('GnuplotCollection')
-    ## gnuplot.h: ns3::GnuplotDataset [class]
-    module.add_class('GnuplotDataset')
-    ## gtk-config-store.h: ns3::GtkConfigStore [class]
-    module.add_class('GtkConfigStore')
-    ## file-config.h: ns3::NoneFileConfig [class]
-    module.add_class('NoneFileConfig', parent=root_module['ns3::FileConfig'])
-    ## config-store.h: ns3::ConfigStore [class]
-    module.add_class('ConfigStore', parent=root_module['ns3::ObjectBase'])
-    ## config-store.h: ns3::ConfigStore::Mode [enumeration]
-    module.add_enum('Mode', ['LOAD', 'SAVE', 'NONE'], outer_class=root_module['ns3::ConfigStore'])
-    ## config-store.h: ns3::ConfigStore::FileFormat [enumeration]
-    module.add_enum('FileFormat', ['XML', 'RAW_TEXT'], outer_class=root_module['ns3::ConfigStore'])
-    ## flow-id-tag.h: ns3::FlowIdTag [class]
-    module.add_class('FlowIdTag', parent=root_module['ns3::Tag'])
-    ## gnuplot.h: ns3::Gnuplot2dDataset [class]
-    module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h: ns3::Gnuplot2dDataset::Style [enumeration]
-    module.add_enum('Style', ['LINES', 'POINTS', 'LINES_POINTS', 'DOTS', 'IMPULSES', 'STEPS', 'FSTEPS', 'HISTEPS'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h: ns3::Gnuplot2dDataset::ErrorBars [enumeration]
-    module.add_enum('ErrorBars', ['NONE', 'X', 'Y', 'XY'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h: ns3::Gnuplot2dFunction [class]
-    module.add_class('Gnuplot2dFunction', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h: ns3::Gnuplot3dDataset [class]
-    module.add_class('Gnuplot3dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h: ns3::Gnuplot3dFunction [class]
-    module.add_class('Gnuplot3dFunction', parent=root_module['ns3::GnuplotDataset'])
-    
-    ## Register a nested module for the namespace Config
-    
-    nested_module = module.add_cpp_namespace('Config')
-    register_types_ns3_Config(nested_module)
-    
-    
-    ## Register a nested module for the namespace FatalImpl
-    
-    nested_module = module.add_cpp_namespace('FatalImpl')
-    register_types_ns3_FatalImpl(nested_module)
-    
-    
-    ## Register a nested module for the namespace addressUtils
-    
-    nested_module = module.add_cpp_namespace('addressUtils')
-    register_types_ns3_addressUtils(nested_module)
-    
-    
-    ## Register a nested module for the namespace aodv
-    
-    nested_module = module.add_cpp_namespace('aodv')
-    register_types_ns3_aodv(nested_module)
-    
-    
-    ## Register a nested module for the namespace dot11s
-    
-    nested_module = module.add_cpp_namespace('dot11s')
-    register_types_ns3_dot11s(nested_module)
-    
-    
-    ## Register a nested module for the namespace dsdv
-    
-    nested_module = module.add_cpp_namespace('dsdv')
-    register_types_ns3_dsdv(nested_module)
-    
-    
-    ## Register a nested module for the namespace flame
-    
-    nested_module = module.add_cpp_namespace('flame')
-    register_types_ns3_flame(nested_module)
-    
-    
-    ## Register a nested module for the namespace internal
-    
-    nested_module = module.add_cpp_namespace('internal')
-    register_types_ns3_internal(nested_module)
-    
-    
-    ## Register a nested module for the namespace olsr
-    
-    nested_module = module.add_cpp_namespace('olsr')
-    register_types_ns3_olsr(nested_module)
-    
-
-def register_types_ns3_Config(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_FatalImpl(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_addressUtils(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_aodv(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_dot11s(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_dsdv(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_flame(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_internal(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_olsr(module):
-    root_module = module.get_root()
-    
-
-def register_methods(root_module):
-    register_Ns3Average__Double_methods(root_module, root_module['ns3::Average< double >'])
-    register_Ns3DelayJitterEstimation_methods(root_module, root_module['ns3::DelayJitterEstimation'])
-    register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
-    register_Ns3FileConfig_methods(root_module, root_module['ns3::FileConfig'])
-    register_Ns3Gnuplot_methods(root_module, root_module['ns3::Gnuplot'])
-    register_Ns3GnuplotCollection_methods(root_module, root_module['ns3::GnuplotCollection'])
-    register_Ns3GnuplotDataset_methods(root_module, root_module['ns3::GnuplotDataset'])
-    register_Ns3GtkConfigStore_methods(root_module, root_module['ns3::GtkConfigStore'])
-    register_Ns3NoneFileConfig_methods(root_module, root_module['ns3::NoneFileConfig'])
-    register_Ns3ConfigStore_methods(root_module, root_module['ns3::ConfigStore'])
-    register_Ns3FlowIdTag_methods(root_module, root_module['ns3::FlowIdTag'])
-    register_Ns3Gnuplot2dDataset_methods(root_module, root_module['ns3::Gnuplot2dDataset'])
-    register_Ns3Gnuplot2dFunction_methods(root_module, root_module['ns3::Gnuplot2dFunction'])
-    register_Ns3Gnuplot3dDataset_methods(root_module, root_module['ns3::Gnuplot3dDataset'])
-    register_Ns3Gnuplot3dFunction_methods(root_module, root_module['ns3::Gnuplot3dFunction'])
-    return
-
-def register_Ns3Average__Double_methods(root_module, cls):
-    ## average.h: ns3::Average<double>::Average(ns3::Average<double> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Average< double > const &', 'arg0')])
-    ## average.h: ns3::Average<double>::Average() [constructor]
-    cls.add_constructor([])
-    ## average.h: double ns3::Average<double>::Avg() const [member function]
-    cls.add_method('Avg', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: uint32_t ns3::Average<double>::Count() const [member function]
-    cls.add_method('Count', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Error90() const [member function]
-    cls.add_method('Error90', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Error95() const [member function]
-    cls.add_method('Error95', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Error99() const [member function]
-    cls.add_method('Error99', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Max() const [member function]
-    cls.add_method('Max', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Mean() const [member function]
-    cls.add_method('Mean', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Min() const [member function]
-    cls.add_method('Min', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: void ns3::Average<double>::Reset() [member function]
-    cls.add_method('Reset', 
-                   'void', 
-                   [])
-    ## average.h: double ns3::Average<double>::Stddev() const [member function]
-    cls.add_method('Stddev', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: void ns3::Average<double>::Update(double const & x) [member function]
-    cls.add_method('Update', 
-                   'void', 
-                   [param('double const &', 'x')])
-    ## average.h: double ns3::Average<double>::Var() const [member function]
-    cls.add_method('Var', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3DelayJitterEstimation_methods(root_module, cls):
-    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
-    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
-    cls.add_constructor([])
-    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastDelay() const [member function]
-    cls.add_method('GetLastDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastJitter() const [member function]
-    cls.add_method('GetLastJitter', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<ns3::Packet const> packet) [member function]
-    cls.add_method('PrepareTx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')], 
-                   is_static=True)
-    ## delay-jitter-estimation.h: void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr<ns3::Packet const> packet) [member function]
-    cls.add_method('RecordRx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
-    return
-
-def register_Ns3EventGarbageCollector_methods(root_module, cls):
-    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector(ns3::EventGarbageCollector const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventGarbageCollector const &', 'arg0')])
-    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
-    cls.add_constructor([])
-    ## event-garbage-collector.h: void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
-    cls.add_method('Track', 
-                   'void', 
-                   [param('ns3::EventId', 'event')])
-    return
-
-def register_Ns3FileConfig_methods(root_module, cls):
-    ## file-config.h: ns3::FileConfig::FileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h: ns3::FileConfig::FileConfig(ns3::FileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FileConfig const &', 'arg0')])
-    ## file-config.h: void ns3::FileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h: void ns3::FileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h: void ns3::FileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h: void ns3::FileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
-def register_Ns3Gnuplot_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot::Gnuplot(ns3::Gnuplot const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot::Gnuplot(std::string const & outputFilename="", std::string const & title="") [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename', default_value='""'), param('std::string const &', 'title', default_value='""')])
-    ## gnuplot.h: void ns3::Gnuplot::AddDataset(ns3::GnuplotDataset const & dataset) [member function]
-    cls.add_method('AddDataset', 
-                   'void', 
-                   [param('ns3::GnuplotDataset const &', 'dataset')])
-    ## gnuplot.h: void ns3::Gnuplot::AppendExtra(std::string const & extra) [member function]
-    cls.add_method('AppendExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h: static std::string ns3::Gnuplot::DetectTerminal(std::string const & filename) [member function]
-    cls.add_method('DetectTerminal', 
-                   'std::string', 
-                   [param('std::string const &', 'filename')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::Gnuplot::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h: void ns3::Gnuplot::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h: void ns3::Gnuplot::SetLegend(std::string const & xLegend, std::string const & yLegend) [member function]
-    cls.add_method('SetLegend', 
-                   'void', 
-                   [param('std::string const &', 'xLegend'), param('std::string const &', 'yLegend')])
-    ## gnuplot.h: void ns3::Gnuplot::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    ## gnuplot.h: void ns3::Gnuplot::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    return
-
-def register_Ns3GnuplotCollection_methods(root_module, cls):
-    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(ns3::GnuplotCollection const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotCollection const &', 'arg0')])
-    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(std::string const & outputFilename) [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename')])
-    ## gnuplot.h: void ns3::GnuplotCollection::AddPlot(ns3::Gnuplot const & plot) [member function]
-    cls.add_method('AddPlot', 
-                   'void', 
-                   [param('ns3::Gnuplot const &', 'plot')])
-    ## gnuplot.h: void ns3::GnuplotCollection::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h: ns3::Gnuplot & ns3::GnuplotCollection::GetPlot(unsigned int id) [member function]
-    cls.add_method('GetPlot', 
-                   'ns3::Gnuplot &', 
-                   [param('unsigned int', 'id')])
-    ## gnuplot.h: void ns3::GnuplotCollection::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    return
-
-def register_Ns3GnuplotDataset_methods(root_module, cls):
-    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset const & original) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset const &', 'original')])
-    ## gnuplot.h: static void ns3::GnuplotDataset::SetDefaultExtra(std::string const & extra) [member function]
-    cls.add_method('SetDefaultExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::GnuplotDataset::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h: void ns3::GnuplotDataset::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset::Data * data) [constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset::Data *', 'data')], 
-                        visibility='protected')
-    return
-
-def register_Ns3GtkConfigStore_methods(root_module, cls):
-    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore(ns3::GtkConfigStore const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::GtkConfigStore const &', 'arg0')])
-    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore() [constructor]
-    cls.add_constructor([])
-    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureAttributes() [member function]
-    cls.add_method('ConfigureAttributes', 
-                   'void', 
-                   [])
-    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureDefaults() [member function]
-    cls.add_method('ConfigureDefaults', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3NoneFileConfig_methods(root_module, cls):
-    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig(ns3::NoneFileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::NoneFileConfig const &', 'arg0')])
-    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h: void ns3::NoneFileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h: void ns3::NoneFileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h: void ns3::NoneFileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h: void ns3::NoneFileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_virtual=True)
-    return
-
-def register_Ns3ConfigStore_methods(root_module, cls):
-    ## config-store.h: ns3::ConfigStore::ConfigStore(ns3::ConfigStore const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ConfigStore const &', 'arg0')])
-    ## config-store.h: ns3::ConfigStore::ConfigStore() [constructor]
-    cls.add_constructor([])
-    ## config-store.h: void ns3::ConfigStore::ConfigureAttributes() [member function]
-    cls.add_method('ConfigureAttributes', 
-                   'void', 
-                   [])
-    ## config-store.h: void ns3::ConfigStore::ConfigureDefaults() [member function]
-    cls.add_method('ConfigureDefaults', 
-                   'void', 
-                   [])
-    ## config-store.h: ns3::TypeId ns3::ConfigStore::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## config-store.h: static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## config-store.h: void ns3::ConfigStore::SetFileFormat(ns3::ConfigStore::FileFormat format) [member function]
-    cls.add_method('SetFileFormat', 
-                   'void', 
-                   [param('ns3::ConfigStore::FileFormat', 'format')])
-    ## config-store.h: void ns3::ConfigStore::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')])
-    ## config-store.h: void ns3::ConfigStore::SetMode(ns3::ConfigStore::Mode mode) [member function]
-    cls.add_method('SetMode', 
-                   'void', 
-                   [param('ns3::ConfigStore::Mode', 'mode')])
-    return
-
-def register_Ns3FlowIdTag_methods(root_module, cls):
-    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(ns3::FlowIdTag const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FlowIdTag const &', 'arg0')])
-    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag() [constructor]
-    cls.add_constructor([])
-    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(uint32_t flowId) [constructor]
-    cls.add_constructor([param('uint32_t', 'flowId')])
-    ## flow-id-tag.h: static uint32_t ns3::FlowIdTag::AllocateFlowId() [member function]
-    cls.add_method('AllocateFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::Deserialize(ns3::TagBuffer buf) [member function]
-    cls.add_method('Deserialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_virtual=True)
-    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetFlowId() const [member function]
-    cls.add_method('GetFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## flow-id-tag.h: ns3::TypeId ns3::FlowIdTag::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: static ns3::TypeId ns3::FlowIdTag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::Serialize(ns3::TagBuffer buf) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::SetFlowId(uint32_t flowId) [member function]
-    cls.add_method('SetFlowId', 
-                   'void', 
-                   [param('uint32_t', 'flowId')])
-    return
-
-def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(ns3::Gnuplot2dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dDataset const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double errorDelta) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double minY, double maxY) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'minY'), param('double', 'maxY')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetDefaultErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')], 
-                   is_static=True)
-    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')])
-    return
-
-def register_Ns3Gnuplot2dFunction_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(ns3::Gnuplot2dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dFunction const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h: void ns3::Gnuplot2dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_Ns3Gnuplot3dDataset_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(ns3::Gnuplot3dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dDataset const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h: void ns3::Gnuplot3dDataset::Add(double x, double y, double z) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'z')])
-    ## gnuplot.h: void ns3::Gnuplot3dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h: static void ns3::Gnuplot3dDataset::SetDefaultStyle(std::string const & style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::Gnuplot3dDataset::SetStyle(std::string const & style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')])
-    return
-
-def register_Ns3Gnuplot3dFunction_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(ns3::Gnuplot3dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dFunction const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h: void ns3::Gnuplot3dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_functions(root_module):
-    module = root_module
-    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
-    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
-    register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
-    register_functions_ns3_aodv(module.get_submodule('aodv'), root_module)
-    register_functions_ns3_dot11s(module.get_submodule('dot11s'), root_module)
-    register_functions_ns3_dsdv(module.get_submodule('dsdv'), root_module)
-    register_functions_ns3_flame(module.get_submodule('flame'), root_module)
-    register_functions_ns3_internal(module.get_submodule('internal'), root_module)
-    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
-    return
-
-def register_functions_ns3_Config(module, root_module):
-    return
-
-def register_functions_ns3_FatalImpl(module, root_module):
-    return
-
-def register_functions_ns3_addressUtils(module, root_module):
-    return
-
-def register_functions_ns3_aodv(module, root_module):
-    return
-
-def register_functions_ns3_dot11s(module, root_module):
-    return
-
-def register_functions_ns3_dsdv(module, root_module):
-    return
-
-def register_functions_ns3_flame(module, root_module):
-    return
-
-def register_functions_ns3_internal(module, root_module):
-    return
-
-def register_functions_ns3_olsr(module, root_module):
-    return
-
--- a/bindings/python/apidefs/gcc-ILP32/ns3_module_network.py	Thu Mar 24 15:11:56 2011 +0100
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_network.py	Thu Mar 24 09:23:44 2011 -0700
@@ -113,6 +113,8 @@
     module.add_class('TagBuffer')
     ## chunk.h: ns3::Chunk [class]
     module.add_class('Chunk', parent=root_module['ns3::ObjectBase'])
+    ## flow-id-tag.h: ns3::FlowIdTag [class]
+    module.add_class('FlowIdTag', parent=root_module['ns3::Tag'])
     ## header.h: ns3::Header [class]
     module.add_class('Header', parent=root_module['ns3::Chunk'])
     ## llc-snap-header.h: ns3::LlcSnapHeader [class]
@@ -404,6 +406,7 @@
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
+    register_Ns3FlowIdTag_methods(root_module, root_module['ns3::FlowIdTag'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3LlcSnapHeader_methods(root_module, root_module['ns3::LlcSnapHeader'])
     register_Ns3PacketBurst_methods(root_module, root_module['ns3::PacketBurst'])
@@ -2579,6 +2582,59 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3FlowIdTag_methods(root_module, cls):
+    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(ns3::FlowIdTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::FlowIdTag const &', 'arg0')])
+    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag() [constructor]
+    cls.add_constructor([])
+    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(uint32_t flowId) [constructor]
+    cls.add_constructor([param('uint32_t', 'flowId')])
+    ## flow-id-tag.h: static uint32_t ns3::FlowIdTag::AllocateFlowId() [member function]
+    cls.add_method('AllocateFlowId', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::Deserialize(ns3::TagBuffer buf) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buf')], 
+                   is_virtual=True)
+    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetFlowId() const [member function]
+    cls.add_method('GetFlowId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## flow-id-tag.h: ns3::TypeId ns3::FlowIdTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: static ns3::TypeId ns3::FlowIdTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::Serialize(ns3::TagBuffer buf) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buf')], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::SetFlowId(uint32_t flowId) [member function]
+    cls.add_method('SetFlowId', 
+                   'void', 
+                   [param('uint32_t', 'flowId')])
+    return
+
 def register_Ns3Header_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## header.h: ns3::Header::Header() [constructor]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_tools.py	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,448 @@
+from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
+
+def register_types(module):
+    root_module = module.get_root()
+    
+    ## average.h: ns3::Average<double> [class]
+    module.add_class('Average', template_parameters=['double'])
+    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation [class]
+    module.add_class('DelayJitterEstimation')
+    ## event-garbage-collector.h: ns3::EventGarbageCollector [class]
+    module.add_class('EventGarbageCollector')
+    ## gnuplot.h: ns3::Gnuplot [class]
+    module.add_class('Gnuplot')
+    ## gnuplot.h: ns3::GnuplotCollection [class]
+    module.add_class('GnuplotCollection')
+    ## gnuplot.h: ns3::GnuplotDataset [class]
+    module.add_class('GnuplotDataset')
+    ## gnuplot.h: ns3::Gnuplot2dDataset [class]
+    module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
+    ## gnuplot.h: ns3::Gnuplot2dDataset::Style [enumeration]
+    module.add_enum('Style', ['LINES', 'POINTS', 'LINES_POINTS', 'DOTS', 'IMPULSES', 'STEPS', 'FSTEPS', 'HISTEPS'], outer_class=root_module['ns3::Gnuplot2dDataset'])
+    ## gnuplot.h: ns3::Gnuplot2dDataset::ErrorBars [enumeration]
+    module.add_enum('ErrorBars', ['NONE', 'X', 'Y', 'XY'], outer_class=root_module['ns3::Gnuplot2dDataset'])
+    ## gnuplot.h: ns3::Gnuplot2dFunction [class]
+    module.add_class('Gnuplot2dFunction', parent=root_module['ns3::GnuplotDataset'])
+    ## gnuplot.h: ns3::Gnuplot3dDataset [class]
+    module.add_class('Gnuplot3dDataset', parent=root_module['ns3::GnuplotDataset'])
+    ## gnuplot.h: ns3::Gnuplot3dFunction [class]
+    module.add_class('Gnuplot3dFunction', parent=root_module['ns3::GnuplotDataset'])
+    
+    ## Register a nested module for the namespace Config
+    
+    nested_module = module.add_cpp_namespace('Config')
+    register_types_ns3_Config(nested_module)
+    
+    
+    ## Register a nested module for the namespace FatalImpl
+    
+    nested_module = module.add_cpp_namespace('FatalImpl')
+    register_types_ns3_FatalImpl(nested_module)
+    
+    
+    ## Register a nested module for the namespace addressUtils
+    
+    nested_module = module.add_cpp_namespace('addressUtils')
+    register_types_ns3_addressUtils(nested_module)
+    
+    
+    ## Register a nested module for the namespace aodv
+    
+    nested_module = module.add_cpp_namespace('aodv')
+    register_types_ns3_aodv(nested_module)
+    
+    
+    ## Register a nested module for the namespace dot11s
+    
+    nested_module = module.add_cpp_namespace('dot11s')
+    register_types_ns3_dot11s(nested_module)
+    
+    
+    ## Register a nested module for the namespace dsdv
+    
+    nested_module = module.add_cpp_namespace('dsdv')
+    register_types_ns3_dsdv(nested_module)
+    
+    
+    ## Register a nested module for the namespace flame
+    
+    nested_module = module.add_cpp_namespace('flame')
+    register_types_ns3_flame(nested_module)
+    
+    
+    ## Register a nested module for the namespace internal
+    
+    nested_module = module.add_cpp_namespace('internal')
+    register_types_ns3_internal(nested_module)
+    
+    
+    ## Register a nested module for the namespace olsr
+    
+    nested_module = module.add_cpp_namespace('olsr')
+    register_types_ns3_olsr(nested_module)
+    
+
+def register_types_ns3_Config(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_FatalImpl(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_addressUtils(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_aodv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dot11s(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dsdv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_flame(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_internal(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_olsr(module):
+    root_module = module.get_root()
+    
+
+def register_methods(root_module):
+    register_Ns3Average__Double_methods(root_module, root_module['ns3::Average< double >'])
+    register_Ns3DelayJitterEstimation_methods(root_module, root_module['ns3::DelayJitterEstimation'])
+    register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
+    register_Ns3Gnuplot_methods(root_module, root_module['ns3::Gnuplot'])
+    register_Ns3GnuplotCollection_methods(root_module, root_module['ns3::GnuplotCollection'])
+    register_Ns3GnuplotDataset_methods(root_module, root_module['ns3::GnuplotDataset'])
+    register_Ns3Gnuplot2dDataset_methods(root_module, root_module['ns3::Gnuplot2dDataset'])
+    register_Ns3Gnuplot2dFunction_methods(root_module, root_module['ns3::Gnuplot2dFunction'])
+    register_Ns3Gnuplot3dDataset_methods(root_module, root_module['ns3::Gnuplot3dDataset'])
+    register_Ns3Gnuplot3dFunction_methods(root_module, root_module['ns3::Gnuplot3dFunction'])
+    return
+
+def register_Ns3Average__Double_methods(root_module, cls):
+    ## average.h: ns3::Average<double>::Average(ns3::Average<double> const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Average< double > const &', 'arg0')])
+    ## average.h: ns3::Average<double>::Average() [constructor]
+    cls.add_constructor([])
+    ## average.h: double ns3::Average<double>::Avg() const [member function]
+    cls.add_method('Avg', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: uint32_t ns3::Average<double>::Count() const [member function]
+    cls.add_method('Count', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Error90() const [member function]
+    cls.add_method('Error90', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Error95() const [member function]
+    cls.add_method('Error95', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Error99() const [member function]
+    cls.add_method('Error99', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Max() const [member function]
+    cls.add_method('Max', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Mean() const [member function]
+    cls.add_method('Mean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Min() const [member function]
+    cls.add_method('Min', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: void ns3::Average<double>::Reset() [member function]
+    cls.add_method('Reset', 
+                   'void', 
+                   [])
+    ## average.h: double ns3::Average<double>::Stddev() const [member function]
+    cls.add_method('Stddev', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: void ns3::Average<double>::Update(double const & x) [member function]
+    cls.add_method('Update', 
+                   'void', 
+                   [param('double const &', 'x')])
+    ## average.h: double ns3::Average<double>::Var() const [member function]
+    cls.add_method('Var', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3DelayJitterEstimation_methods(root_module, cls):
+    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
+    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
+    cls.add_constructor([])
+    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastDelay() const [member function]
+    cls.add_method('GetLastDelay', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastJitter() const [member function]
+    cls.add_method('GetLastJitter', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<ns3::Packet const> packet) [member function]
+    cls.add_method('PrepareTx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet')], 
+                   is_static=True)
+    ## delay-jitter-estimation.h: void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr<ns3::Packet const> packet) [member function]
+    cls.add_method('RecordRx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    return
+
+def register_Ns3EventGarbageCollector_methods(root_module, cls):
+    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector(ns3::EventGarbageCollector const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EventGarbageCollector const &', 'arg0')])
+    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
+    cls.add_constructor([])
+    ## event-garbage-collector.h: void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
+    cls.add_method('Track', 
+                   'void', 
+                   [param('ns3::EventId', 'event')])
+    return
+
+def register_Ns3Gnuplot_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot::Gnuplot(ns3::Gnuplot const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot::Gnuplot(std::string const & outputFilename="", std::string const & title="") [constructor]
+    cls.add_constructor([param('std::string const &', 'outputFilename', default_value='""'), param('std::string const &', 'title', default_value='""')])
+    ## gnuplot.h: void ns3::Gnuplot::AddDataset(ns3::GnuplotDataset const & dataset) [member function]
+    cls.add_method('AddDataset', 
+                   'void', 
+                   [param('ns3::GnuplotDataset const &', 'dataset')])
+    ## gnuplot.h: void ns3::Gnuplot::AppendExtra(std::string const & extra) [member function]
+    cls.add_method('AppendExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')])
+    ## gnuplot.h: static std::string ns3::Gnuplot::DetectTerminal(std::string const & filename) [member function]
+    cls.add_method('DetectTerminal', 
+                   'std::string', 
+                   [param('std::string const &', 'filename')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::Gnuplot::GenerateOutput(std::ostream & os) const [member function]
+    cls.add_method('GenerateOutput', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## gnuplot.h: void ns3::Gnuplot::SetExtra(std::string const & extra) [member function]
+    cls.add_method('SetExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')])
+    ## gnuplot.h: void ns3::Gnuplot::SetLegend(std::string const & xLegend, std::string const & yLegend) [member function]
+    cls.add_method('SetLegend', 
+                   'void', 
+                   [param('std::string const &', 'xLegend'), param('std::string const &', 'yLegend')])
+    ## gnuplot.h: void ns3::Gnuplot::SetTerminal(std::string const & terminal) [member function]
+    cls.add_method('SetTerminal', 
+                   'void', 
+                   [param('std::string const &', 'terminal')])
+    ## gnuplot.h: void ns3::Gnuplot::SetTitle(std::string const & title) [member function]
+    cls.add_method('SetTitle', 
+                   'void', 
+                   [param('std::string const &', 'title')])
+    return
+
+def register_Ns3GnuplotCollection_methods(root_module, cls):
+    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(ns3::GnuplotCollection const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::GnuplotCollection const &', 'arg0')])
+    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(std::string const & outputFilename) [constructor]
+    cls.add_constructor([param('std::string const &', 'outputFilename')])
+    ## gnuplot.h: void ns3::GnuplotCollection::AddPlot(ns3::Gnuplot const & plot) [member function]
+    cls.add_method('AddPlot', 
+                   'void', 
+                   [param('ns3::Gnuplot const &', 'plot')])
+    ## gnuplot.h: void ns3::GnuplotCollection::GenerateOutput(std::ostream & os) const [member function]
+    cls.add_method('GenerateOutput', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## gnuplot.h: ns3::Gnuplot & ns3::GnuplotCollection::GetPlot(unsigned int id) [member function]
+    cls.add_method('GetPlot', 
+                   'ns3::Gnuplot &', 
+                   [param('unsigned int', 'id')])
+    ## gnuplot.h: void ns3::GnuplotCollection::SetTerminal(std::string const & terminal) [member function]
+    cls.add_method('SetTerminal', 
+                   'void', 
+                   [param('std::string const &', 'terminal')])
+    return
+
+def register_Ns3GnuplotDataset_methods(root_module, cls):
+    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset const & original) [copy constructor]
+    cls.add_constructor([param('ns3::GnuplotDataset const &', 'original')])
+    ## gnuplot.h: static void ns3::GnuplotDataset::SetDefaultExtra(std::string const & extra) [member function]
+    cls.add_method('SetDefaultExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::GnuplotDataset::SetExtra(std::string const & extra) [member function]
+    cls.add_method('SetExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')])
+    ## gnuplot.h: void ns3::GnuplotDataset::SetTitle(std::string const & title) [member function]
+    cls.add_method('SetTitle', 
+                   'void', 
+                   [param('std::string const &', 'title')])
+    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset::Data * data) [constructor]
+    cls.add_constructor([param('ns3::GnuplotDataset::Data *', 'data')], 
+                        visibility='protected')
+    return
+
+def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(ns3::Gnuplot2dDataset const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot2dDataset const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(std::string const & title="Untitled") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double errorDelta) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double minY, double maxY) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y'), param('double', 'minY'), param('double', 'maxY')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::AddEmptyLine() [member function]
+    cls.add_method('AddEmptyLine', 
+                   'void', 
+                   [])
+    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
+    cls.add_method('SetDefaultErrorBars', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')], 
+                   is_static=True)
+    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultStyle(ns3::Gnuplot2dDataset::Style style) [member function]
+    cls.add_method('SetDefaultStyle', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::Style', 'style')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
+    cls.add_method('SetErrorBars', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetStyle(ns3::Gnuplot2dDataset::Style style) [member function]
+    cls.add_method('SetStyle', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::Style', 'style')])
+    return
+
+def register_Ns3Gnuplot2dFunction_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(ns3::Gnuplot2dFunction const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot2dFunction const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
+    ## gnuplot.h: void ns3::Gnuplot2dFunction::SetFunction(std::string const & function) [member function]
+    cls.add_method('SetFunction', 
+                   'void', 
+                   [param('std::string const &', 'function')])
+    return
+
+def register_Ns3Gnuplot3dDataset_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(ns3::Gnuplot3dDataset const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot3dDataset const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(std::string const & title="Untitled") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
+    ## gnuplot.h: void ns3::Gnuplot3dDataset::Add(double x, double y, double z) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y'), param('double', 'z')])
+    ## gnuplot.h: void ns3::Gnuplot3dDataset::AddEmptyLine() [member function]
+    cls.add_method('AddEmptyLine', 
+                   'void', 
+                   [])
+    ## gnuplot.h: static void ns3::Gnuplot3dDataset::SetDefaultStyle(std::string const & style) [member function]
+    cls.add_method('SetDefaultStyle', 
+                   'void', 
+                   [param('std::string const &', 'style')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::Gnuplot3dDataset::SetStyle(std::string const & style) [member function]
+    cls.add_method('SetStyle', 
+                   'void', 
+                   [param('std::string const &', 'style')])
+    return
+
+def register_Ns3Gnuplot3dFunction_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(ns3::Gnuplot3dFunction const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot3dFunction const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
+    ## gnuplot.h: void ns3::Gnuplot3dFunction::SetFunction(std::string const & function) [member function]
+    cls.add_method('SetFunction', 
+                   'void', 
+                   [param('std::string const &', 'function')])
+    return
+
+def register_functions(root_module):
+    module = root_module
+    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
+    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
+    register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
+    register_functions_ns3_aodv(module.get_submodule('aodv'), root_module)
+    register_functions_ns3_dot11s(module.get_submodule('dot11s'), root_module)
+    register_functions_ns3_dsdv(module.get_submodule('dsdv'), root_module)
+    register_functions_ns3_flame(module.get_submodule('flame'), root_module)
+    register_functions_ns3_internal(module.get_submodule('internal'), root_module)
+    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
+    return
+
+def register_functions_ns3_Config(module, root_module):
+    return
+
+def register_functions_ns3_FatalImpl(module, root_module):
+    return
+
+def register_functions_ns3_addressUtils(module, root_module):
+    return
+
+def register_functions_ns3_aodv(module, root_module):
+    return
+
+def register_functions_ns3_dot11s(module, root_module):
+    return
+
+def register_functions_ns3_dsdv(module, root_module):
+    return
+
+def register_functions_ns3_flame(module, root_module):
+    return
+
+def register_functions_ns3_internal(module, root_module):
+    return
+
+def register_functions_ns3_olsr(module, root_module):
+    return
+
--- a/bindings/python/apidefs/gcc-ILP32/ns3modulegen_generated.py	Thu Mar 24 15:11:56 2011 +0100
+++ b/bindings/python/apidefs/gcc-ILP32/ns3modulegen_generated.py	Thu Mar 24 09:23:44 2011 -0700
@@ -17,20 +17,21 @@
 import ns3_module_network
 import ns3_module_visualizer
 import ns3_module_bridge
-import ns3_module_contrib
+import ns3_module_config_store
 import ns3_module_emu
 import ns3_module_mobility
 import ns3_module_mpi
 import ns3_module_network_test
 import ns3_module_stats
+import ns3_module_tools
 import ns3_module_topology_read
 import ns3_module_propagation
 import ns3_module_internet
 import ns3_module_point_to_point
+import ns3_module_flow_monitor
 import ns3_module_wifi
 import ns3_module_applications
 import ns3_module_click
-import ns3_module_flow_monitor
 import ns3_module_nix_vector_routing
 import ns3_module_openflow
 import ns3_module_tap_bridge
@@ -114,17 +115,17 @@
         ns3_module_bridge__local.register_types(module)
     
     root_module.end_section('ns3_module_bridge')
-    root_module.begin_section('ns3_module_contrib')
-    ns3_module_contrib.register_types(module)
+    root_module.begin_section('ns3_module_config_store')
+    ns3_module_config_store.register_types(module)
     
     try:
-        import ns3_module_contrib__local
+        import ns3_module_config_store__local
     except ImportError:
         pass
     else:
-        ns3_module_contrib__local.register_types(module)
+        ns3_module_config_store__local.register_types(module)
     
-    root_module.end_section('ns3_module_contrib')
+    root_module.end_section('ns3_module_config_store')
     root_module.begin_section('ns3_module_emu')
     ns3_module_emu.register_types(module)
     
@@ -180,6 +181,17 @@
         ns3_module_stats__local.register_types(module)
     
     root_module.end_section('ns3_module_stats')
+    root_module.begin_section('ns3_module_tools')
+    ns3_module_tools.register_types(module)
+    
+    try:
+        import ns3_module_tools__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_tools__local.register_types(module)
+    
+    root_module.end_section('ns3_module_tools')
     root_module.begin_section('ns3_module_topology_read')
     ns3_module_topology_read.register_types(module)
     
@@ -224,6 +236,17 @@
         ns3_module_point_to_point__local.register_types(module)
     
     root_module.end_section('ns3_module_point_to_point')
+    root_module.begin_section('ns3_module_flow_monitor')
+    ns3_module_flow_monitor.register_types(module)
+    
+    try:
+        import ns3_module_flow_monitor__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_flow_monitor__local.register_types(module)
+    
+    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_wifi')
     ns3_module_wifi.register_types(module)
     
@@ -257,17 +280,6 @@
         ns3_module_click__local.register_types(module)
     
     root_module.end_section('ns3_module_click')
-    root_module.begin_section('ns3_module_flow_monitor')
-    ns3_module_flow_monitor.register_types(module)
-    
-    try:
-        import ns3_module_flow_monitor__local
-    except ImportError:
-        pass
-    else:
-        ns3_module_flow_monitor__local.register_types(module)
-    
-    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_nix_vector_routing')
     ns3_module_nix_vector_routing.register_types(module)
     
@@ -656,17 +668,17 @@
         ns3_module_bridge__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_bridge')
-    root_module.begin_section('ns3_module_contrib')
-    ns3_module_contrib.register_methods(root_module)
+    root_module.begin_section('ns3_module_config_store')
+    ns3_module_config_store.register_methods(root_module)
     
     try:
-        import ns3_module_contrib__local
+        import ns3_module_config_store__local
     except ImportError:
         pass
     else:
-        ns3_module_contrib__local.register_methods(root_module)
+        ns3_module_config_store__local.register_methods(root_module)
     
-    root_module.end_section('ns3_module_contrib')
+    root_module.end_section('ns3_module_config_store')
     root_module.begin_section('ns3_module_emu')
     ns3_module_emu.register_methods(root_module)
     
@@ -722,6 +734,17 @@
         ns3_module_stats__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_stats')
+    root_module.begin_section('ns3_module_tools')
+    ns3_module_tools.register_methods(root_module)
+    
+    try:
+        import ns3_module_tools__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_tools__local.register_methods(root_module)
+    
+    root_module.end_section('ns3_module_tools')
     root_module.begin_section('ns3_module_topology_read')
     ns3_module_topology_read.register_methods(root_module)
     
@@ -766,6 +789,17 @@
         ns3_module_point_to_point__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_point_to_point')
+    root_module.begin_section('ns3_module_flow_monitor')
+    ns3_module_flow_monitor.register_methods(root_module)
+    
+    try:
+        import ns3_module_flow_monitor__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_flow_monitor__local.register_methods(root_module)
+    
+    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_wifi')
     ns3_module_wifi.register_methods(root_module)
     
@@ -799,17 +833,6 @@
         ns3_module_click__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_click')
-    root_module.begin_section('ns3_module_flow_monitor')
-    ns3_module_flow_monitor.register_methods(root_module)
-    
-    try:
-        import ns3_module_flow_monitor__local
-    except ImportError:
-        pass
-    else:
-        ns3_module_flow_monitor__local.register_methods(root_module)
-    
-    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_nix_vector_routing')
     ns3_module_nix_vector_routing.register_methods(root_module)
     
@@ -1089,17 +1112,17 @@
         ns3_module_bridge__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_bridge')
-    root_module.begin_section('ns3_module_contrib')
-    ns3_module_contrib.register_functions(root_module)
+    root_module.begin_section('ns3_module_config_store')
+    ns3_module_config_store.register_functions(root_module)
     
     try:
-        import ns3_module_contrib__local
+        import ns3_module_config_store__local
     except ImportError:
         pass
     else:
-        ns3_module_contrib__local.register_functions(root_module)
+        ns3_module_config_store__local.register_functions(root_module)
     
-    root_module.end_section('ns3_module_contrib')
+    root_module.end_section('ns3_module_config_store')
     root_module.begin_section('ns3_module_emu')
     ns3_module_emu.register_functions(root_module)
     
@@ -1155,6 +1178,17 @@
         ns3_module_stats__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_stats')
+    root_module.begin_section('ns3_module_tools')
+    ns3_module_tools.register_functions(root_module)
+    
+    try:
+        import ns3_module_tools__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_tools__local.register_functions(root_module)
+    
+    root_module.end_section('ns3_module_tools')
     root_module.begin_section('ns3_module_topology_read')
     ns3_module_topology_read.register_functions(root_module)
     
@@ -1199,6 +1233,17 @@
         ns3_module_point_to_point__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_point_to_point')
+    root_module.begin_section('ns3_module_flow_monitor')
+    ns3_module_flow_monitor.register_functions(root_module)
+    
+    try:
+        import ns3_module_flow_monitor__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_flow_monitor__local.register_functions(root_module)
+    
+    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_wifi')
     ns3_module_wifi.register_functions(root_module)
     
@@ -1232,17 +1277,6 @@
         ns3_module_click__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_click')
-    root_module.begin_section('ns3_module_flow_monitor')
-    ns3_module_flow_monitor.register_functions(root_module)
-    
-    try:
-        import ns3_module_flow_monitor__local
-    except ImportError:
-        pass
-    else:
-        ns3_module_flow_monitor__local.register_functions(root_module)
-    
-    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_nix_vector_routing')
     ns3_module_nix_vector_routing.register_functions(root_module)
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bindings/python/apidefs/gcc-LP64/ns3_module_config_store.py	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,261 @@
+from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
+
+def register_types(module):
+    root_module = module.get_root()
+    
+    ## file-config.h: ns3::FileConfig [class]
+    module.add_class('FileConfig', allow_subclassing=True)
+    ## gtk-config-store.h: ns3::GtkConfigStore [class]
+    module.add_class('GtkConfigStore')
+    ## file-config.h: ns3::NoneFileConfig [class]
+    module.add_class('NoneFileConfig', parent=root_module['ns3::FileConfig'])
+    ## config-store.h: ns3::ConfigStore [class]
+    module.add_class('ConfigStore', parent=root_module['ns3::ObjectBase'])
+    ## config-store.h: ns3::ConfigStore::Mode [enumeration]
+    module.add_enum('Mode', ['LOAD', 'SAVE', 'NONE'], outer_class=root_module['ns3::ConfigStore'])
+    ## config-store.h: ns3::ConfigStore::FileFormat [enumeration]
+    module.add_enum('FileFormat', ['XML', 'RAW_TEXT'], outer_class=root_module['ns3::ConfigStore'])
+    
+    ## Register a nested module for the namespace Config
+    
+    nested_module = module.add_cpp_namespace('Config')
+    register_types_ns3_Config(nested_module)
+    
+    
+    ## Register a nested module for the namespace FatalImpl
+    
+    nested_module = module.add_cpp_namespace('FatalImpl')
+    register_types_ns3_FatalImpl(nested_module)
+    
+    
+    ## Register a nested module for the namespace addressUtils
+    
+    nested_module = module.add_cpp_namespace('addressUtils')
+    register_types_ns3_addressUtils(nested_module)
+    
+    
+    ## Register a nested module for the namespace aodv
+    
+    nested_module = module.add_cpp_namespace('aodv')
+    register_types_ns3_aodv(nested_module)
+    
+    
+    ## Register a nested module for the namespace dot11s
+    
+    nested_module = module.add_cpp_namespace('dot11s')
+    register_types_ns3_dot11s(nested_module)
+    
+    
+    ## Register a nested module for the namespace dsdv
+    
+    nested_module = module.add_cpp_namespace('dsdv')
+    register_types_ns3_dsdv(nested_module)
+    
+    
+    ## Register a nested module for the namespace flame
+    
+    nested_module = module.add_cpp_namespace('flame')
+    register_types_ns3_flame(nested_module)
+    
+    
+    ## Register a nested module for the namespace internal
+    
+    nested_module = module.add_cpp_namespace('internal')
+    register_types_ns3_internal(nested_module)
+    
+    
+    ## Register a nested module for the namespace olsr
+    
+    nested_module = module.add_cpp_namespace('olsr')
+    register_types_ns3_olsr(nested_module)
+    
+
+def register_types_ns3_Config(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_FatalImpl(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_addressUtils(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_aodv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dot11s(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dsdv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_flame(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_internal(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_olsr(module):
+    root_module = module.get_root()
+    
+
+def register_methods(root_module):
+    register_Ns3FileConfig_methods(root_module, root_module['ns3::FileConfig'])
+    register_Ns3GtkConfigStore_methods(root_module, root_module['ns3::GtkConfigStore'])
+    register_Ns3NoneFileConfig_methods(root_module, root_module['ns3::NoneFileConfig'])
+    register_Ns3ConfigStore_methods(root_module, root_module['ns3::ConfigStore'])
+    return
+
+def register_Ns3FileConfig_methods(root_module, cls):
+    ## file-config.h: ns3::FileConfig::FileConfig() [constructor]
+    cls.add_constructor([])
+    ## file-config.h: ns3::FileConfig::FileConfig(ns3::FileConfig const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::FileConfig const &', 'arg0')])
+    ## file-config.h: void ns3::FileConfig::Attributes() [member function]
+    cls.add_method('Attributes', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## file-config.h: void ns3::FileConfig::Default() [member function]
+    cls.add_method('Default', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## file-config.h: void ns3::FileConfig::Global() [member function]
+    cls.add_method('Global', 
+                   'void', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## file-config.h: void ns3::FileConfig::SetFilename(std::string filename) [member function]
+    cls.add_method('SetFilename', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3GtkConfigStore_methods(root_module, cls):
+    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore(ns3::GtkConfigStore const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::GtkConfigStore const &', 'arg0')])
+    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore() [constructor]
+    cls.add_constructor([])
+    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureAttributes() [member function]
+    cls.add_method('ConfigureAttributes', 
+                   'void', 
+                   [])
+    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureDefaults() [member function]
+    cls.add_method('ConfigureDefaults', 
+                   'void', 
+                   [])
+    return
+
+def register_Ns3NoneFileConfig_methods(root_module, cls):
+    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig(ns3::NoneFileConfig const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::NoneFileConfig const &', 'arg0')])
+    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig() [constructor]
+    cls.add_constructor([])
+    ## file-config.h: void ns3::NoneFileConfig::Attributes() [member function]
+    cls.add_method('Attributes', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## file-config.h: void ns3::NoneFileConfig::Default() [member function]
+    cls.add_method('Default', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## file-config.h: void ns3::NoneFileConfig::Global() [member function]
+    cls.add_method('Global', 
+                   'void', 
+                   [], 
+                   is_virtual=True)
+    ## file-config.h: void ns3::NoneFileConfig::SetFilename(std::string filename) [member function]
+    cls.add_method('SetFilename', 
+                   'void', 
+                   [param('std::string', 'filename')], 
+                   is_virtual=True)
+    return
+
+def register_Ns3ConfigStore_methods(root_module, cls):
+    ## config-store.h: ns3::ConfigStore::ConfigStore(ns3::ConfigStore const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::ConfigStore const &', 'arg0')])
+    ## config-store.h: ns3::ConfigStore::ConfigStore() [constructor]
+    cls.add_constructor([])
+    ## config-store.h: void ns3::ConfigStore::ConfigureAttributes() [member function]
+    cls.add_method('ConfigureAttributes', 
+                   'void', 
+                   [])
+    ## config-store.h: void ns3::ConfigStore::ConfigureDefaults() [member function]
+    cls.add_method('ConfigureDefaults', 
+                   'void', 
+                   [])
+    ## config-store.h: ns3::TypeId ns3::ConfigStore::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## config-store.h: static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## config-store.h: void ns3::ConfigStore::SetFileFormat(ns3::ConfigStore::FileFormat format) [member function]
+    cls.add_method('SetFileFormat', 
+                   'void', 
+                   [param('ns3::ConfigStore::FileFormat', 'format')])
+    ## config-store.h: void ns3::ConfigStore::SetFilename(std::string filename) [member function]
+    cls.add_method('SetFilename', 
+                   'void', 
+                   [param('std::string', 'filename')])
+    ## config-store.h: void ns3::ConfigStore::SetMode(ns3::ConfigStore::Mode mode) [member function]
+    cls.add_method('SetMode', 
+                   'void', 
+                   [param('ns3::ConfigStore::Mode', 'mode')])
+    return
+
+def register_functions(root_module):
+    module = root_module
+    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
+    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
+    register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
+    register_functions_ns3_aodv(module.get_submodule('aodv'), root_module)
+    register_functions_ns3_dot11s(module.get_submodule('dot11s'), root_module)
+    register_functions_ns3_dsdv(module.get_submodule('dsdv'), root_module)
+    register_functions_ns3_flame(module.get_submodule('flame'), root_module)
+    register_functions_ns3_internal(module.get_submodule('internal'), root_module)
+    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
+    return
+
+def register_functions_ns3_Config(module, root_module):
+    return
+
+def register_functions_ns3_FatalImpl(module, root_module):
+    return
+
+def register_functions_ns3_addressUtils(module, root_module):
+    return
+
+def register_functions_ns3_aodv(module, root_module):
+    return
+
+def register_functions_ns3_dot11s(module, root_module):
+    return
+
+def register_functions_ns3_dsdv(module, root_module):
+    return
+
+def register_functions_ns3_flame(module, root_module):
+    return
+
+def register_functions_ns3_internal(module, root_module):
+    return
+
+def register_functions_ns3_olsr(module, root_module):
+    return
+
--- a/bindings/python/apidefs/gcc-LP64/ns3_module_contrib.py	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,626 +0,0 @@
-from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
-
-def register_types(module):
-    root_module = module.get_root()
-    
-    ## average.h: ns3::Average<double> [class]
-    module.add_class('Average', template_parameters=['double'])
-    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation [class]
-    module.add_class('DelayJitterEstimation')
-    ## event-garbage-collector.h: ns3::EventGarbageCollector [class]
-    module.add_class('EventGarbageCollector')
-    ## file-config.h: ns3::FileConfig [class]
-    module.add_class('FileConfig', allow_subclassing=True)
-    ## gnuplot.h: ns3::Gnuplot [class]
-    module.add_class('Gnuplot')
-    ## gnuplot.h: ns3::GnuplotCollection [class]
-    module.add_class('GnuplotCollection')
-    ## gnuplot.h: ns3::GnuplotDataset [class]
-    module.add_class('GnuplotDataset')
-    ## gtk-config-store.h: ns3::GtkConfigStore [class]
-    module.add_class('GtkConfigStore')
-    ## file-config.h: ns3::NoneFileConfig [class]
-    module.add_class('NoneFileConfig', parent=root_module['ns3::FileConfig'])
-    ## config-store.h: ns3::ConfigStore [class]
-    module.add_class('ConfigStore', parent=root_module['ns3::ObjectBase'])
-    ## config-store.h: ns3::ConfigStore::Mode [enumeration]
-    module.add_enum('Mode', ['LOAD', 'SAVE', 'NONE'], outer_class=root_module['ns3::ConfigStore'])
-    ## config-store.h: ns3::ConfigStore::FileFormat [enumeration]
-    module.add_enum('FileFormat', ['XML', 'RAW_TEXT'], outer_class=root_module['ns3::ConfigStore'])
-    ## flow-id-tag.h: ns3::FlowIdTag [class]
-    module.add_class('FlowIdTag', parent=root_module['ns3::Tag'])
-    ## gnuplot.h: ns3::Gnuplot2dDataset [class]
-    module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h: ns3::Gnuplot2dDataset::Style [enumeration]
-    module.add_enum('Style', ['LINES', 'POINTS', 'LINES_POINTS', 'DOTS', 'IMPULSES', 'STEPS', 'FSTEPS', 'HISTEPS'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h: ns3::Gnuplot2dDataset::ErrorBars [enumeration]
-    module.add_enum('ErrorBars', ['NONE', 'X', 'Y', 'XY'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h: ns3::Gnuplot2dFunction [class]
-    module.add_class('Gnuplot2dFunction', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h: ns3::Gnuplot3dDataset [class]
-    module.add_class('Gnuplot3dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h: ns3::Gnuplot3dFunction [class]
-    module.add_class('Gnuplot3dFunction', parent=root_module['ns3::GnuplotDataset'])
-    
-    ## Register a nested module for the namespace Config
-    
-    nested_module = module.add_cpp_namespace('Config')
-    register_types_ns3_Config(nested_module)
-    
-    
-    ## Register a nested module for the namespace FatalImpl
-    
-    nested_module = module.add_cpp_namespace('FatalImpl')
-    register_types_ns3_FatalImpl(nested_module)
-    
-    
-    ## Register a nested module for the namespace addressUtils
-    
-    nested_module = module.add_cpp_namespace('addressUtils')
-    register_types_ns3_addressUtils(nested_module)
-    
-    
-    ## Register a nested module for the namespace aodv
-    
-    nested_module = module.add_cpp_namespace('aodv')
-    register_types_ns3_aodv(nested_module)
-    
-    
-    ## Register a nested module for the namespace dot11s
-    
-    nested_module = module.add_cpp_namespace('dot11s')
-    register_types_ns3_dot11s(nested_module)
-    
-    
-    ## Register a nested module for the namespace dsdv
-    
-    nested_module = module.add_cpp_namespace('dsdv')
-    register_types_ns3_dsdv(nested_module)
-    
-    
-    ## Register a nested module for the namespace flame
-    
-    nested_module = module.add_cpp_namespace('flame')
-    register_types_ns3_flame(nested_module)
-    
-    
-    ## Register a nested module for the namespace internal
-    
-    nested_module = module.add_cpp_namespace('internal')
-    register_types_ns3_internal(nested_module)
-    
-    
-    ## Register a nested module for the namespace olsr
-    
-    nested_module = module.add_cpp_namespace('olsr')
-    register_types_ns3_olsr(nested_module)
-    
-
-def register_types_ns3_Config(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_FatalImpl(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_addressUtils(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_aodv(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_dot11s(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_dsdv(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_flame(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_internal(module):
-    root_module = module.get_root()
-    
-
-def register_types_ns3_olsr(module):
-    root_module = module.get_root()
-    
-
-def register_methods(root_module):
-    register_Ns3Average__Double_methods(root_module, root_module['ns3::Average< double >'])
-    register_Ns3DelayJitterEstimation_methods(root_module, root_module['ns3::DelayJitterEstimation'])
-    register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
-    register_Ns3FileConfig_methods(root_module, root_module['ns3::FileConfig'])
-    register_Ns3Gnuplot_methods(root_module, root_module['ns3::Gnuplot'])
-    register_Ns3GnuplotCollection_methods(root_module, root_module['ns3::GnuplotCollection'])
-    register_Ns3GnuplotDataset_methods(root_module, root_module['ns3::GnuplotDataset'])
-    register_Ns3GtkConfigStore_methods(root_module, root_module['ns3::GtkConfigStore'])
-    register_Ns3NoneFileConfig_methods(root_module, root_module['ns3::NoneFileConfig'])
-    register_Ns3ConfigStore_methods(root_module, root_module['ns3::ConfigStore'])
-    register_Ns3FlowIdTag_methods(root_module, root_module['ns3::FlowIdTag'])
-    register_Ns3Gnuplot2dDataset_methods(root_module, root_module['ns3::Gnuplot2dDataset'])
-    register_Ns3Gnuplot2dFunction_methods(root_module, root_module['ns3::Gnuplot2dFunction'])
-    register_Ns3Gnuplot3dDataset_methods(root_module, root_module['ns3::Gnuplot3dDataset'])
-    register_Ns3Gnuplot3dFunction_methods(root_module, root_module['ns3::Gnuplot3dFunction'])
-    return
-
-def register_Ns3Average__Double_methods(root_module, cls):
-    ## average.h: ns3::Average<double>::Average(ns3::Average<double> const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Average< double > const &', 'arg0')])
-    ## average.h: ns3::Average<double>::Average() [constructor]
-    cls.add_constructor([])
-    ## average.h: double ns3::Average<double>::Avg() const [member function]
-    cls.add_method('Avg', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: uint32_t ns3::Average<double>::Count() const [member function]
-    cls.add_method('Count', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Error90() const [member function]
-    cls.add_method('Error90', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Error95() const [member function]
-    cls.add_method('Error95', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Error99() const [member function]
-    cls.add_method('Error99', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Max() const [member function]
-    cls.add_method('Max', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Mean() const [member function]
-    cls.add_method('Mean', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: double ns3::Average<double>::Min() const [member function]
-    cls.add_method('Min', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: void ns3::Average<double>::Reset() [member function]
-    cls.add_method('Reset', 
-                   'void', 
-                   [])
-    ## average.h: double ns3::Average<double>::Stddev() const [member function]
-    cls.add_method('Stddev', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## average.h: void ns3::Average<double>::Update(double const & x) [member function]
-    cls.add_method('Update', 
-                   'void', 
-                   [param('double const &', 'x')])
-    ## average.h: double ns3::Average<double>::Var() const [member function]
-    cls.add_method('Var', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3DelayJitterEstimation_methods(root_module, cls):
-    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
-    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
-    cls.add_constructor([])
-    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastDelay() const [member function]
-    cls.add_method('GetLastDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastJitter() const [member function]
-    cls.add_method('GetLastJitter', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<ns3::Packet const> packet) [member function]
-    cls.add_method('PrepareTx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')], 
-                   is_static=True)
-    ## delay-jitter-estimation.h: void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr<ns3::Packet const> packet) [member function]
-    cls.add_method('RecordRx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
-    return
-
-def register_Ns3EventGarbageCollector_methods(root_module, cls):
-    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector(ns3::EventGarbageCollector const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventGarbageCollector const &', 'arg0')])
-    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
-    cls.add_constructor([])
-    ## event-garbage-collector.h: void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
-    cls.add_method('Track', 
-                   'void', 
-                   [param('ns3::EventId', 'event')])
-    return
-
-def register_Ns3FileConfig_methods(root_module, cls):
-    ## file-config.h: ns3::FileConfig::FileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h: ns3::FileConfig::FileConfig(ns3::FileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FileConfig const &', 'arg0')])
-    ## file-config.h: void ns3::FileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h: void ns3::FileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h: void ns3::FileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h: void ns3::FileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
-def register_Ns3Gnuplot_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot::Gnuplot(ns3::Gnuplot const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot::Gnuplot(std::string const & outputFilename="", std::string const & title="") [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename', default_value='""'), param('std::string const &', 'title', default_value='""')])
-    ## gnuplot.h: void ns3::Gnuplot::AddDataset(ns3::GnuplotDataset const & dataset) [member function]
-    cls.add_method('AddDataset', 
-                   'void', 
-                   [param('ns3::GnuplotDataset const &', 'dataset')])
-    ## gnuplot.h: void ns3::Gnuplot::AppendExtra(std::string const & extra) [member function]
-    cls.add_method('AppendExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h: static std::string ns3::Gnuplot::DetectTerminal(std::string const & filename) [member function]
-    cls.add_method('DetectTerminal', 
-                   'std::string', 
-                   [param('std::string const &', 'filename')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::Gnuplot::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h: void ns3::Gnuplot::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h: void ns3::Gnuplot::SetLegend(std::string const & xLegend, std::string const & yLegend) [member function]
-    cls.add_method('SetLegend', 
-                   'void', 
-                   [param('std::string const &', 'xLegend'), param('std::string const &', 'yLegend')])
-    ## gnuplot.h: void ns3::Gnuplot::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    ## gnuplot.h: void ns3::Gnuplot::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    return
-
-def register_Ns3GnuplotCollection_methods(root_module, cls):
-    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(ns3::GnuplotCollection const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotCollection const &', 'arg0')])
-    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(std::string const & outputFilename) [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename')])
-    ## gnuplot.h: void ns3::GnuplotCollection::AddPlot(ns3::Gnuplot const & plot) [member function]
-    cls.add_method('AddPlot', 
-                   'void', 
-                   [param('ns3::Gnuplot const &', 'plot')])
-    ## gnuplot.h: void ns3::GnuplotCollection::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h: ns3::Gnuplot & ns3::GnuplotCollection::GetPlot(unsigned int id) [member function]
-    cls.add_method('GetPlot', 
-                   'ns3::Gnuplot &', 
-                   [param('unsigned int', 'id')])
-    ## gnuplot.h: void ns3::GnuplotCollection::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    return
-
-def register_Ns3GnuplotDataset_methods(root_module, cls):
-    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset const & original) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset const &', 'original')])
-    ## gnuplot.h: static void ns3::GnuplotDataset::SetDefaultExtra(std::string const & extra) [member function]
-    cls.add_method('SetDefaultExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::GnuplotDataset::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h: void ns3::GnuplotDataset::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset::Data * data) [constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset::Data *', 'data')], 
-                        visibility='protected')
-    return
-
-def register_Ns3GtkConfigStore_methods(root_module, cls):
-    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore(ns3::GtkConfigStore const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::GtkConfigStore const &', 'arg0')])
-    ## gtk-config-store.h: ns3::GtkConfigStore::GtkConfigStore() [constructor]
-    cls.add_constructor([])
-    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureAttributes() [member function]
-    cls.add_method('ConfigureAttributes', 
-                   'void', 
-                   [])
-    ## gtk-config-store.h: void ns3::GtkConfigStore::ConfigureDefaults() [member function]
-    cls.add_method('ConfigureDefaults', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3NoneFileConfig_methods(root_module, cls):
-    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig(ns3::NoneFileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::NoneFileConfig const &', 'arg0')])
-    ## file-config.h: ns3::NoneFileConfig::NoneFileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h: void ns3::NoneFileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h: void ns3::NoneFileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h: void ns3::NoneFileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h: void ns3::NoneFileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_virtual=True)
-    return
-
-def register_Ns3ConfigStore_methods(root_module, cls):
-    ## config-store.h: ns3::ConfigStore::ConfigStore(ns3::ConfigStore const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ConfigStore const &', 'arg0')])
-    ## config-store.h: ns3::ConfigStore::ConfigStore() [constructor]
-    cls.add_constructor([])
-    ## config-store.h: void ns3::ConfigStore::ConfigureAttributes() [member function]
-    cls.add_method('ConfigureAttributes', 
-                   'void', 
-                   [])
-    ## config-store.h: void ns3::ConfigStore::ConfigureDefaults() [member function]
-    cls.add_method('ConfigureDefaults', 
-                   'void', 
-                   [])
-    ## config-store.h: ns3::TypeId ns3::ConfigStore::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## config-store.h: static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## config-store.h: void ns3::ConfigStore::SetFileFormat(ns3::ConfigStore::FileFormat format) [member function]
-    cls.add_method('SetFileFormat', 
-                   'void', 
-                   [param('ns3::ConfigStore::FileFormat', 'format')])
-    ## config-store.h: void ns3::ConfigStore::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')])
-    ## config-store.h: void ns3::ConfigStore::SetMode(ns3::ConfigStore::Mode mode) [member function]
-    cls.add_method('SetMode', 
-                   'void', 
-                   [param('ns3::ConfigStore::Mode', 'mode')])
-    return
-
-def register_Ns3FlowIdTag_methods(root_module, cls):
-    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(ns3::FlowIdTag const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FlowIdTag const &', 'arg0')])
-    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag() [constructor]
-    cls.add_constructor([])
-    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(uint32_t flowId) [constructor]
-    cls.add_constructor([param('uint32_t', 'flowId')])
-    ## flow-id-tag.h: static uint32_t ns3::FlowIdTag::AllocateFlowId() [member function]
-    cls.add_method('AllocateFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::Deserialize(ns3::TagBuffer buf) [member function]
-    cls.add_method('Deserialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_virtual=True)
-    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetFlowId() const [member function]
-    cls.add_method('GetFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## flow-id-tag.h: ns3::TypeId ns3::FlowIdTag::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: static ns3::TypeId ns3::FlowIdTag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::Serialize(ns3::TagBuffer buf) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h: void ns3::FlowIdTag::SetFlowId(uint32_t flowId) [member function]
-    cls.add_method('SetFlowId', 
-                   'void', 
-                   [param('uint32_t', 'flowId')])
-    return
-
-def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(ns3::Gnuplot2dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dDataset const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double errorDelta) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double minY, double maxY) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'minY'), param('double', 'maxY')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetDefaultErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')], 
-                   is_static=True)
-    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')])
-    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')])
-    return
-
-def register_Ns3Gnuplot2dFunction_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(ns3::Gnuplot2dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dFunction const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h: void ns3::Gnuplot2dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_Ns3Gnuplot3dDataset_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(ns3::Gnuplot3dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dDataset const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h: void ns3::Gnuplot3dDataset::Add(double x, double y, double z) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'z')])
-    ## gnuplot.h: void ns3::Gnuplot3dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h: static void ns3::Gnuplot3dDataset::SetDefaultStyle(std::string const & style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')], 
-                   is_static=True)
-    ## gnuplot.h: void ns3::Gnuplot3dDataset::SetStyle(std::string const & style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')])
-    return
-
-def register_Ns3Gnuplot3dFunction_methods(root_module, cls):
-    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(ns3::Gnuplot3dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dFunction const &', 'arg0')])
-    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h: void ns3::Gnuplot3dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_functions(root_module):
-    module = root_module
-    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
-    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
-    register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
-    register_functions_ns3_aodv(module.get_submodule('aodv'), root_module)
-    register_functions_ns3_dot11s(module.get_submodule('dot11s'), root_module)
-    register_functions_ns3_dsdv(module.get_submodule('dsdv'), root_module)
-    register_functions_ns3_flame(module.get_submodule('flame'), root_module)
-    register_functions_ns3_internal(module.get_submodule('internal'), root_module)
-    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
-    return
-
-def register_functions_ns3_Config(module, root_module):
-    return
-
-def register_functions_ns3_FatalImpl(module, root_module):
-    return
-
-def register_functions_ns3_addressUtils(module, root_module):
-    return
-
-def register_functions_ns3_aodv(module, root_module):
-    return
-
-def register_functions_ns3_dot11s(module, root_module):
-    return
-
-def register_functions_ns3_dsdv(module, root_module):
-    return
-
-def register_functions_ns3_flame(module, root_module):
-    return
-
-def register_functions_ns3_internal(module, root_module):
-    return
-
-def register_functions_ns3_olsr(module, root_module):
-    return
-
--- a/bindings/python/apidefs/gcc-LP64/ns3_module_network.py	Thu Mar 24 15:11:56 2011 +0100
+++ b/bindings/python/apidefs/gcc-LP64/ns3_module_network.py	Thu Mar 24 09:23:44 2011 -0700
@@ -113,6 +113,8 @@
     module.add_class('TagBuffer')
     ## chunk.h: ns3::Chunk [class]
     module.add_class('Chunk', parent=root_module['ns3::ObjectBase'])
+    ## flow-id-tag.h: ns3::FlowIdTag [class]
+    module.add_class('FlowIdTag', parent=root_module['ns3::Tag'])
     ## header.h: ns3::Header [class]
     module.add_class('Header', parent=root_module['ns3::Chunk'])
     ## llc-snap-header.h: ns3::LlcSnapHeader [class]
@@ -404,6 +406,7 @@
     register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
+    register_Ns3FlowIdTag_methods(root_module, root_module['ns3::FlowIdTag'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3LlcSnapHeader_methods(root_module, root_module['ns3::LlcSnapHeader'])
     register_Ns3PacketBurst_methods(root_module, root_module['ns3::PacketBurst'])
@@ -2579,6 +2582,59 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3FlowIdTag_methods(root_module, cls):
+    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(ns3::FlowIdTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::FlowIdTag const &', 'arg0')])
+    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag() [constructor]
+    cls.add_constructor([])
+    ## flow-id-tag.h: ns3::FlowIdTag::FlowIdTag(uint32_t flowId) [constructor]
+    cls.add_constructor([param('uint32_t', 'flowId')])
+    ## flow-id-tag.h: static uint32_t ns3::FlowIdTag::AllocateFlowId() [member function]
+    cls.add_method('AllocateFlowId', 
+                   'uint32_t', 
+                   [], 
+                   is_static=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::Deserialize(ns3::TagBuffer buf) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buf')], 
+                   is_virtual=True)
+    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetFlowId() const [member function]
+    cls.add_method('GetFlowId', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## flow-id-tag.h: ns3::TypeId ns3::FlowIdTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: uint32_t ns3::FlowIdTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: static ns3::TypeId ns3::FlowIdTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::Serialize(ns3::TagBuffer buf) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'buf')], 
+                   is_const=True, is_virtual=True)
+    ## flow-id-tag.h: void ns3::FlowIdTag::SetFlowId(uint32_t flowId) [member function]
+    cls.add_method('SetFlowId', 
+                   'void', 
+                   [param('uint32_t', 'flowId')])
+    return
+
 def register_Ns3Header_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## header.h: ns3::Header::Header() [constructor]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bindings/python/apidefs/gcc-LP64/ns3_module_tools.py	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,448 @@
+from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
+
+def register_types(module):
+    root_module = module.get_root()
+    
+    ## average.h: ns3::Average<double> [class]
+    module.add_class('Average', template_parameters=['double'])
+    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation [class]
+    module.add_class('DelayJitterEstimation')
+    ## event-garbage-collector.h: ns3::EventGarbageCollector [class]
+    module.add_class('EventGarbageCollector')
+    ## gnuplot.h: ns3::Gnuplot [class]
+    module.add_class('Gnuplot')
+    ## gnuplot.h: ns3::GnuplotCollection [class]
+    module.add_class('GnuplotCollection')
+    ## gnuplot.h: ns3::GnuplotDataset [class]
+    module.add_class('GnuplotDataset')
+    ## gnuplot.h: ns3::Gnuplot2dDataset [class]
+    module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
+    ## gnuplot.h: ns3::Gnuplot2dDataset::Style [enumeration]
+    module.add_enum('Style', ['LINES', 'POINTS', 'LINES_POINTS', 'DOTS', 'IMPULSES', 'STEPS', 'FSTEPS', 'HISTEPS'], outer_class=root_module['ns3::Gnuplot2dDataset'])
+    ## gnuplot.h: ns3::Gnuplot2dDataset::ErrorBars [enumeration]
+    module.add_enum('ErrorBars', ['NONE', 'X', 'Y', 'XY'], outer_class=root_module['ns3::Gnuplot2dDataset'])
+    ## gnuplot.h: ns3::Gnuplot2dFunction [class]
+    module.add_class('Gnuplot2dFunction', parent=root_module['ns3::GnuplotDataset'])
+    ## gnuplot.h: ns3::Gnuplot3dDataset [class]
+    module.add_class('Gnuplot3dDataset', parent=root_module['ns3::GnuplotDataset'])
+    ## gnuplot.h: ns3::Gnuplot3dFunction [class]
+    module.add_class('Gnuplot3dFunction', parent=root_module['ns3::GnuplotDataset'])
+    
+    ## Register a nested module for the namespace Config
+    
+    nested_module = module.add_cpp_namespace('Config')
+    register_types_ns3_Config(nested_module)
+    
+    
+    ## Register a nested module for the namespace FatalImpl
+    
+    nested_module = module.add_cpp_namespace('FatalImpl')
+    register_types_ns3_FatalImpl(nested_module)
+    
+    
+    ## Register a nested module for the namespace addressUtils
+    
+    nested_module = module.add_cpp_namespace('addressUtils')
+    register_types_ns3_addressUtils(nested_module)
+    
+    
+    ## Register a nested module for the namespace aodv
+    
+    nested_module = module.add_cpp_namespace('aodv')
+    register_types_ns3_aodv(nested_module)
+    
+    
+    ## Register a nested module for the namespace dot11s
+    
+    nested_module = module.add_cpp_namespace('dot11s')
+    register_types_ns3_dot11s(nested_module)
+    
+    
+    ## Register a nested module for the namespace dsdv
+    
+    nested_module = module.add_cpp_namespace('dsdv')
+    register_types_ns3_dsdv(nested_module)
+    
+    
+    ## Register a nested module for the namespace flame
+    
+    nested_module = module.add_cpp_namespace('flame')
+    register_types_ns3_flame(nested_module)
+    
+    
+    ## Register a nested module for the namespace internal
+    
+    nested_module = module.add_cpp_namespace('internal')
+    register_types_ns3_internal(nested_module)
+    
+    
+    ## Register a nested module for the namespace olsr
+    
+    nested_module = module.add_cpp_namespace('olsr')
+    register_types_ns3_olsr(nested_module)
+    
+
+def register_types_ns3_Config(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_FatalImpl(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_addressUtils(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_aodv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dot11s(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_dsdv(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_flame(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_internal(module):
+    root_module = module.get_root()
+    
+
+def register_types_ns3_olsr(module):
+    root_module = module.get_root()
+    
+
+def register_methods(root_module):
+    register_Ns3Average__Double_methods(root_module, root_module['ns3::Average< double >'])
+    register_Ns3DelayJitterEstimation_methods(root_module, root_module['ns3::DelayJitterEstimation'])
+    register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
+    register_Ns3Gnuplot_methods(root_module, root_module['ns3::Gnuplot'])
+    register_Ns3GnuplotCollection_methods(root_module, root_module['ns3::GnuplotCollection'])
+    register_Ns3GnuplotDataset_methods(root_module, root_module['ns3::GnuplotDataset'])
+    register_Ns3Gnuplot2dDataset_methods(root_module, root_module['ns3::Gnuplot2dDataset'])
+    register_Ns3Gnuplot2dFunction_methods(root_module, root_module['ns3::Gnuplot2dFunction'])
+    register_Ns3Gnuplot3dDataset_methods(root_module, root_module['ns3::Gnuplot3dDataset'])
+    register_Ns3Gnuplot3dFunction_methods(root_module, root_module['ns3::Gnuplot3dFunction'])
+    return
+
+def register_Ns3Average__Double_methods(root_module, cls):
+    ## average.h: ns3::Average<double>::Average(ns3::Average<double> const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Average< double > const &', 'arg0')])
+    ## average.h: ns3::Average<double>::Average() [constructor]
+    cls.add_constructor([])
+    ## average.h: double ns3::Average<double>::Avg() const [member function]
+    cls.add_method('Avg', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: uint32_t ns3::Average<double>::Count() const [member function]
+    cls.add_method('Count', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Error90() const [member function]
+    cls.add_method('Error90', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Error95() const [member function]
+    cls.add_method('Error95', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Error99() const [member function]
+    cls.add_method('Error99', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Max() const [member function]
+    cls.add_method('Max', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Mean() const [member function]
+    cls.add_method('Mean', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: double ns3::Average<double>::Min() const [member function]
+    cls.add_method('Min', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: void ns3::Average<double>::Reset() [member function]
+    cls.add_method('Reset', 
+                   'void', 
+                   [])
+    ## average.h: double ns3::Average<double>::Stddev() const [member function]
+    cls.add_method('Stddev', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## average.h: void ns3::Average<double>::Update(double const & x) [member function]
+    cls.add_method('Update', 
+                   'void', 
+                   [param('double const &', 'x')])
+    ## average.h: double ns3::Average<double>::Var() const [member function]
+    cls.add_method('Var', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    return
+
+def register_Ns3DelayJitterEstimation_methods(root_module, cls):
+    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
+    ## delay-jitter-estimation.h: ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
+    cls.add_constructor([])
+    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastDelay() const [member function]
+    cls.add_method('GetLastDelay', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## delay-jitter-estimation.h: ns3::Time ns3::DelayJitterEstimation::GetLastJitter() const [member function]
+    cls.add_method('GetLastJitter', 
+                   'ns3::Time', 
+                   [], 
+                   is_const=True)
+    ## delay-jitter-estimation.h: static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<ns3::Packet const> packet) [member function]
+    cls.add_method('PrepareTx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet')], 
+                   is_static=True)
+    ## delay-jitter-estimation.h: void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr<ns3::Packet const> packet) [member function]
+    cls.add_method('RecordRx', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
+    return
+
+def register_Ns3EventGarbageCollector_methods(root_module, cls):
+    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector(ns3::EventGarbageCollector const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::EventGarbageCollector const &', 'arg0')])
+    ## event-garbage-collector.h: ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
+    cls.add_constructor([])
+    ## event-garbage-collector.h: void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
+    cls.add_method('Track', 
+                   'void', 
+                   [param('ns3::EventId', 'event')])
+    return
+
+def register_Ns3Gnuplot_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot::Gnuplot(ns3::Gnuplot const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot::Gnuplot(std::string const & outputFilename="", std::string const & title="") [constructor]
+    cls.add_constructor([param('std::string const &', 'outputFilename', default_value='""'), param('std::string const &', 'title', default_value='""')])
+    ## gnuplot.h: void ns3::Gnuplot::AddDataset(ns3::GnuplotDataset const & dataset) [member function]
+    cls.add_method('AddDataset', 
+                   'void', 
+                   [param('ns3::GnuplotDataset const &', 'dataset')])
+    ## gnuplot.h: void ns3::Gnuplot::AppendExtra(std::string const & extra) [member function]
+    cls.add_method('AppendExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')])
+    ## gnuplot.h: static std::string ns3::Gnuplot::DetectTerminal(std::string const & filename) [member function]
+    cls.add_method('DetectTerminal', 
+                   'std::string', 
+                   [param('std::string const &', 'filename')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::Gnuplot::GenerateOutput(std::ostream & os) const [member function]
+    cls.add_method('GenerateOutput', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## gnuplot.h: void ns3::Gnuplot::SetExtra(std::string const & extra) [member function]
+    cls.add_method('SetExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')])
+    ## gnuplot.h: void ns3::Gnuplot::SetLegend(std::string const & xLegend, std::string const & yLegend) [member function]
+    cls.add_method('SetLegend', 
+                   'void', 
+                   [param('std::string const &', 'xLegend'), param('std::string const &', 'yLegend')])
+    ## gnuplot.h: void ns3::Gnuplot::SetTerminal(std::string const & terminal) [member function]
+    cls.add_method('SetTerminal', 
+                   'void', 
+                   [param('std::string const &', 'terminal')])
+    ## gnuplot.h: void ns3::Gnuplot::SetTitle(std::string const & title) [member function]
+    cls.add_method('SetTitle', 
+                   'void', 
+                   [param('std::string const &', 'title')])
+    return
+
+def register_Ns3GnuplotCollection_methods(root_module, cls):
+    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(ns3::GnuplotCollection const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::GnuplotCollection const &', 'arg0')])
+    ## gnuplot.h: ns3::GnuplotCollection::GnuplotCollection(std::string const & outputFilename) [constructor]
+    cls.add_constructor([param('std::string const &', 'outputFilename')])
+    ## gnuplot.h: void ns3::GnuplotCollection::AddPlot(ns3::Gnuplot const & plot) [member function]
+    cls.add_method('AddPlot', 
+                   'void', 
+                   [param('ns3::Gnuplot const &', 'plot')])
+    ## gnuplot.h: void ns3::GnuplotCollection::GenerateOutput(std::ostream & os) const [member function]
+    cls.add_method('GenerateOutput', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True)
+    ## gnuplot.h: ns3::Gnuplot & ns3::GnuplotCollection::GetPlot(unsigned int id) [member function]
+    cls.add_method('GetPlot', 
+                   'ns3::Gnuplot &', 
+                   [param('unsigned int', 'id')])
+    ## gnuplot.h: void ns3::GnuplotCollection::SetTerminal(std::string const & terminal) [member function]
+    cls.add_method('SetTerminal', 
+                   'void', 
+                   [param('std::string const &', 'terminal')])
+    return
+
+def register_Ns3GnuplotDataset_methods(root_module, cls):
+    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset const & original) [copy constructor]
+    cls.add_constructor([param('ns3::GnuplotDataset const &', 'original')])
+    ## gnuplot.h: static void ns3::GnuplotDataset::SetDefaultExtra(std::string const & extra) [member function]
+    cls.add_method('SetDefaultExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::GnuplotDataset::SetExtra(std::string const & extra) [member function]
+    cls.add_method('SetExtra', 
+                   'void', 
+                   [param('std::string const &', 'extra')])
+    ## gnuplot.h: void ns3::GnuplotDataset::SetTitle(std::string const & title) [member function]
+    cls.add_method('SetTitle', 
+                   'void', 
+                   [param('std::string const &', 'title')])
+    ## gnuplot.h: ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset::Data * data) [constructor]
+    cls.add_constructor([param('ns3::GnuplotDataset::Data *', 'data')], 
+                        visibility='protected')
+    return
+
+def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(ns3::Gnuplot2dDataset const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot2dDataset const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot2dDataset::Gnuplot2dDataset(std::string const & title="Untitled") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double errorDelta) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::Add(double x, double y, double minY, double maxY) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y'), param('double', 'minY'), param('double', 'maxY')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::AddEmptyLine() [member function]
+    cls.add_method('AddEmptyLine', 
+                   'void', 
+                   [])
+    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
+    cls.add_method('SetDefaultErrorBars', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')], 
+                   is_static=True)
+    ## gnuplot.h: static void ns3::Gnuplot2dDataset::SetDefaultStyle(ns3::Gnuplot2dDataset::Style style) [member function]
+    cls.add_method('SetDefaultStyle', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::Style', 'style')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
+    cls.add_method('SetErrorBars', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')])
+    ## gnuplot.h: void ns3::Gnuplot2dDataset::SetStyle(ns3::Gnuplot2dDataset::Style style) [member function]
+    cls.add_method('SetStyle', 
+                   'void', 
+                   [param('ns3::Gnuplot2dDataset::Style', 'style')])
+    return
+
+def register_Ns3Gnuplot2dFunction_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(ns3::Gnuplot2dFunction const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot2dFunction const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot2dFunction::Gnuplot2dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
+    ## gnuplot.h: void ns3::Gnuplot2dFunction::SetFunction(std::string const & function) [member function]
+    cls.add_method('SetFunction', 
+                   'void', 
+                   [param('std::string const &', 'function')])
+    return
+
+def register_Ns3Gnuplot3dDataset_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(ns3::Gnuplot3dDataset const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot3dDataset const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot3dDataset::Gnuplot3dDataset(std::string const & title="Untitled") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
+    ## gnuplot.h: void ns3::Gnuplot3dDataset::Add(double x, double y, double z) [member function]
+    cls.add_method('Add', 
+                   'void', 
+                   [param('double', 'x'), param('double', 'y'), param('double', 'z')])
+    ## gnuplot.h: void ns3::Gnuplot3dDataset::AddEmptyLine() [member function]
+    cls.add_method('AddEmptyLine', 
+                   'void', 
+                   [])
+    ## gnuplot.h: static void ns3::Gnuplot3dDataset::SetDefaultStyle(std::string const & style) [member function]
+    cls.add_method('SetDefaultStyle', 
+                   'void', 
+                   [param('std::string const &', 'style')], 
+                   is_static=True)
+    ## gnuplot.h: void ns3::Gnuplot3dDataset::SetStyle(std::string const & style) [member function]
+    cls.add_method('SetStyle', 
+                   'void', 
+                   [param('std::string const &', 'style')])
+    return
+
+def register_Ns3Gnuplot3dFunction_methods(root_module, cls):
+    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(ns3::Gnuplot3dFunction const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Gnuplot3dFunction const &', 'arg0')])
+    ## gnuplot.h: ns3::Gnuplot3dFunction::Gnuplot3dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
+    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
+    ## gnuplot.h: void ns3::Gnuplot3dFunction::SetFunction(std::string const & function) [member function]
+    cls.add_method('SetFunction', 
+                   'void', 
+                   [param('std::string const &', 'function')])
+    return
+
+def register_functions(root_module):
+    module = root_module
+    register_functions_ns3_Config(module.get_submodule('Config'), root_module)
+    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
+    register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
+    register_functions_ns3_aodv(module.get_submodule('aodv'), root_module)
+    register_functions_ns3_dot11s(module.get_submodule('dot11s'), root_module)
+    register_functions_ns3_dsdv(module.get_submodule('dsdv'), root_module)
+    register_functions_ns3_flame(module.get_submodule('flame'), root_module)
+    register_functions_ns3_internal(module.get_submodule('internal'), root_module)
+    register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
+    return
+
+def register_functions_ns3_Config(module, root_module):
+    return
+
+def register_functions_ns3_FatalImpl(module, root_module):
+    return
+
+def register_functions_ns3_addressUtils(module, root_module):
+    return
+
+def register_functions_ns3_aodv(module, root_module):
+    return
+
+def register_functions_ns3_dot11s(module, root_module):
+    return
+
+def register_functions_ns3_dsdv(module, root_module):
+    return
+
+def register_functions_ns3_flame(module, root_module):
+    return
+
+def register_functions_ns3_internal(module, root_module):
+    return
+
+def register_functions_ns3_olsr(module, root_module):
+    return
+
--- a/bindings/python/apidefs/gcc-LP64/ns3modulegen_generated.py	Thu Mar 24 15:11:56 2011 +0100
+++ b/bindings/python/apidefs/gcc-LP64/ns3modulegen_generated.py	Thu Mar 24 09:23:44 2011 -0700
@@ -17,20 +17,21 @@
 import ns3_module_network
 import ns3_module_visualizer
 import ns3_module_bridge
-import ns3_module_contrib
+import ns3_module_config_store
 import ns3_module_emu
 import ns3_module_mobility
 import ns3_module_mpi
 import ns3_module_network_test
 import ns3_module_stats
+import ns3_module_tools
 import ns3_module_topology_read
 import ns3_module_propagation
 import ns3_module_internet
 import ns3_module_point_to_point
+import ns3_module_flow_monitor
 import ns3_module_wifi
 import ns3_module_applications
 import ns3_module_click
-import ns3_module_flow_monitor
 import ns3_module_nix_vector_routing
 import ns3_module_openflow
 import ns3_module_tap_bridge
@@ -114,17 +115,17 @@
         ns3_module_bridge__local.register_types(module)
     
     root_module.end_section('ns3_module_bridge')
-    root_module.begin_section('ns3_module_contrib')
-    ns3_module_contrib.register_types(module)
+    root_module.begin_section('ns3_module_config_store')
+    ns3_module_config_store.register_types(module)
     
     try:
-        import ns3_module_contrib__local
+        import ns3_module_config_store__local
     except ImportError:
         pass
     else:
-        ns3_module_contrib__local.register_types(module)
+        ns3_module_config_store__local.register_types(module)
     
-    root_module.end_section('ns3_module_contrib')
+    root_module.end_section('ns3_module_config_store')
     root_module.begin_section('ns3_module_emu')
     ns3_module_emu.register_types(module)
     
@@ -180,6 +181,17 @@
         ns3_module_stats__local.register_types(module)
     
     root_module.end_section('ns3_module_stats')
+    root_module.begin_section('ns3_module_tools')
+    ns3_module_tools.register_types(module)
+    
+    try:
+        import ns3_module_tools__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_tools__local.register_types(module)
+    
+    root_module.end_section('ns3_module_tools')
     root_module.begin_section('ns3_module_topology_read')
     ns3_module_topology_read.register_types(module)
     
@@ -224,6 +236,17 @@
         ns3_module_point_to_point__local.register_types(module)
     
     root_module.end_section('ns3_module_point_to_point')
+    root_module.begin_section('ns3_module_flow_monitor')
+    ns3_module_flow_monitor.register_types(module)
+    
+    try:
+        import ns3_module_flow_monitor__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_flow_monitor__local.register_types(module)
+    
+    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_wifi')
     ns3_module_wifi.register_types(module)
     
@@ -257,17 +280,6 @@
         ns3_module_click__local.register_types(module)
     
     root_module.end_section('ns3_module_click')
-    root_module.begin_section('ns3_module_flow_monitor')
-    ns3_module_flow_monitor.register_types(module)
-    
-    try:
-        import ns3_module_flow_monitor__local
-    except ImportError:
-        pass
-    else:
-        ns3_module_flow_monitor__local.register_types(module)
-    
-    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_nix_vector_routing')
     ns3_module_nix_vector_routing.register_types(module)
     
@@ -656,17 +668,17 @@
         ns3_module_bridge__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_bridge')
-    root_module.begin_section('ns3_module_contrib')
-    ns3_module_contrib.register_methods(root_module)
+    root_module.begin_section('ns3_module_config_store')
+    ns3_module_config_store.register_methods(root_module)
     
     try:
-        import ns3_module_contrib__local
+        import ns3_module_config_store__local
     except ImportError:
         pass
     else:
-        ns3_module_contrib__local.register_methods(root_module)
+        ns3_module_config_store__local.register_methods(root_module)
     
-    root_module.end_section('ns3_module_contrib')
+    root_module.end_section('ns3_module_config_store')
     root_module.begin_section('ns3_module_emu')
     ns3_module_emu.register_methods(root_module)
     
@@ -722,6 +734,17 @@
         ns3_module_stats__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_stats')
+    root_module.begin_section('ns3_module_tools')
+    ns3_module_tools.register_methods(root_module)
+    
+    try:
+        import ns3_module_tools__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_tools__local.register_methods(root_module)
+    
+    root_module.end_section('ns3_module_tools')
     root_module.begin_section('ns3_module_topology_read')
     ns3_module_topology_read.register_methods(root_module)
     
@@ -766,6 +789,17 @@
         ns3_module_point_to_point__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_point_to_point')
+    root_module.begin_section('ns3_module_flow_monitor')
+    ns3_module_flow_monitor.register_methods(root_module)
+    
+    try:
+        import ns3_module_flow_monitor__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_flow_monitor__local.register_methods(root_module)
+    
+    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_wifi')
     ns3_module_wifi.register_methods(root_module)
     
@@ -799,17 +833,6 @@
         ns3_module_click__local.register_methods(root_module)
     
     root_module.end_section('ns3_module_click')
-    root_module.begin_section('ns3_module_flow_monitor')
-    ns3_module_flow_monitor.register_methods(root_module)
-    
-    try:
-        import ns3_module_flow_monitor__local
-    except ImportError:
-        pass
-    else:
-        ns3_module_flow_monitor__local.register_methods(root_module)
-    
-    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_nix_vector_routing')
     ns3_module_nix_vector_routing.register_methods(root_module)
     
@@ -1089,17 +1112,17 @@
         ns3_module_bridge__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_bridge')
-    root_module.begin_section('ns3_module_contrib')
-    ns3_module_contrib.register_functions(root_module)
+    root_module.begin_section('ns3_module_config_store')
+    ns3_module_config_store.register_functions(root_module)
     
     try:
-        import ns3_module_contrib__local
+        import ns3_module_config_store__local
     except ImportError:
         pass
     else:
-        ns3_module_contrib__local.register_functions(root_module)
+        ns3_module_config_store__local.register_functions(root_module)
     
-    root_module.end_section('ns3_module_contrib')
+    root_module.end_section('ns3_module_config_store')
     root_module.begin_section('ns3_module_emu')
     ns3_module_emu.register_functions(root_module)
     
@@ -1155,6 +1178,17 @@
         ns3_module_stats__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_stats')
+    root_module.begin_section('ns3_module_tools')
+    ns3_module_tools.register_functions(root_module)
+    
+    try:
+        import ns3_module_tools__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_tools__local.register_functions(root_module)
+    
+    root_module.end_section('ns3_module_tools')
     root_module.begin_section('ns3_module_topology_read')
     ns3_module_topology_read.register_functions(root_module)
     
@@ -1199,6 +1233,17 @@
         ns3_module_point_to_point__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_point_to_point')
+    root_module.begin_section('ns3_module_flow_monitor')
+    ns3_module_flow_monitor.register_functions(root_module)
+    
+    try:
+        import ns3_module_flow_monitor__local
+    except ImportError:
+        pass
+    else:
+        ns3_module_flow_monitor__local.register_functions(root_module)
+    
+    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_wifi')
     ns3_module_wifi.register_functions(root_module)
     
@@ -1232,17 +1277,6 @@
         ns3_module_click__local.register_functions(root_module)
     
     root_module.end_section('ns3_module_click')
-    root_module.begin_section('ns3_module_flow_monitor')
-    ns3_module_flow_monitor.register_functions(root_module)
-    
-    try:
-        import ns3_module_flow_monitor__local
-    except ImportError:
-        pass
-    else:
-        ns3_module_flow_monitor__local.register_functions(root_module)
-    
-    root_module.end_section('ns3_module_flow_monitor')
     root_module.begin_section('ns3_module_nix_vector_routing')
     ns3_module_nix_vector_routing.register_functions(root_module)
     
--- a/doc/manual/source/attributes.rst	Thu Mar 24 15:11:56 2011 +0100
+++ b/doc/manual/source/attributes.rst	Thu Mar 24 09:23:44 2011 -0700
@@ -659,7 +659,7 @@
 Let's edit it to add the ConfigStore feature. First, add an include statement to
 include the contrib module, and then add these lines:::
 
-    #include "contrib-module.h"
+    #include "ns3/config-store-module.h"
     ...
     int main (...)
     {
@@ -725,7 +725,7 @@
 is sometimes helpful to run the program to generate an output xml file first,
 then hand-edit that file and re-input it for the next simulation run).::
 
-    #include "contrib-module.h"
+    #include "ns3/config-store-module.h"
     ...
     int main (...)
     {
--- a/examples/energy/energy-model-example.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/energy/energy-model-example.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -21,7 +21,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/energy-module.h"
 #include "ns3/internet-module.h"
--- a/examples/wireless/mixed-wireless.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/mixed-wireless.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -64,7 +64,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/csma-module.h"
 #include "ns3/olsr-helper.h"
--- a/examples/wireless/multirate.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/multirate.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -52,7 +52,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/tools-module.h"
 #include "ns3/random-variable.h"
 #include "ns3/wifi-module.h"
 #include "ns3/internet-module.h"
--- a/examples/wireless/wifi-adhoc.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wifi-adhoc.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -22,7 +22,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/tools-module.h"
 #include "ns3/wifi-module.h"
 
 #include <iostream>
--- a/examples/wireless/wifi-ap.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wifi-ap.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -23,7 +23,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/athstats-helper.h"
 
--- a/examples/wireless/wifi-clear-channel-cmu.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wifi-clear-channel-cmu.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -21,7 +21,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/tools-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/internet-module.h"
 
--- a/examples/wireless/wifi-simple-adhoc-grid.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wifi-simple-adhoc-grid.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -72,7 +72,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/internet-module.h"
 #include "ns3/olsr-helper.h"
--- a/examples/wireless/wifi-simple-adhoc.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wifi-simple-adhoc.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -54,7 +54,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/internet-module.h"
 
--- a/examples/wireless/wifi-simple-infra.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wifi-simple-infra.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -55,7 +55,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/internet-module.h"
 
--- a/examples/wireless/wifi-simple-interference.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wifi-simple-interference.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -83,7 +83,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/internet-module.h"
 
--- a/examples/wireless/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/examples/wireless/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -5,13 +5,13 @@
                                                     'internet', 'csma', 'olsr'])
     obj.source = 'mixed-wireless.cc'
 
-    obj = bld.create_ns3_program('wifi-adhoc', ['core', 'mobility', 'wifi', 'applications', 'contrib'])
+    obj = bld.create_ns3_program('wifi-adhoc', ['core', 'mobility', 'wifi', 'applications', 'tools'])
     obj.source = 'wifi-adhoc.cc'
 
-    obj = bld.create_ns3_program('wifi-clear-channel-cmu', ['internet', 'mobility', 'wifi', 'contrib'])
+    obj = bld.create_ns3_program('wifi-clear-channel-cmu', ['internet', 'mobility', 'wifi', 'tools'])
     obj.source = 'wifi-clear-channel-cmu.cc'
 
-    obj = bld.create_ns3_program('wifi-ap', ['core', 'mobility', 'wifi', 'applications', 'contrib'])
+    obj = bld.create_ns3_program('wifi-ap', ['core', 'mobility', 'wifi', 'applications', 'config-store', 'tools'])
     obj.source = 'wifi-ap.cc'
 
     obj = bld.create_ns3_program('wifi-wired-bridging', ['internet', 'mobility', 'wifi', 'csma', 'bridge', 'applications'])
@@ -20,25 +20,25 @@
     obj = bld.create_ns3_program('simple-wifi-frame-aggregation', ['internet', 'mobility', 'wifi', 'applications'])
     obj.source = 'simple-wifi-frame-aggregation.cc'
 
-    obj = bld.create_ns3_program('multirate', ['internet', 'mobility', 'wifi', 'contrib', 'flow-monitor', 'olsr', 'applications', 'point-to-point'])
+    obj = bld.create_ns3_program('multirate', ['internet', 'mobility', 'wifi', 'tools', 'flow-monitor', 'olsr', 'applications', 'point-to-point'])
     obj.source = 'multirate.cc'
 
-    obj = bld.create_ns3_program('wifi-simple-adhoc', ['internet', 'mobility', 'wifi', 'contrib'])
+    obj = bld.create_ns3_program('wifi-simple-adhoc', ['internet', 'mobility', 'wifi', 'config-store', 'tools'])
     obj.source = 'wifi-simple-adhoc.cc'
 
-    obj = bld.create_ns3_program('wifi-simple-adhoc-grid', ['internet', 'mobility', 'wifi', 'olsr', 'contrib', 'point-to-point'])
+    obj = bld.create_ns3_program('wifi-simple-adhoc-grid', ['internet', 'mobility', 'wifi', 'olsr', 'config-store', 'tools', 'point-to-point'])
     obj.source = 'wifi-simple-adhoc-grid.cc'
 
     obj = bld.create_ns3_program('wifi-simple-infra', ['internet', 'mobility', 'wifi'])
     obj.source = 'wifi-simple-infra.cc'
 
-    obj = bld.create_ns3_program('wifi-simple-interference', ['internet', 'mobility', 'wifi', 'contrib'])
+    obj = bld.create_ns3_program('wifi-simple-interference', ['internet', 'mobility', 'wifi', 'config-store', 'tools'])
     obj.source = 'wifi-simple-interference.cc'
 
     obj = bld.create_ns3_program('wifi-blockack', ['internet', 'mobility', 'wifi', 'applications'])
     obj.source = 'wifi-blockack.cc'
 
-    obj = bld.create_ns3_program('ofdm-validation', ['core', 'mobility', 'wifi', 'contrib'])
+    obj = bld.create_ns3_program('ofdm-validation', ['core', 'mobility', 'wifi', 'config-store', 'tools'])
     obj.source = 'ofdm-validation.cc'
 
     obj = bld.create_ns3_program('wifi-hidden-terminal', ['internet', 'mobility', 'wifi', 'applications', 'propagation', 'flow-monitor'])
--- a/samples/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/samples/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -17,7 +17,7 @@
     obj = bld.create_ns3_program('main-ptr', ['core'] )
     obj.source = 'main-ptr.cc'
 
-    obj = bld.create_ns3_program('main-random-variable', ['core', 'contrib'])
+    obj = bld.create_ns3_program('main-random-variable', ['core', 'config-store', 'tools'])
     obj.source = 'main-random-variable.cc'
 
     obj = bld.create_ns3_program('main-packet-header', ['common', 'core'])
@@ -47,7 +47,7 @@
     obj.source = 'main-random-walk.cc'
 
     obj = bld.create_ns3_program('main-propagation-loss',
-                                 ['core', 'mobility', 'contrib', 'propagation'])
+                                 ['core', 'mobility', 'config-store', 'tools', 'propagation'])
     obj.source = 'main-propagation-loss.cc'
 
     obj = bld.create_ns3_program('sample-random-variable',
--- a/src/applications/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/applications/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    module = bld.create_ns3_module('applications', ['internet', 'contrib'])
+    module = bld.create_ns3_module('applications', ['internet', 'config-store', 'tools'])
     module.source = [
         'model/bulk-send-application.cc',
         'model/onoff-application.cc',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/attribute-default-iterator.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,123 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+ 
+#include "attribute-default-iterator.h"
+#include "ns3/attribute.h"
+#include "ns3/object-vector.h"
+#include "ns3/pointer.h"
+#include "ns3/global-value.h"
+#include "ns3/string.h"
+
+namespace ns3
+{
+
+AttributeDefaultIterator::~AttributeDefaultIterator ()
+{
+}
+void 
+AttributeDefaultIterator::Iterate (void)
+{
+  for (uint32_t i = 0; i < TypeId::GetRegisteredN (); i++)
+    {
+      TypeId tid = TypeId::GetRegistered (i);
+      if (tid.MustHideFromDocumentation ())
+        {
+          continue;
+        }
+      bool calledStart = false;
+      for (uint32_t j = 0; j < tid.GetAttributeN (); j++)
+        {
+          uint32_t flags = tid.GetAttributeFlags (j);
+          if (!(flags & TypeId::ATTR_CONSTRUCT))
+            {
+              // we can't construct the attribute, so, there is no
+              // initial value for the attribute
+              continue;
+            }
+          Ptr<const AttributeAccessor> accessor = tid.GetAttributeAccessor (j);
+          //No accessor, go to next attribute
+          if (accessor == 0)
+            {
+              continue;
+            }
+          if (!accessor->HasSetter ())
+            {
+              //skip this attribute it doesn't have an setter
+              continue;
+            }
+          Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (j);
+          if (checker == 0)
+            {
+              //skip, it doesn't have a checker
+              continue;
+            }
+          Ptr<const AttributeValue> value = tid.GetAttributeInitialValue (j);
+          if (value == 0)
+            {
+              //No value, check next attribute
+              continue;
+            }
+          Ptr<const ObjectVectorValue> vector = DynamicCast<const ObjectVectorValue> (value);
+          if (vector != 0)
+            {
+              //a vector value, won't take it
+              continue;
+            }
+          Ptr<const PointerValue> pointer = DynamicCast<const PointerValue> (value);
+          if (pointer != 0)
+            {
+              //pointer value, won't take it
+              continue;
+            }
+          //We take only values, no pointers or vectors
+          if (!calledStart)
+            {
+              StartVisitTypeId (tid.GetName ());
+            }
+          VisitAttribute (tid, tid.GetAttributeName (j), value->SerializeToString (checker), j);
+          calledStart = true;
+        }
+      if (calledStart)
+        {
+          EndVisitTypeId ();
+        }
+    }
+}
+
+void 
+AttributeDefaultIterator::StartVisitTypeId (std::string name)
+{
+}
+void 
+AttributeDefaultIterator::EndVisitTypeId (void)
+{
+}
+
+void 
+AttributeDefaultIterator::DoVisitAttribute (std::string name, std::string defaultValue)
+{
+}
+
+void 
+AttributeDefaultIterator::VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index)
+{
+  DoVisitAttribute (name, defaultValue);
+}
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/attribute-default-iterator.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,60 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+ 
+#ifndef ATTRIBUTE_DEFAULT_ITERATOR_H
+#define ATTRIBUTE_DEFAULT_ITERATOR_H
+
+#include "ns3/type-id.h"
+#include <string>
+
+namespace ns3 {
+
+class AttributeDefaultIterator
+{
+public:
+  virtual ~AttributeDefaultIterator () = 0;
+  /**
+   * \brief This function will go through all the TypeIds and get only the attributes which are
+   * explicit values (not vectors or pointer or arrays) and apply StartVisitTypeId
+   * and VisitAttribute on the attributes in one TypeId. At the end of each TypeId
+   * EndVisitTypeId is called.
+   */
+  void Iterate (void);
+private:
+  /**
+   * \brief Just an interface that needs to be implemented
+   */
+  virtual void StartVisitTypeId (std::string name);
+  /**
+   * \brief Just an interface that needs to be implemented
+   */
+  virtual void EndVisitTypeId (void);
+  /**
+   * \brief This method can be implemented, otherwise, it will call DoVisitAttribute
+   */
+  virtual void VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index);
+  /**
+   * \brief This method is just an interface and needs to be implemented
+   */
+  virtual void DoVisitAttribute (std::string name, std::string defaultValue);
+};
+
+} // namespace ns3
+
+#endif /* ATTRIBUTE_DEFAULT_ITERATOR_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/attribute-iterator.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,285 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+ 
+#include "attribute-iterator.h"
+#include "ns3/config.h"
+#include "ns3/log.h"
+#include "ns3/pointer.h"
+#include "ns3/object-vector.h"
+#include "ns3/string.h"
+#include <fstream>
+
+
+NS_LOG_COMPONENT_DEFINE ("AttributeIterator");
+
+namespace ns3 {
+
+
+AttributeIterator::AttributeIterator ()
+{
+}
+
+AttributeIterator::~AttributeIterator ()
+{
+}
+
+void 
+AttributeIterator::Iterate (void)
+{
+  for (uint32_t i = 0; i < Config::GetRootNamespaceObjectN (); ++i)
+    {
+      Ptr<Object> object = Config::GetRootNamespaceObject (i);
+      StartVisitObject (object);
+      DoIterate (object);
+      EndVisitObject ();
+    }
+  NS_ASSERT (m_currentPath.empty ());
+  NS_ASSERT (m_examined.empty ());
+}
+
+bool
+AttributeIterator::IsExamined (Ptr<const Object> object)
+{
+  for (uint32_t i = 0; i < m_examined.size (); ++i)
+    {
+      if (object == m_examined[i])
+        {
+          return true;
+        }
+    }
+  return false;
+}
+
+
+std::string
+AttributeIterator::GetCurrentPath (std::string attr) const
+{
+  std::ostringstream oss;
+  for (uint32_t i = 0; i < m_currentPath.size (); ++i)
+    {
+      oss << "/" << m_currentPath[i];
+    }
+  if (attr != "")
+    {
+      oss << "/" << attr;
+    }
+  return oss.str ();
+}
+
+std::string
+AttributeIterator::GetCurrentPath (void) const
+{
+  std::ostringstream oss;
+  for (uint32_t i = 0; i < m_currentPath.size (); ++i)
+    {
+      oss << "/" << m_currentPath[i];
+    }
+  return oss.str ();
+}
+
+void 
+AttributeIterator::DoStartVisitObject (Ptr<Object> object)
+{
+}
+void 
+AttributeIterator::DoEndVisitObject (void)
+{
+}
+void 
+AttributeIterator::DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> item)
+{
+}
+void 
+AttributeIterator::DoEndVisitPointerAttribute (void)
+{
+}
+void 
+AttributeIterator::DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector)
+{
+}
+void 
+AttributeIterator::DoEndVisitArrayAttribute (void)
+{
+}
+void 
+AttributeIterator::DoStartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item)
+{
+}
+void 
+AttributeIterator::DoEndVisitArrayItem (void)
+{
+}
+
+void 
+AttributeIterator::VisitAttribute (Ptr<Object> object, std::string name)
+{
+  m_currentPath.push_back (name);
+  DoVisitAttribute (object, name);
+  m_currentPath.pop_back ();
+}
+
+void 
+AttributeIterator::StartVisitObject (Ptr<Object> object)
+{
+  m_currentPath.push_back ("$" + object->GetInstanceTypeId ().GetName ());
+  DoStartVisitObject (object);
+}
+void 
+AttributeIterator::EndVisitObject (void)
+{
+  m_currentPath.pop_back ();
+  DoEndVisitObject ();
+}
+void 
+AttributeIterator::StartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value)
+{
+  m_currentPath.push_back (name);
+  m_currentPath.push_back ("$" + value->GetInstanceTypeId ().GetName ());
+  DoStartVisitPointerAttribute (object, name, value);
+}
+void 
+AttributeIterator::EndVisitPointerAttribute (void)
+{
+  m_currentPath.pop_back ();
+  m_currentPath.pop_back ();
+  DoEndVisitPointerAttribute ();
+}
+void 
+AttributeIterator::StartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector)
+{
+  m_currentPath.push_back (name);
+  DoStartVisitArrayAttribute (object, name, vector);
+}
+void 
+AttributeIterator::EndVisitArrayAttribute (void)
+{
+  m_currentPath.pop_back ();
+  DoEndVisitArrayAttribute ();
+}
+
+void 
+AttributeIterator::StartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item)
+{
+  std::ostringstream oss;
+  oss << index;
+  m_currentPath.push_back (oss.str ());
+  m_currentPath.push_back ("$" + item->GetInstanceTypeId ().GetName ());
+  DoStartVisitArrayItem (vector, index, item);
+}
+void 
+AttributeIterator::EndVisitArrayItem (void)
+{
+  m_currentPath.pop_back ();
+  m_currentPath.pop_back ();
+  DoEndVisitArrayItem ();
+}
+
+
+void
+AttributeIterator::DoIterate (Ptr<Object> object)
+{
+  if (IsExamined (object))
+    {
+      return;
+    }
+  TypeId tid;
+  for (tid = object->GetInstanceTypeId (); tid.HasParent (); tid = tid.GetParent ())
+    {
+      NS_LOG_DEBUG ("store " << tid.GetName ());
+      for (uint32_t i = 0; i < tid.GetAttributeN (); ++i)
+        {
+          Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (i);
+          const PointerChecker *ptrChecker = dynamic_cast<const PointerChecker *> (PeekPointer (checker));
+          if (ptrChecker != 0)
+            {
+              NS_LOG_DEBUG ("pointer attribute " << tid.GetAttributeName (i));
+              PointerValue ptr;
+              object->GetAttribute (tid.GetAttributeName (i), ptr);
+              Ptr<Object> tmp = ptr.Get<Object> ();
+              if (tmp != 0)
+                {
+                  StartVisitPointerAttribute (object, tid.GetAttributeName (i),
+                                              tmp);
+                  m_examined.push_back (object);
+                  DoIterate (tmp);
+                  m_examined.pop_back ();
+                  EndVisitPointerAttribute ();
+                }
+              continue;
+            }
+          // attempt to cast to an object vector.
+          const ObjectVectorChecker *vectorChecker = dynamic_cast<const ObjectVectorChecker *> (PeekPointer (checker));
+          if (vectorChecker != 0)
+            {
+              NS_LOG_DEBUG ("vector attribute " << tid.GetAttributeName (i));
+              ObjectVectorValue vector;
+              object->GetAttribute (tid.GetAttributeName (i), vector);
+              StartVisitArrayAttribute (object, tid.GetAttributeName (i), vector);
+              for (uint32_t j = 0; j < vector.GetN (); ++j)
+                {
+                  NS_LOG_DEBUG ("vector attribute item " << j);
+                  Ptr<Object> tmp = vector.Get (j);
+                  StartVisitArrayItem (vector, j, tmp);
+                  m_examined.push_back (object);
+                  DoIterate (tmp);
+                  m_examined.pop_back ();
+                  EndVisitArrayItem ();
+                }
+              EndVisitArrayAttribute ();
+              continue;
+            }
+          uint32_t flags = tid.GetAttributeFlags (i);
+          Ptr<const AttributeAccessor> accessor = tid.GetAttributeAccessor (i);
+          if ((flags & TypeId::ATTR_GET) && accessor->HasGetter () && 
+              (flags & TypeId::ATTR_SET) && accessor->HasSetter ())
+            {
+              VisitAttribute (object, tid.GetAttributeName (i));
+            }
+          else
+            {
+              NS_LOG_DEBUG ("could not store " << tid.GetAttributeName (i));
+            }
+        }
+    }
+  Object::AggregateIterator iter = object->GetAggregateIterator ();
+  bool recursiveAggregate = false;
+  while (iter.HasNext ())
+    {
+      Ptr<const Object> tmp = iter.Next ();
+      if (IsExamined (tmp))
+        {
+          recursiveAggregate = true;
+        }
+    }
+  if (!recursiveAggregate)
+    {
+      iter = object->GetAggregateIterator ();
+      while (iter.HasNext ())
+        {
+          Ptr<Object> tmp = const_cast<Object *> (PeekPointer (iter.Next ()));
+          StartVisitObject (tmp);
+          m_examined.push_back (object);
+          DoIterate (tmp);
+          m_examined.pop_back ();
+          EndVisitObject ();
+        }
+    }
+}
+
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/attribute-iterator.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,72 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+ 
+#ifndef ATTRIBUTE_ITERATOR_H
+#define ATTRIBUTE_ITERATOR_H
+
+#include "ns3/ptr.h"
+#include "ns3/object.h"
+#include <vector>
+
+namespace ns3 {
+
+class ObjectVectorValue;
+
+// This class is used internally by ConfigStore and GtkConfigStore.
+class AttributeIterator
+{
+public:
+  AttributeIterator ();
+  virtual ~AttributeIterator ();
+
+  void Iterate (void);
+protected:
+  std::string GetCurrentPath (void) const;
+private:
+  virtual void DoVisitAttribute (Ptr<Object> object, std::string name) = 0;
+  virtual void DoStartVisitObject (Ptr<Object> object);
+  virtual void DoEndVisitObject (void);
+  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
+  virtual void DoEndVisitPointerAttribute (void);
+  virtual void DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector);
+  virtual void DoEndVisitArrayAttribute (void);
+  virtual void DoStartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item);
+  virtual void DoEndVisitArrayItem (void);
+
+  void DoIterate (Ptr<Object> object);
+  bool IsExamined (Ptr<const Object> object);
+  std::string GetCurrentPath (std::string attr) const;
+
+  void VisitAttribute (Ptr<Object> object, std::string name);
+  void StartVisitObject (Ptr<Object> object);
+  void EndVisitObject (void);
+  void StartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
+  void EndVisitPointerAttribute (void);
+  void StartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector);
+  void EndVisitArrayAttribute (void);
+  void StartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item);
+  void EndVisitArrayItem (void);
+
+
+  std::vector<Ptr<Object> > m_examined;
+  std::vector<std::string> m_currentPath;
+};
+
+} // namespace ns3
+
+#endif /* ATTRIBUTE_ITERATOR_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/config-store.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,135 @@
+#include "config-store.h"
+#include "raw-text-config.h"
+#include "ns3/string.h"
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/enum.h"
+#include "ns3/attribute-list.h"
+#include "ns3/config-store-config.h"
+#ifdef HAVE_LIBXML2
+#include "xml-config.h"
+#endif
+
+#include <string>
+#include <fstream>
+#include <iostream>
+#include <unistd.h>
+#include <stdlib.h>
+
+
+NS_LOG_COMPONENT_DEFINE ("ConfigStore");
+
+namespace ns3 {
+
+
+NS_OBJECT_ENSURE_REGISTERED (ConfigStore);
+
+TypeId 
+ConfigStore::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::ConfigStore")
+    .SetParent<ObjectBase> ()
+    .AddAttribute ("Mode", 
+		   "Configuration mode",
+		   EnumValue (ConfigStore::NONE),
+		   MakeEnumAccessor (&ConfigStore::SetMode),
+		   MakeEnumChecker (ConfigStore::NONE, "None",
+				    ConfigStore::LOAD, "Load",
+				    ConfigStore::SAVE, "Save"))
+    .AddAttribute ("Filename", 
+		   "The file where the configuration should be saved to or loaded from.",
+		   StringValue (""),
+		   MakeStringAccessor (&ConfigStore::SetFilename),
+		   MakeStringChecker ())
+    .AddAttribute ("FileFormat",
+		   "Type of file format",
+		   EnumValue (ConfigStore::RAW_TEXT),
+		   MakeEnumAccessor (&ConfigStore::SetFileFormat),
+		   MakeEnumChecker (ConfigStore::RAW_TEXT, "RawText",
+				    ConfigStore::XML, "Xml"))
+    ;
+  return tid;
+}
+TypeId 
+ConfigStore::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+
+ConfigStore::ConfigStore ()
+{
+  ObjectBase::ConstructSelf (AttributeList ());
+
+#ifdef HAVE_LIBXML2
+  if (m_fileFormat == ConfigStore::XML)
+    {
+      if (m_mode == ConfigStore::SAVE)
+	{
+	  m_file = new XmlConfigSave ();
+	}
+      else if (m_mode == ConfigStore::LOAD)
+	{
+	  m_file = new XmlConfigLoad ();
+	}
+      else 
+	{
+	  m_file = new NoneFileConfig ();
+	}
+    }
+  else 
+#endif /* HAVE_LIBXML2 */
+  if (m_fileFormat == ConfigStore::RAW_TEXT)
+    {
+      if (m_mode == ConfigStore::SAVE)
+	{
+	  m_file = new RawTextConfigSave ();
+	}
+      else if (m_mode == ConfigStore::LOAD)
+	{
+	  m_file = new RawTextConfigLoad ();
+	}
+      else
+	{
+	  m_file = new NoneFileConfig ();
+	}
+    }
+  m_file->SetFilename (m_filename);
+}
+
+ConfigStore::~ConfigStore ()
+{
+  delete m_file;
+  m_file = 0;
+}
+
+void 
+ConfigStore::SetMode (enum Mode mode)
+{
+  m_mode = mode;
+}
+void 
+ConfigStore::SetFileFormat (enum FileFormat format)
+{
+  m_fileFormat = format;
+}
+void 
+ConfigStore::SetFilename (std::string filename)
+{
+  m_filename = filename;
+}
+
+void 
+ConfigStore::ConfigureAttributes (void)
+{
+  m_file->Attributes ();
+}
+
+void 
+ConfigStore::ConfigureDefaults (void)
+{
+  m_file->Default ();
+  m_file->Global ();
+}
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/config-store.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,61 @@
+#ifndef CONFIG_STORE_H
+#define CONFIG_STORE_H
+
+#include "ns3/object-base.h"
+#include "file-config.h"
+
+namespace ns3 {
+
+/**
+ * \brief Store and load simulation attribute configuration
+ *
+ * While it is possible to generate a sample config file and lightly
+ * edit it to change a couple of values, there are cases where this
+ * process will not work because the same value on the same object
+ * can appear multiple times in the same automatically-generated 
+ * configuration file under different configuration paths.
+ *
+ * As such, the best way to use this class is to use it to generate
+ * an initial configuration file, extract from that configuration
+ * file only the strictly necessary elements, and move these minimal
+ * elements to a new configuration file which can then safely
+ * be edited. Another option is to use the ns3::GtkConfigStore class
+ * which will allow you to edit the parameters and will generate 
+ * configuration files where all the instances of the same parameter
+ * are changed.
+ */
+class ConfigStore : public ObjectBase
+{
+public:
+  enum Mode {
+    LOAD,
+    SAVE,
+    NONE
+  };
+  enum FileFormat {
+    XML,
+    RAW_TEXT
+  };
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  ConfigStore ();
+  ~ConfigStore ();
+
+  void SetMode (enum Mode mode);
+  void SetFileFormat (enum FileFormat format);
+  void SetFilename (std::string filename);
+
+  void ConfigureDefaults (void);
+  void ConfigureAttributes (void);
+
+private:
+  enum Mode m_mode;
+  enum FileFormat m_fileFormat;
+  std::string m_filename;
+  FileConfig *m_file;
+};
+
+}  // namespace ns3
+
+#endif /* CONFIG_STORE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/display-functions.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,594 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+#include "display-functions.h"
+#include "raw-text-config.h"
+#include "ns3/config.h"
+#include "ns3/string.h"
+#include "ns3/pointer.h"
+
+namespace ns3 {
+/**
+ * This function includes the name of the attribute or the editable value
+ * in the second column 
+ */
+void
+cell_data_function_col_1 (GtkTreeViewColumn *col, GtkCellRenderer *renderer,
+                          GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
+{
+  ModelNode *node;
+  gtk_tree_model_get (model, iter, COL_NODE, &node, -1);
+  if (node->type == ModelNode::NODE_ATTRIBUTE)
+    {
+      StringValue str;
+      node->object->GetAttribute (node->name, str);
+      g_object_set (renderer, "text", str.Get ().c_str (), (char*) 0);
+      g_object_set (renderer, "editable", TRUE, (char*) 0);
+    }
+  else
+    {
+      g_object_set (renderer, "text", "", (char*) 0);
+      g_object_set (renderer, "editable", FALSE, (char*) 0);
+    }
+}
+/**
+ * This function includes the name of the object, pointer, vector or vector item
+ * in the first column
+ */
+void
+cell_data_function_col_0 (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model,
+                          GtkTreeIter *iter, gpointer user_data)
+{
+  ModelNode *node;
+  gtk_tree_model_get (model, iter, COL_NODE, &node, -1);
+  g_object_set (renderer, "editable", FALSE, (char*) 0);
+  switch (node->type)
+    {
+    case ModelNode::NODE_OBJECT:
+      g_object_set (renderer, "text", node->object->GetInstanceTypeId ().GetName ().c_str (), (char*) 0);
+      break;
+    case ModelNode::NODE_POINTER:
+      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
+      break;
+    case ModelNode::NODE_VECTOR:
+      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
+      break;
+    case ModelNode::NODE_VECTOR_ITEM:
+      {
+        std::stringstream oss;
+        oss << node->index;
+        g_object_set (renderer, "text", oss.str ().c_str (), (char*) 0);
+      }
+      break;
+    case ModelNode::NODE_ATTRIBUTE:
+      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
+      break;
+    }
+}
+
+/**
+ * This is the callback called when the value of an attribute is changed
+ */
+void
+cell_edited_callback (GtkCellRendererText *cell, gchar *path_string,
+                      gchar *new_text, gpointer user_data)
+{
+  GtkTreeModel *model = GTK_TREE_MODEL (user_data);
+  GtkTreeIter iter;
+  gtk_tree_model_get_iter_from_string (model, &iter, path_string);
+  ModelNode *node;
+  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
+  NS_ASSERT (node->type == ModelNode::NODE_ATTRIBUTE);
+  node->object->SetAttribute (node->name, StringValue (new_text));
+}
+
+/**
+ * This function gets the column number 0 or 1 from the mouse
+ * click
+ */
+int
+get_col_number_from_tree_view_column (GtkTreeViewColumn *col)
+{
+  GList *cols;
+  int num;
+  g_return_val_if_fail (col != 0, -1);
+  g_return_val_if_fail (col->tree_view != 0, -1);
+  cols = gtk_tree_view_get_columns (GTK_TREE_VIEW (col->tree_view));
+  num = g_list_index (cols, (gpointer) col);
+  g_list_free (cols);
+  return num;
+}
+
+/**
+ * This function displays the tooltip for an object, pointer, vector
+ * item or an attribute
+ */
+gboolean
+cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, 
+                       GtkTooltip *tooltip, gpointer user_data)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  GtkTreeViewColumn * column;
+  if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &x, &y,
+                                          keyboard_tip, &model, 0, &iter))
+    {
+      return FALSE;
+    }
+  if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, y, 0, &column, 0, 0))
+    {
+      return FALSE;
+    }
+  int col = get_col_number_from_tree_view_column (column);
+
+  ModelNode *node;
+  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
+
+  switch (node->type)
+    {
+    case ModelNode::NODE_OBJECT:
+      if (col == 0)
+        {
+          std::string tip = "This object is of type "
+            + node->object->GetInstanceTypeId ().GetName ();
+          gtk_tooltip_set_text (tooltip, tip.c_str ());
+          return TRUE;
+        }
+      break;
+    case ModelNode::NODE_POINTER:
+      if (col == 0)
+        {
+          PointerValue ptr;
+          node->object->GetAttribute (node->name, ptr);
+          std::string tip = "This object is of type "
+            + ptr.GetObject ()->GetInstanceTypeId ().GetName ();
+          gtk_tooltip_set_text (tooltip, tip.c_str ());
+          return TRUE;
+        }
+      break;
+    case ModelNode::NODE_VECTOR:
+      break;
+    case ModelNode::NODE_VECTOR_ITEM:
+      if (col == 0)
+        {
+          std::string tip = "This object is of type "
+            + node->object->GetInstanceTypeId ().GetName ();
+          gtk_tooltip_set_text (tooltip, tip.c_str ());
+          return TRUE;
+        }
+      break;
+    case ModelNode::NODE_ATTRIBUTE:
+      {
+        uint32_t attrIndex = 0;
+        TypeId tid;
+        for (tid = node->object->GetInstanceTypeId (); tid.HasParent (); tid
+               = tid.GetParent ())
+          {
+            for (uint32_t i = 0; i < tid.GetAttributeN (); ++i)
+              {
+                if (tid.GetAttributeName (i) == node->name)
+                  {
+                    attrIndex = i;
+                    goto out;
+                  }
+              }
+          }
+out: if (col == 0)
+          {
+            std::string tip = tid.GetAttributeHelp (attrIndex);
+            gtk_tooltip_set_text (tooltip, tip.c_str ());
+          }
+        else
+          {
+            Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (
+                attrIndex);
+            std::string tip;
+            tip = "This attribute is of type " + checker->GetValueTypeName ();
+            if (checker->HasUnderlyingTypeInformation ())
+              {
+                tip += " " + checker->GetUnderlyingTypeInformation ();
+              }
+            gtk_tooltip_set_text (tooltip, tip.c_str ());
+          }
+        return TRUE;
+      }
+      break;
+    }
+  return FALSE;
+}
+
+/**
+ * This is the main view opening the widget, getting tooltips and drawing the 
+ * tree of attributes...
+ */
+GtkWidget *
+create_view (GtkTreeStore *model)
+{
+  GtkTreeViewColumn *col;
+  GtkCellRenderer *renderer;
+  GtkWidget *view;
+
+  view = gtk_tree_view_new ();
+  g_object_set (view, "has-tooltip", TRUE, (char*) 0);
+  g_signal_connect (view, "query-tooltip", (GCallback) cell_tooltip_callback, 0);
+
+  gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
+  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE);
+
+  col = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title (col, "Object Attributes");
+  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_column_pack_start (col, renderer, TRUE);
+  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_0, 0, 0);
+  g_object_set (renderer, "editable", FALSE, (char*) 0);
+
+  col = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title (col, "Attribute Value");
+  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
+  renderer = gtk_cell_renderer_text_new ();
+  g_signal_connect (renderer, "edited", (GCallback) cell_edited_callback, model);
+  gtk_tree_view_column_pack_start (col, renderer, TRUE);
+  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_1, 0, 0);
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
+
+  g_object_unref (model); /* destroy model automatically with view */
+
+  return view;
+}
+
+/**
+ * This is the action done when the user presses on the save button.
+ * It will save the config to a file.
+ */
+void
+save_clicked (GtkButton *button, gpointer user_data)
+{
+  GtkWidget *parent_window = GTK_WIDGET (user_data);
+  GtkWidget *dialog;
+
+  dialog = gtk_file_chooser_dialog_new ("Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE,
+                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
+                                        GTK_RESPONSE_ACCEPT, (char *) 0);
+  gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
+                                                  TRUE);
+
+  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "config.txt");
+
+  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+    {
+      char *filename;
+
+      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+      RawTextConfigSave config;
+      config.SetFilename (filename);
+      config.Attributes ();
+      g_free (filename);
+    }
+
+  gtk_widget_destroy (dialog);
+}
+
+/**
+ * If the user presses the button load, it will load the config file into memory.
+ */
+void
+load_clicked (GtkButton *button, gpointer user_data)
+{
+  GtkWidget *parent_window = GTK_WIDGET (user_data);
+  GtkWidget *dialog;
+
+  dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN,
+                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
+                                        GTK_RESPONSE_ACCEPT, (char *) 0);
+
+  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+    {
+      char *filename;
+
+      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+      RawTextConfigLoad config;
+      config.SetFilename (filename);
+      config.Attributes ();
+    }
+
+  gtk_widget_destroy (dialog);
+}
+
+/**
+ * Exit the window when exit button is pressed
+ */
+void
+exit_clicked_callback (GtkButton *button, gpointer user_data)
+{
+  gtk_main_quit ();
+  gtk_widget_hide (GTK_WIDGET (user_data));
+}
+
+/**
+ * Exit the application
+ */
+gboolean
+delete_event_callback (GtkWidget *widget, GdkEvent *event, gpointer user_data)
+{
+  gtk_main_quit ();
+  gtk_widget_hide (GTK_WIDGET (user_data));
+  return TRUE;
+}
+
+/**
+ * Delete the tree model contents
+ */
+gboolean
+clean_model_callback (GtkTreeModel *model, GtkTreePath *path,
+                      GtkTreeIter *iter, gpointer data)
+{
+  ModelNode *node;
+  gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_NODE, &node, -1);
+  delete node;
+  gtk_tree_store_set (GTK_TREE_STORE (model), iter, COL_NODE, (ModelNode*) 0,
+                      -1);
+  return FALSE;
+}
+
+/**************************     display functions used by default configurator **********************/
+/**
+ * This function writes data in the second column, this data is going to be editable
+ * if it is a NODE_ATTRIBUTE
+ */
+void
+cell_data_function_col_1_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, 
+                                         GtkTreeModel *model, GtkTreeIter *iter,
+                                         gpointer user_data)
+{
+  ModelTypeid *node;
+  gtk_tree_model_get (model, iter, COL_TYPEID, &node, -1);
+  if (node->type == ModelTypeid::NODE_ATTRIBUTE)
+    {
+      g_object_set (renderer, "text", node->defaultValue.c_str (), (char*) 0);
+      g_object_set (renderer, "editable", TRUE, (char*) 0);
+    }
+  else
+    {
+      g_object_set (renderer, "text", "", (char*) 0);
+      g_object_set (renderer, "editable", FALSE, (char*) 0);
+    }
+}
+/**
+ * This function writes the attribute or typeid name in the column 0
+ */
+void
+cell_data_function_col_0_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, 
+                                         GtkTreeIter *iter, gpointer user_data)
+{
+  ModelTypeid *node;
+  gtk_tree_model_get (model, iter, COL_NODE, &node, -1);
+  g_object_set (renderer, "editable", FALSE, (char*) 0);
+  switch (node->type)
+    {
+    case ModelTypeid::NODE_TYPEID:
+      g_object_set (renderer, "text", node->tid.GetName ().c_str (), (char*) 0);
+      break;
+    case ModelTypeid::NODE_ATTRIBUTE:
+      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
+      break;
+    }
+}
+
+
+/**
+ *  This functions is called whenever there is a change in the value of an attribute
+ *  If the input value is ok, it will be updated in the default value and in the
+ *  gui, otherwise, it won't be updated in both.
+ */
+void
+cell_edited_callback_config_default (GtkCellRendererText *cell, gchar *path_string,
+                                     gchar *new_text, gpointer user_data)
+{
+  GtkTreeModel *model = GTK_TREE_MODEL (user_data);
+  GtkTreeIter iter;
+  gtk_tree_model_get_iter_from_string (model, &iter, path_string);
+  ModelTypeid *node;
+  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
+  NS_ASSERT (node->type == ModelTypeid::NODE_ATTRIBUTE);
+  if (Config::SetDefaultFailSafe (node->tid.GetAttributeFullName (node->index),StringValue (new_text)))
+    {
+      node->defaultValue = new_text;
+    }
+}
+
+/**
+ * This function is used to display a tooltip whenever the user puts the mouse
+ * over a type ID or an attribute. It will give the type and the possible values of
+ * an attribute value and the type of the object for an attribute object or a 
+ * typeID object 
+ */
+gboolean
+cell_tooltip_callback_config_default (GtkWidget *widget, gint x, gint y,
+                                      gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  GtkTreeViewColumn * column;
+  if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &x, &y,
+                                          keyboard_tip, &model, 0, &iter))
+    {
+      return FALSE;
+    }
+  if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, y, 0, &column, 0, 0))
+    {
+      return FALSE;
+    }
+  int col = get_col_number_from_tree_view_column (column);
+
+  ModelTypeid *node;
+  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
+
+  switch (node->type)
+    {
+    case ModelTypeid::NODE_TYPEID:
+      if (col == 0)
+        {
+          std::string tip = "This object is of type " + node->tid.GetName ();
+          gtk_tooltip_set_text (tooltip, tip.c_str ());
+          return TRUE;
+        }
+      break;
+    case ModelTypeid::NODE_ATTRIBUTE:
+      {
+        uint32_t attrIndex = node->index;
+        if (col == 0)
+          {
+            std::string tip = node->tid.GetAttributeHelp (attrIndex);
+            gtk_tooltip_set_text (tooltip, tip.c_str ());
+          }
+        else
+          {
+            Ptr<const AttributeChecker> checker = node->tid.GetAttributeChecker (attrIndex);
+            std::string tip;
+            tip = "This attribute is of type " + checker->GetValueTypeName ();
+            if (checker->HasUnderlyingTypeInformation ())
+              {
+                tip += " " + checker->GetUnderlyingTypeInformation ();
+              }
+            gtk_tooltip_set_text (tooltip, tip.c_str ());
+          }
+        return TRUE;
+      }
+      break;
+    }
+  return FALSE;
+}
+
+/**
+ * This is the action done when the user presses on the save button.
+ * It will save the config to a file.
+ */
+void
+save_clicked_default (GtkButton *button, gpointer user_data)
+{
+  GtkWidget *parent_window = GTK_WIDGET (user_data);
+  GtkWidget *dialog;
+
+  dialog = gtk_file_chooser_dialog_new ("Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE,
+                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
+                                        GTK_RESPONSE_ACCEPT, (char *) 0);
+  gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
+                                                  TRUE);
+
+  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "config.txt");
+
+  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+    {
+      char *filename;
+
+      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+      RawTextConfigSave config;
+      config.SetFilename (filename);
+      config.Default ();
+      g_free (filename);
+    }
+
+  gtk_widget_destroy (dialog);
+}
+
+/**
+ * If the user presses the button load, it will load the config file into memory.
+ */
+void
+load_clicked_default (GtkButton *button, gpointer user_data)
+{
+  GtkWidget *parent_window = GTK_WIDGET (user_data);
+  GtkWidget *dialog;
+
+  dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN,
+                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
+                                        GTK_RESPONSE_ACCEPT, (char *) 0);
+
+  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+    {
+      char *filename;
+
+      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+      RawTextConfigLoad config;
+      config.SetFilename (filename);
+      config.Default ();
+    }
+
+  gtk_widget_destroy (dialog);
+}
+
+/**
+ * This is the main view opening the widget, getting tooltips and drawing the 
+ * tree of attributes
+ */
+GtkWidget *
+create_view_config_default (GtkTreeStore *model)
+{
+  GtkTreeViewColumn *col;
+  GtkCellRenderer *renderer;
+  GtkWidget *view;
+
+  view = gtk_tree_view_new ();
+  g_object_set (view, "has-tooltip", TRUE, (char*) 0);
+  g_signal_connect (view, "query-tooltip", (GCallback) cell_tooltip_callback_config_default, 0);
+
+  gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
+  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE);
+
+  col = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title (col, "Object Attributes");
+  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_column_pack_start (col, renderer, TRUE);
+  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_0_config_default, 0, 0);
+  g_object_set (renderer, "editable", FALSE, (char*) 0);
+
+  col = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_title (col, "Attribute Value");
+  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
+  renderer = gtk_cell_renderer_text_new ();
+  g_signal_connect (renderer, "edited", (GCallback) cell_edited_callback_config_default, model);
+  gtk_tree_view_column_pack_start (col, renderer, TRUE);
+  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_1_config_default, 0, 0);
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
+
+  g_object_unref (model); /* destroy model automatically with view */
+
+  return view;
+}
+
+/**
+ * Delete the tree model contents
+ */
+gboolean
+clean_model_callback_config_default (GtkTreeModel *model, GtkTreePath *path,
+                                     GtkTreeIter *iter, gpointer data)
+{
+  ModelTypeid *node;
+  gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_TYPEID, &node, -1);
+  delete node;
+  gtk_tree_store_set (GTK_TREE_STORE (model), iter, COL_TYPEID, (ModelTypeid*) 0, -1);
+  return FALSE;
+}
+
+
+}//end ns3 namespace
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/display-functions.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,150 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+#ifndef DISPLAY_FUNCTIONS_H
+#define DISPLAY_FUNCTIONS_H
+
+#include "model-node-creator.h"
+#include "model-typeid-creator.h"
+#include <gtk/gtk.h>
+
+namespace ns3 {
+/**
+ * This function includes the name of the attribute or the editable value
+ * in the second column 
+ */
+void
+cell_data_function_col_1 (GtkTreeViewColumn *col, GtkCellRenderer *renderer,
+                          GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data);
+/**
+ * This function includes the name of the object, pointer, vector or vector item
+ * in the first column
+ */
+void
+cell_data_function_col_0 (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model,
+                          GtkTreeIter *iter, gpointer user_data);
+/**
+ * This is the callback called when the value of an attribute is changed
+ */
+void
+cell_edited_callback (GtkCellRendererText *cell, gchar *path_string,
+                      gchar *new_text, gpointer user_data);
+/**
+ * This function gets the column number 0 or 1 from the mouse
+ * click
+ */
+int
+get_col_number_from_tree_view_column (GtkTreeViewColumn *col);
+/**
+ * This function displays the tooltip for an object, pointer, vector
+ * item or an attribute
+ */
+gboolean
+cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, 
+                       GtkTooltip *tooltip, gpointer user_data);
+/**
+ * This is the main view opening the widget, getting tooltips and drawing the 
+ * tree of attributes...
+ */
+GtkWidget *
+create_view (GtkTreeStore *model);
+/**
+ * This is the action done when the user presses on the save button.
+ * It will save the config to a file.
+ */
+void
+save_clicked (GtkButton *button, gpointer user_data);
+/**
+ * If the user presses the button load, it will load the config file into memory.
+ */
+void
+load_clicked (GtkButton *button, gpointer user_data);
+/**
+ * Exit the window when exit button is pressed
+ */
+void
+exit_clicked_callback (GtkButton *button, gpointer user_data);
+/**
+ * Exit the application
+ */
+gboolean
+delete_event_callback (GtkWidget *widget, GdkEvent *event, gpointer user_data);
+/**
+ * Delete the tree model contents
+ */
+gboolean
+clean_model_callback (GtkTreeModel *model, GtkTreePath *path,
+                      GtkTreeIter *iter, gpointer data);
+/**************************     display functions used by default configurator **********************/
+/**
+ * This function writes data in the second column, this data is going to be editable
+ * if it is a NODE_ATTRIBUTE
+ */
+void
+cell_data_function_col_1_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, 
+                                         GtkTreeModel *model, GtkTreeIter *iter,
+                                         gpointer user_data);
+/**
+ * This function writes the attribute or typeid name in the column 0
+ */
+void
+cell_data_function_col_0_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, 
+                                         GtkTreeIter *iter, gpointer user_data);
+/**
+ * This is the action done when the user presses on the save button.
+ * It will save the config to a file.
+ */
+void
+save_clicked_default (GtkButton *button, gpointer user_data);
+/**
+ * If the user presses the button load, it will load the config file into memory.
+ */
+void
+load_clicked_default (GtkButton *button, gpointer user_data);
+/**
+ *  This functions is called whenever there is a change in the value of an attribute
+ *  If the input value is ok, it will be updated in the default value and in the
+ *  gui, otherwise, it won't be updated in both.
+ */
+void
+cell_edited_callback_config_default (GtkCellRendererText *cell, gchar *path_string,
+                                     gchar *new_text, gpointer user_data);
+/**
+ * This function is used to display a tooltip whenever the user puts the mouse
+ * over a type ID or an attribute. It will give the type and the possible values of
+ * an attribute value and the type of the object for an attribute object or a 
+ * typeID object 
+ */
+gboolean
+cell_tooltip_callback_config_default (GtkWidget *widget, gint x, gint y,
+                                      gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data);
+/**
+ * This is the main view opening the widget, getting tooltips and drawing the 
+ * tree of attributes
+ */
+GtkWidget *
+create_view_config_default (GtkTreeStore *model);
+/**
+ * Delete the tree model contents
+ */
+gboolean
+clean_model_callback_config_default (GtkTreeModel *model, GtkTreePath *path,
+                                     GtkTreeIter *iter, gpointer data);
+}//end namespace ns3
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/file-config.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,25 @@
+#include "file-config.h"
+
+namespace ns3 {
+
+FileConfig::~FileConfig ()
+{}
+
+NoneFileConfig::NoneFileConfig ()
+{}
+NoneFileConfig::~NoneFileConfig ()
+{}
+void 
+NoneFileConfig::SetFilename (std::string filename)
+{}
+void 
+NoneFileConfig::Default (void)
+{}
+void 
+NoneFileConfig::Global (void)
+{}
+void 
+NoneFileConfig::Attributes (void)
+{}
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/file-config.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,31 @@
+#ifndef FILE_CONFIG_H
+#define FILE_CONFIG_H
+
+#include <string>
+
+namespace ns3 {
+
+class FileConfig
+{
+public:
+  virtual ~FileConfig ();
+  virtual void SetFilename (std::string filename) = 0;
+  virtual void Default (void) = 0;
+  virtual void Global (void) = 0;
+  virtual void Attributes (void) = 0;
+};
+
+class NoneFileConfig : public FileConfig
+{
+public:
+  NoneFileConfig ();
+  virtual ~NoneFileConfig ();
+  virtual void SetFilename (std::string filename);
+  virtual void Default (void);
+  virtual void Global (void);
+  virtual void Attributes (void);
+};
+
+} // namespace ns3
+
+#endif /* FILE_CONFIG_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/gtk-config-store.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,139 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#include "gtk-config-store.h"
+#include "raw-text-config.h"
+#include "display-functions.h"
+#include "ns3/log.h"
+#include <fstream>
+
+
+namespace ns3 {
+
+NS_LOG_COMPONENT_DEFINE ("GtkconfigStore");
+
+
+GtkConfigStore::GtkConfigStore ()
+{
+}
+
+void
+GtkConfigStore::ConfigureDefaults (void)
+{
+  //this function should be called before running the script to enable the user
+  //to configure the default values for the objects he wants to use
+  GtkWidget *window;
+  GtkWidget *view;
+  GtkWidget *scroll;
+
+  gtk_init (0, 0);
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_title (GTK_WINDOW (window), "ns-3 Default attributes.");
+  gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
+
+  g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
+  GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
+  ModelTypeidCreator creator;
+  creator.Build (model);
+
+  view = create_view_config_default (model);
+  scroll = gtk_scrolled_window_new (0, 0);
+  gtk_container_add (GTK_CONTAINER (scroll), view);
+
+  GtkWidget *vbox = gtk_vbox_new (FALSE, 5);
+  gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
+  gtk_box_pack_end (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
+  GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
+  gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+  GtkWidget *save = gtk_button_new_with_label ("Save");
+  g_signal_connect (save, "clicked",  (GCallback) save_clicked_default, window);
+  gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
+  GtkWidget *load = gtk_button_new_with_label ("Load");
+  g_signal_connect (load, "clicked",  (GCallback) load_clicked_default, window);
+  gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
+  GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
+  g_signal_connect (exit, "clicked",  (GCallback) exit_clicked_callback, window);
+  gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
+
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+
+  gtk_widget_show_all (window);
+
+  gtk_main ();
+
+  gtk_tree_model_foreach (GTK_TREE_MODEL (model), 
+                          clean_model_callback_config_default,
+                          0);
+
+  gtk_widget_destroy (window); 
+}
+
+void 
+GtkConfigStore::ConfigureAttributes (void)
+{
+  GtkWidget *window;
+  GtkWidget *view;
+  GtkWidget *scroll;
+
+  gtk_init (0, 0);
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_title (GTK_WINDOW (window), "ns-3 Object attributes.");
+  gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
+
+  g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
+
+
+  GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
+  ModelCreator creator;
+  creator.Build (model);
+
+  view = create_view (model);
+  scroll = gtk_scrolled_window_new (0, 0);
+  gtk_container_add (GTK_CONTAINER (scroll), view);
+
+  GtkWidget *vbox = gtk_vbox_new (FALSE, 5);
+  gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
+  gtk_box_pack_end (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
+  GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
+  gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+  GtkWidget *save = gtk_button_new_with_label ("Save");
+  g_signal_connect (save, "clicked",  (GCallback) save_clicked, window);
+  gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
+  GtkWidget *load = gtk_button_new_with_label ("Load");
+  g_signal_connect (load, "clicked",  (GCallback) load_clicked, window);
+  gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
+  GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
+  g_signal_connect (exit, "clicked",  (GCallback) exit_clicked_callback, window);
+  gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
+
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+
+  gtk_widget_show_all (window);
+
+  gtk_main ();
+
+  gtk_tree_model_foreach (GTK_TREE_MODEL (model), 
+                          clean_model_callback,
+                          0);
+
+  gtk_widget_destroy (window);
+}
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/gtk-config-store.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,40 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#ifndef GTK_CONFIG_STORE_H
+#define GTK_CONFIG_STORE_H
+
+namespace ns3 {
+
+/**
+ * \brief A class that provides a GTK-based front end to ns3::ConfigStore 
+ */
+class GtkConfigStore
+{
+public:
+  GtkConfigStore ();
+
+  void ConfigureDefaults (void);
+  void ConfigureAttributes (void);
+};
+
+
+} // namespace ns3
+
+#endif /* GTK_CONFIG_STORE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/model-node-creator.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,130 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+ 
+#include "model-node-creator.h"
+namespace ns3 {
+
+ModelCreator::ModelCreator ()
+{
+}
+void
+
+ModelCreator::Build (GtkTreeStore *treestore)
+{
+  m_treestore = treestore;
+  m_iters.push_back (0);
+  //this function will go through all the objects and call on them
+  //DoStartVisitObject, DoIterate and DoEndVisitObject
+  Iterate ();
+  NS_ASSERT (m_iters.size () == 1);
+}
+
+
+void
+ModelCreator::Add (ModelNode *node)
+{
+  GtkTreeIter *parent = m_iters.back ();
+  GtkTreeIter *current = g_new (GtkTreeIter, 1);
+  gtk_tree_store_append (m_treestore, current, parent);
+  gtk_tree_store_set (m_treestore, current,
+                      COL_NODE, node, -1);
+  m_iters.push_back (current);
+}
+void
+ModelCreator::Remove (void)
+{
+  GtkTreeIter *iter = m_iters.back ();
+  g_free (iter);
+  m_iters.pop_back ();
+}
+
+void 
+ModelCreator::DoVisitAttribute (Ptr<Object> object, std::string name)
+{
+  ModelNode *node = new ModelNode ();
+  node->type = ModelNode::NODE_ATTRIBUTE;
+  node->object = object;
+  node->name = name;
+  Add (node);
+  Remove ();
+}
+void 
+ModelCreator::DoStartVisitObject (Ptr<Object> object)
+{
+  ModelNode *node = new ModelNode ();
+  node->type = ModelNode::NODE_OBJECT;
+  node->object = object;
+  Add (node);
+}
+void 
+ModelCreator::DoEndVisitObject (void)
+{
+  Remove ();
+}
+void 
+ModelCreator::DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value)
+{
+  ModelNode *node = new ModelNode ();
+  node->type = ModelNode::NODE_POINTER;
+  node->object = object;
+  node->name = name;
+  Add (node);
+}
+void 
+ModelCreator::DoEndVisitPointerAttribute (void)
+{
+  Remove ();
+}
+void 
+ModelCreator::DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector)
+{
+  ModelNode *node = new ModelNode ();
+  node->type = ModelNode::NODE_VECTOR;
+  node->object = object;
+  node->name = name;
+  Add (node);
+}
+void 
+ModelCreator::DoEndVisitArrayAttribute (void)
+{
+  Remove ();
+}
+void 
+ModelCreator::DoStartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item)
+{
+  GtkTreeIter *parent = m_iters.back ();
+  GtkTreeIter *current = g_new (GtkTreeIter, 1);
+  ModelNode *node = new ModelNode ();
+  node->type = ModelNode::NODE_VECTOR_ITEM;
+  node->object = item;
+  node->index = index;
+  gtk_tree_store_append (m_treestore, current, parent);
+  gtk_tree_store_set (m_treestore, current,
+              COL_NODE, node,
+                     -1);
+  m_iters.push_back (current);
+}
+void 
+ModelCreator::DoEndVisitArrayItem (void)
+{
+  GtkTreeIter *iter = m_iters.back ();
+  g_free (iter);
+  m_iters.pop_back ();  
+}
+}//end namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/model-node-creator.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,73 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+
+#include "attribute-iterator.h"
+#include <gtk/gtk.h>
+
+namespace ns3
+{
+
+enum
+{
+  COL_NODE = 0, COL_LAST
+};
+
+struct ModelNode
+{
+  enum
+  {
+    // store object + attribute name
+    NODE_ATTRIBUTE,
+    // store object + attribute name
+    NODE_POINTER,
+    // store object + attribute name
+    NODE_VECTOR,
+    // store index + value (object)
+    NODE_VECTOR_ITEM,
+    // store object
+    NODE_OBJECT
+  } type;
+  std::string name;
+  Ptr<Object> object;
+  uint32_t index;
+};
+class ModelCreator : public AttributeIterator
+{
+public:
+  ModelCreator ();
+
+  void Build (GtkTreeStore *treestore);
+private:
+  virtual void DoVisitAttribute (Ptr<Object> object, std::string name);
+  virtual void DoStartVisitObject (Ptr<Object> object);
+  virtual void DoEndVisitObject (void);
+  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
+  virtual void DoEndVisitPointerAttribute (void);
+  virtual void DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector);
+  virtual void DoEndVisitArrayAttribute (void);
+  virtual void DoStartVisitArrayItem (const ObjectVectorValue &vector,
+                                      uint32_t index, Ptr<Object> item);
+  virtual void DoEndVisitArrayItem (void);
+  void Add (ModelNode *node);
+  void Remove (void);
+
+  GtkTreeStore *m_treestore;
+  std::vector<GtkTreeIter *> m_iters;
+};
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/model-typeid-creator.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,81 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Author: Faker Moatamri <faker.moatamri@sophia.inria.fr>
+ */
+
+#include "model-typeid-creator.h"
+
+namespace ns3 {
+
+ModelTypeidCreator::ModelTypeidCreator ()
+{
+}
+void
+
+ModelTypeidCreator::Build (GtkTreeStore *treestore)
+{
+  m_treestore = treestore;
+  m_iters.push_back (0);
+  Iterate ();
+  NS_ASSERT (m_iters.size () == 1);
+}
+
+void
+ModelTypeidCreator::Add (ModelTypeid *node)
+{
+  GtkTreeIter *parent = m_iters.back ();
+  GtkTreeIter *current = g_new (GtkTreeIter, 1);
+  gtk_tree_store_append (m_treestore, current, parent);
+  gtk_tree_store_set (m_treestore, current, COL_TYPEID, node, -1);
+  m_iters.push_back (current);
+}
+
+void
+ModelTypeidCreator::Remove (void)
+{
+  GtkTreeIter *iter = m_iters.back ();
+  g_free (iter);
+  m_iters.pop_back ();
+}
+
+void 
+ModelTypeidCreator::VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index)
+{
+  ModelTypeid *node = new ModelTypeid ();
+  node->type = ModelTypeid::NODE_ATTRIBUTE;
+  node->tid = tid;
+  node->name = name;
+  node->defaultValue = defaultValue;
+  node->index = index;
+  Add (node);
+  Remove ();
+}
+
+void 
+ModelTypeidCreator::StartVisitTypeId (std::string name)
+{
+  ModelTypeid *node = new ModelTypeid ();
+  node->type = ModelTypeid::NODE_TYPEID;
+  node->tid = TypeId::LookupByName (name);
+  Add (node);
+}
+
+void 
+ModelTypeidCreator::EndVisitTypeId (void)
+{
+  Remove ();
+}
+}//end namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/model-typeid-creator.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,82 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * Author: Moatamri Faker <faker.moatamri@sophia.inria.fr>
+ */
+
+#include "attribute-default-iterator.h"
+#include "ns3/type-id.h"
+#include <gtk/gtk.h>
+#include <vector>
+
+namespace ns3 {
+
+enum
+{
+  COL_TYPEID = 0, COL_LASTID
+};
+
+struct ModelTypeid
+{
+  enum
+  {
+    // store TypeId + attribute name +defaultValue and index
+    NODE_ATTRIBUTE,
+    // store TypeId
+    NODE_TYPEID
+  } type;
+  std::string name;
+  std::string defaultValue;
+  //The TypeId object and if it is an attribute, it's the TypeId object of the attribute
+  TypeId tid;
+  //stores the index of the attribute in list of attributes for a given TypeId
+  uint32_t index;
+};
+class ModelTypeidCreator : public AttributeDefaultIterator
+{
+public:
+  ModelTypeidCreator ();
+  /**
+   * \brief This method will iterate on typeIds having default attributes and create a model
+   * for them, this model will be used by the view.
+   */
+  void Build (GtkTreeStore *treestore);
+private:
+  /**
+   * \brief This method will add a ModelTypeid to the GtkTreeIterator
+   */
+  virtual void VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index);
+  /**
+   * \brief Add a node for the new TypeId object
+   */
+  virtual void StartVisitTypeId (std::string name);
+  /**
+   * \brief Remove the last gtk tree iterator
+   */
+  virtual void EndVisitTypeId (void);
+  /**
+   * \brief Adds a treestore iterator to m_treestore model
+   */
+  void Add (ModelTypeid *node);
+  /**
+   * Removes the last GtkTreeIterator from m_iters
+   */
+  void Remove (void);
+  //this is the TreeStore model corresponding to the view
+  GtkTreeStore *m_treestore;
+  //This contains a vector of iterators used to build the TreeStore
+  std::vector<GtkTreeIter *> m_iters;
+};
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/raw-text-config.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,166 @@
+#include "raw-text-config.h"
+#include "attribute-iterator.h"
+#include "attribute-default-iterator.h"
+#include "ns3/global-value.h"
+#include "ns3/string.h"
+#include "ns3/log.h"
+#include "ns3/config.h"
+
+NS_LOG_COMPONENT_DEFINE ("RawTextConfig");
+
+namespace ns3 {
+
+RawTextConfigSave::RawTextConfigSave ()
+  : m_os (0)
+{}
+RawTextConfigSave::~RawTextConfigSave ()
+{
+  if (m_os != 0)
+    {
+      m_os->close ();
+    }
+  delete m_os;
+  m_os = 0;
+}
+void 
+RawTextConfigSave::SetFilename (std::string filename)
+{
+  m_os = new std::ofstream ();
+  m_os->open (filename.c_str (), std::ios::out);
+}
+void 
+RawTextConfigSave::Default (void)
+{
+  class RawTextDefaultIterator : public AttributeDefaultIterator
+  {
+  public:
+    RawTextDefaultIterator (std::ostream *os) {
+      m_os = os;
+    }
+  private:
+    virtual void StartVisitTypeId (std::string name) {
+      m_typeId = name;
+    }
+    virtual void DoVisitAttribute (std::string name, std::string defaultValue) {
+      *m_os << "default " << m_typeId << "::" << name << " \"" << defaultValue << "\"" << std::endl;
+    }
+    std::string m_typeId;
+    std::ostream *m_os;
+  };
+
+  RawTextDefaultIterator iterator = RawTextDefaultIterator (m_os);
+  iterator.Iterate ();
+}
+void 
+RawTextConfigSave::Global (void)
+{
+  for (GlobalValue::Iterator i = GlobalValue::Begin (); i != GlobalValue::End (); ++i)
+    {
+      StringValue value;
+      (*i)->GetValue (value);
+      *m_os << "global " << (*i)->GetName () << " \"" << value.Get () << "\"" << std::endl;
+    }
+}
+void 
+RawTextConfigSave::Attributes (void)
+{
+  class RawTextAttributeIterator : public AttributeIterator
+  {
+  public:
+    RawTextAttributeIterator (std::ostream *os)
+      : m_os (os) {}
+  private:
+    virtual void DoVisitAttribute (Ptr<Object> object, std::string name) {
+      StringValue str;
+      object->GetAttribute (name, str);
+      *m_os << "value " << GetCurrentPath () << " \"" << str.Get () << "\"" << std::endl;
+    }
+    std::ostream *m_os;
+  };
+
+  RawTextAttributeIterator iter = RawTextAttributeIterator (m_os);
+  iter.Iterate ();
+}
+
+RawTextConfigLoad::RawTextConfigLoad ()
+  : m_is (0)
+{}
+RawTextConfigLoad::~RawTextConfigLoad ()
+{
+  if (m_is != 0)
+    {
+      m_is->close ();
+      delete m_is;
+      m_is = 0;
+    }
+}
+void 
+RawTextConfigLoad::SetFilename (std::string filename)
+{
+  m_is = new std::ifstream ();
+  m_is->open (filename.c_str (), std::ios::in);
+}
+std::string
+RawTextConfigLoad::Strip (std::string value)
+{
+  std::string::size_type start = value.find ("\"");
+  std::string::size_type end = value.find ("\"", 1);
+  NS_ASSERT (start == 0);
+  NS_ASSERT (end == value.size () - 1);
+  return value.substr (start+1, end-start-1);
+}
+
+void 
+RawTextConfigLoad::Default (void)
+{
+  m_is->seekg (0);
+  std::string type, name, value;
+  *m_is >> type >> name >> value;
+  while (m_is->good())
+    {
+      NS_LOG_DEBUG ("type=" << type << ", name=" << name << ", value=" << value);
+      value = Strip (value);
+      if (type == "default")
+	{
+	  Config::SetDefault (name, StringValue (value));
+	}
+      *m_is >> type >> name >> value;
+    }
+}
+void 
+RawTextConfigLoad::Global (void)
+{
+  m_is->seekg (0);
+  std::string type, name, value;
+  *m_is >> type >> name >> value;
+  while (m_is->good())
+    {
+      NS_LOG_DEBUG ("type=" << type << ", name=" << name << ", value=" << value);
+      value = Strip (value);
+      if (type == "global")
+	{
+	  Config::SetGlobal (name, StringValue (value));
+	}
+      *m_is >> type >> name >> value;
+    }
+}
+void 
+RawTextConfigLoad::Attributes (void)
+{
+  m_is->seekg (0);
+  std::string type, path, value;
+  *m_is >> type >> path >> value;
+  while (m_is->good())
+    {
+      NS_LOG_DEBUG ("type=" << type << ", path=" << path << ", value=" << value);
+      value = Strip (value);
+      if (type == "value")
+	{
+	  Config::Set (path, StringValue (value));
+	}
+      *m_is >> type >> path >> value;
+    }
+}
+
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/raw-text-config.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,39 @@
+#ifndef RAW_TEXT_CONFIG_H
+#define RAW_TEXT_CONFIG_H
+
+#include <string>
+#include <fstream>
+#include "file-config.h"
+
+namespace ns3 {
+
+class RawTextConfigSave : public FileConfig
+{
+public:
+  RawTextConfigSave ();
+  virtual ~RawTextConfigSave ();
+  virtual void SetFilename (std::string filename);
+  virtual void Default (void);
+  virtual void Global (void);
+  virtual void Attributes (void);
+private:
+  std::ofstream *m_os;
+};
+
+class RawTextConfigLoad : public FileConfig
+{
+public:
+  RawTextConfigLoad ();
+  virtual ~RawTextConfigLoad ();
+  virtual void SetFilename (std::string filename);
+  virtual void Default (void);
+  virtual void Global (void);
+  virtual void Attributes (void);
+private:
+  std::string Strip (std::string value);
+  std::ifstream *m_is;
+};
+
+} // namespace ns3
+
+#endif /* RAW_TEXT_CONFIG_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/xml-config.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,335 @@
+#include "xml-config.h"
+#include "attribute-default-iterator.h"
+#include "attribute-iterator.h"
+#include "ns3/fatal-error.h"
+#include "ns3/log.h"
+#include "ns3/global-value.h"
+#include "ns3/string.h"
+#include "ns3/config.h"
+#include <libxml/encoding.h>
+#include <libxml/xmlwriter.h>
+
+NS_LOG_COMPONENT_DEFINE ("XmlConfig");
+
+namespace ns3 {
+
+XmlConfigSave::XmlConfigSave ()
+  : m_writer (0)
+{
+  NS_LOG_FUNCTION (this);
+}
+void
+XmlConfigSave::SetFilename (std::string filename)
+{
+  NS_LOG_FUNCTION (filename);
+  if (filename == "")
+    {
+      return;
+    }
+  int rc;
+
+  /* Create a new XmlWriter for uri, with no compression. */
+  m_writer = xmlNewTextWriterFilename(filename.c_str (), 0);
+  if (m_writer == NULL) 
+    {
+      NS_FATAL_ERROR ("Error creating the xml writer");
+    }
+  rc = xmlTextWriterSetIndent (m_writer, 1);
+  if (rc < 0)
+    {
+      NS_FATAL_ERROR ("Error at xmlTextWriterSetIndent");
+    }
+  /* Start the document with the xml default for the version,
+   * encoding utf-8 and the default for the standalone
+   * declaration. */
+  rc = xmlTextWriterStartDocument(m_writer, NULL, "utf-8", NULL);
+  if (rc < 0) 
+    {
+      NS_FATAL_ERROR ("Error at xmlTextWriterStartDocument");
+    }
+
+  /* Start an element named "ns3". Since thist is the first
+   * element, this will be the root element of the document. */
+  rc = xmlTextWriterStartElement(m_writer, BAD_CAST "ns3");
+  if (rc < 0) 
+    {
+      NS_FATAL_ERROR ("Error at xmlTextWriterStartElement\n");
+    }
+}
+XmlConfigSave::~XmlConfigSave ()
+{
+  NS_LOG_FUNCTION (this);
+  if (m_writer == 0)
+    {
+      return;
+    }
+  int rc;
+  /* Here we could close the remaining elements using the
+   * function xmlTextWriterEndElement, but since we do not want to
+   * write any other elements, we simply call xmlTextWriterEndDocument,
+   * which will do all the work. */
+  rc = xmlTextWriterEndDocument(m_writer);
+  if (rc < 0) 
+    {
+      NS_FATAL_ERROR ("Error at xmlTextWriterEndDocument\n");
+    }
+
+  xmlFreeTextWriter(m_writer);
+  m_writer = 0;
+}
+void 
+XmlConfigSave::Default (void)
+{
+  class XmlDefaultIterator : public AttributeDefaultIterator
+  {
+  public:
+    XmlDefaultIterator (xmlTextWriterPtr writer) {
+      m_writer = writer;
+    }
+  private:
+    virtual void StartVisitTypeId (std::string name) {
+      m_typeid = name;
+    }
+    virtual void DoVisitAttribute (std::string name, std::string defaultValue) {
+      int rc;
+      rc = xmlTextWriterStartElement(m_writer, BAD_CAST "default");
+       if (rc < 0) 
+	 {
+	   NS_FATAL_ERROR ("Error at xmlTextWriterStartElement");
+	 }
+       std::string fullname = m_typeid + "::" + name;
+       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "name",
+					BAD_CAST fullname.c_str ());
+       if (rc < 0) 
+	 {
+	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
+	 }
+       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "value",
+					BAD_CAST defaultValue.c_str ());
+       if (rc < 0) 
+	 {
+	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
+	 }
+      rc = xmlTextWriterEndElement(m_writer);
+      if (rc < 0) 
+	{
+	  NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
+	}
+    }
+    xmlTextWriterPtr m_writer;
+    std::string m_typeid;
+  };
+  XmlDefaultIterator iterator = XmlDefaultIterator (m_writer);
+  iterator.Iterate ();
+}
+
+void
+XmlConfigSave::Attributes (void)
+{
+  class XmlTextAttributeIterator : public AttributeIterator
+  {
+  public:
+    XmlTextAttributeIterator (xmlTextWriterPtr writer)
+      : m_writer (writer) {}
+  private:
+    virtual void DoVisitAttribute (Ptr<Object> object, std::string name) {
+      StringValue str;
+      object->GetAttribute (name, str);
+      int rc;
+      rc = xmlTextWriterStartElement(m_writer, BAD_CAST "value");
+      if (rc < 0) 
+	{
+	  NS_FATAL_ERROR ("Error at xmlTextWriterStartElement");
+	}
+      rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "path",
+				       BAD_CAST GetCurrentPath ().c_str ());
+      if (rc < 0) 
+	{
+	  NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
+	}
+      rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "value",
+				       BAD_CAST str.Get ().c_str ());
+      if (rc < 0) 
+	{
+	  NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
+	}
+      rc = xmlTextWriterEndElement(m_writer);
+      if (rc < 0) 
+	{
+	  NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
+	}
+    }
+    xmlTextWriterPtr m_writer;
+  };
+
+  XmlTextAttributeIterator iter = XmlTextAttributeIterator (m_writer);
+  iter.Iterate ();
+}
+
+void
+XmlConfigSave::Global (void)
+{
+  int rc;
+  for (GlobalValue::Iterator i = GlobalValue::Begin (); i != GlobalValue::End (); ++i)
+    {
+      StringValue value;
+      (*i)->GetValue (value);
+
+      rc = xmlTextWriterStartElement(m_writer, BAD_CAST "global");
+       if (rc < 0) 
+	 {
+	   NS_FATAL_ERROR ("Error at xmlTextWriterStartElement");
+	 }
+       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "name",
+					BAD_CAST (*i)->GetName ().c_str ());
+       if (rc < 0) 
+	 {
+	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
+	 }
+       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "value",
+					BAD_CAST value.Get ().c_str ());
+       if (rc < 0) 
+	 {
+	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
+	 }
+      rc = xmlTextWriterEndElement(m_writer);
+       if (rc < 0) 
+	 {
+	   NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
+	 }
+    }
+}
+
+XmlConfigLoad::XmlConfigLoad ()
+{
+  NS_LOG_FUNCTION (this);
+}
+XmlConfigLoad::~XmlConfigLoad ()
+{
+  NS_LOG_FUNCTION (this);
+}
+
+void
+XmlConfigLoad::SetFilename (std::string filename)
+{
+  NS_LOG_FUNCTION (filename);
+  m_filename = filename;
+}
+void 
+XmlConfigLoad::Default (void)
+{
+  xmlTextReaderPtr reader = xmlNewTextReaderFilename(m_filename.c_str ());
+  if (reader == NULL)
+    {
+      NS_FATAL_ERROR ("Error at xmlReaderForFile");
+    }
+  int rc;
+  rc = xmlTextReaderRead (reader);
+  while (rc > 0)
+    {
+      const xmlChar *type = xmlTextReaderConstName(reader);
+      if (type == 0)
+	{
+	  NS_FATAL_ERROR ("Invalid value");
+	}
+      if (std::string ((char*)type) == "default")
+	{
+	  xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST "name");
+	  if (name == 0)
+	    {
+	      NS_FATAL_ERROR ("Error getting attribute 'name'");
+	    }
+	  xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST "value");
+	  if (value == 0)
+	    {
+	      NS_FATAL_ERROR ("Error getting attribute 'value'");
+	    }
+	  NS_LOG_DEBUG ("default="<<(char*)name<<", value=" <<value);
+	  Config::SetDefault ((char*)name, StringValue ((char*)value));
+	  xmlFree (name);
+	  xmlFree (value);
+	}
+      rc = xmlTextReaderRead (reader);
+    }
+  xmlFreeTextReader (reader);
+}
+void 
+XmlConfigLoad::Global (void)
+{
+  xmlTextReaderPtr reader = xmlNewTextReaderFilename(m_filename.c_str ());
+  if (reader == NULL)
+    {
+      NS_FATAL_ERROR ("Error at xmlReaderForFile");
+    }
+  int rc;
+  rc = xmlTextReaderRead (reader);
+  while (rc > 0)
+    {
+      const xmlChar *type = xmlTextReaderConstName(reader);
+      if (type == 0)
+	{
+	  NS_FATAL_ERROR ("Invalid value");
+	}
+      if (std::string ((char*)type) == "global")
+	{
+	  xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST "name");
+	  if (name == 0)
+	    {
+	      NS_FATAL_ERROR ("Error getting attribute 'name'");
+	    }
+	  xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST "value");
+	  if (value == 0)
+	    {
+	      NS_FATAL_ERROR ("Error getting attribute 'value'");
+	    }
+	  NS_LOG_DEBUG ("global="<<(char*)name<<", value=" <<value);
+	  Config::SetGlobal ((char*)name, StringValue ((char*)value));
+	  xmlFree (name);
+	  xmlFree (value);
+	}
+      rc = xmlTextReaderRead (reader);
+    }
+  xmlFreeTextReader (reader);
+}
+void 
+XmlConfigLoad::Attributes (void)
+{
+  xmlTextReaderPtr reader = xmlNewTextReaderFilename(m_filename.c_str ());
+  if (reader == NULL)
+    {
+      NS_FATAL_ERROR ("Error at xmlReaderForFile");
+    }
+  int rc;
+  rc = xmlTextReaderRead (reader);
+  while (rc > 0)
+    {
+      const xmlChar *type = xmlTextReaderConstName(reader);
+      if (type == 0)
+	{
+	  NS_FATAL_ERROR ("Invalid value");
+	}
+      if (std::string ((char*)type) == "value")
+	{
+	  xmlChar *path = xmlTextReaderGetAttribute (reader, BAD_CAST "path");
+	  if (path == 0)
+	    {
+	      NS_FATAL_ERROR ("Error getting attribute 'path'");
+	    }
+	  xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST "value");
+	  if (value == 0)
+	    {
+	      NS_FATAL_ERROR ("Error getting attribute 'value'");
+	    }
+	  NS_LOG_DEBUG ("path="<<(char*)path << ", value=" << (char*)value);
+	  Config::Set ((char*)path, StringValue ((char*)value));
+	  xmlFree (path);
+	  xmlFree (value);
+	}
+      rc = xmlTextReaderRead (reader);
+    }
+  xmlFreeTextReader (reader);
+}
+
+
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/model/xml-config.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,41 @@
+#ifndef XML_CONFIG_STORE_H
+#define XML_CONFIG_STORE_H
+
+#include <string>
+#include <libxml/xmlwriter.h>
+#include <libxml/xmlreader.h>
+#include "file-config.h"
+
+namespace ns3 {
+
+class XmlConfigSave : public FileConfig
+{
+public:
+  XmlConfigSave ();
+  virtual ~XmlConfigSave ();
+
+  virtual void SetFilename (std::string filename);
+  virtual void Default (void);
+  virtual void Global (void);
+  virtual void Attributes (void);
+private:
+  xmlTextWriterPtr m_writer;
+};
+
+class XmlConfigLoad : public FileConfig
+{
+public:
+  XmlConfigLoad ();
+  virtual ~XmlConfigLoad ();
+
+  virtual void SetFilename (std::string filename);
+  virtual void Default (void);
+  virtual void Global (void);
+  virtual void Attributes (void);
+private:
+  std::string m_filename;
+};
+
+} // namespace ns3
+
+#endif /* XML_CONFIG_STORE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/config-store/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,53 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def configure(conf):
+    have_gtk = conf.pkg_check_modules('GTK_CONFIG_STORE', 'gtk+-2.0 >= 2.12', mandatory=False)
+    conf.env['ENABLE_GTK_CONFIG_STORE'] = have_gtk
+    conf.report_optional_feature("GtkConfigStore", "GtkConfigStore",
+                                 conf.env['ENABLE_GTK_CONFIG_STORE'],
+                                 "library 'gtk+-2.0 >= 2.12' not found")
+    have_libxml2 = conf.pkg_check_modules('LIBXML2', 'libxml-2.0 >= 2.6', mandatory=False)
+    if have_libxml2:
+        conf.define('HAVE_LIBXML2', 1)
+
+    conf.env['ENABLE_LIBXML2'] = have_libxml2
+    conf.report_optional_feature("XmlIo", "XmlIo",
+                                 conf.env['ENABLE_LIBXML2'],
+                                 "library 'libxml-2.0 >= 2.7' not found")
+    conf.write_config_header('ns3/config-store-config.h', top=True)
+
+
+def build(bld):
+    module = bld.create_ns3_module('config-store', ['core', 'network'])
+    module.source = [
+        'model/attribute-iterator.cc',
+        'model/config-store.cc',
+        'model/attribute-default-iterator.cc',
+        'model/file-config.cc',
+        'model/raw-text-config.cc',
+        ]
+
+    headers = bld.new_task_gen('ns3header')
+    headers.module = 'config-store'
+    headers.source = [
+        'model/file-config.h',
+        'model/config-store.h',
+        ]
+
+    if bld.env['ENABLE_GTK_CONFIG_STORE']:
+        headers.source.append ('model/gtk-config-store.h')
+        module.source.extend (['model/gtk-config-store.cc',
+                               'model/model-node-creator.cc',
+                               'model/model-typeid-creator.cc',
+                               'model/display-functions.cc',
+                               ])
+        module.uselib = 'GTK_CONFIG_STORE'
+
+    if bld.env['ENABLE_LIBXML2']:
+        module.source.append ('model/xml-config.cc')
+        if bld.env['ENABLE_GTK_CONFIG_STORE']:
+            module.uselib = module.uselib + ' LIBXML2'
+        else:
+            module.uselib = 'LIBXML2'
+
+    bld.ns3_python_bindings()
--- a/src/contrib/attribute-default-iterator.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
- 
-#include "attribute-default-iterator.h"
-#include "ns3/attribute.h"
-#include "ns3/object-vector.h"
-#include "ns3/pointer.h"
-#include "ns3/global-value.h"
-#include "ns3/string.h"
-
-namespace ns3
-{
-
-AttributeDefaultIterator::~AttributeDefaultIterator ()
-{
-}
-void 
-AttributeDefaultIterator::Iterate (void)
-{
-  for (uint32_t i = 0; i < TypeId::GetRegisteredN (); i++)
-    {
-      TypeId tid = TypeId::GetRegistered (i);
-      if (tid.MustHideFromDocumentation ())
-        {
-          continue;
-        }
-      bool calledStart = false;
-      for (uint32_t j = 0; j < tid.GetAttributeN (); j++)
-        {
-          uint32_t flags = tid.GetAttributeFlags (j);
-          if (!(flags & TypeId::ATTR_CONSTRUCT))
-            {
-              // we can't construct the attribute, so, there is no
-              // initial value for the attribute
-              continue;
-            }
-          Ptr<const AttributeAccessor> accessor = tid.GetAttributeAccessor (j);
-          //No accessor, go to next attribute
-          if (accessor == 0)
-            {
-              continue;
-            }
-          if (!accessor->HasSetter ())
-            {
-              //skip this attribute it doesn't have an setter
-              continue;
-            }
-          Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (j);
-          if (checker == 0)
-            {
-              //skip, it doesn't have a checker
-              continue;
-            }
-          Ptr<const AttributeValue> value = tid.GetAttributeInitialValue (j);
-          if (value == 0)
-            {
-              //No value, check next attribute
-              continue;
-            }
-          Ptr<const ObjectVectorValue> vector = DynamicCast<const ObjectVectorValue> (value);
-          if (vector != 0)
-            {
-              //a vector value, won't take it
-              continue;
-            }
-          Ptr<const PointerValue> pointer = DynamicCast<const PointerValue> (value);
-          if (pointer != 0)
-            {
-              //pointer value, won't take it
-              continue;
-            }
-          //We take only values, no pointers or vectors
-          if (!calledStart)
-            {
-              StartVisitTypeId (tid.GetName ());
-            }
-          VisitAttribute (tid, tid.GetAttributeName (j), value->SerializeToString (checker), j);
-          calledStart = true;
-        }
-      if (calledStart)
-        {
-          EndVisitTypeId ();
-        }
-    }
-}
-
-void 
-AttributeDefaultIterator::StartVisitTypeId (std::string name)
-{
-}
-void 
-AttributeDefaultIterator::EndVisitTypeId (void)
-{
-}
-
-void 
-AttributeDefaultIterator::DoVisitAttribute (std::string name, std::string defaultValue)
-{
-}
-
-void 
-AttributeDefaultIterator::VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index)
-{
-  DoVisitAttribute (name, defaultValue);
-}
-
-} // namespace ns3
--- a/src/contrib/attribute-default-iterator.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
- 
-#ifndef ATTRIBUTE_DEFAULT_ITERATOR_H
-#define ATTRIBUTE_DEFAULT_ITERATOR_H
-
-#include "ns3/type-id.h"
-#include <string>
-
-namespace ns3 {
-
-class AttributeDefaultIterator
-{
-public:
-  virtual ~AttributeDefaultIterator () = 0;
-  /**
-   * \brief This function will go through all the TypeIds and get only the attributes which are
-   * explicit values (not vectors or pointer or arrays) and apply StartVisitTypeId
-   * and VisitAttribute on the attributes in one TypeId. At the end of each TypeId
-   * EndVisitTypeId is called.
-   */
-  void Iterate (void);
-private:
-  /**
-   * \brief Just an interface that needs to be implemented
-   */
-  virtual void StartVisitTypeId (std::string name);
-  /**
-   * \brief Just an interface that needs to be implemented
-   */
-  virtual void EndVisitTypeId (void);
-  /**
-   * \brief This method can be implemented, otherwise, it will call DoVisitAttribute
-   */
-  virtual void VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index);
-  /**
-   * \brief This method is just an interface and needs to be implemented
-   */
-  virtual void DoVisitAttribute (std::string name, std::string defaultValue);
-};
-
-} // namespace ns3
-
-#endif /* ATTRIBUTE_DEFAULT_ITERATOR_H */
--- a/src/contrib/attribute-iterator.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,285 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
- 
-#include "attribute-iterator.h"
-#include "ns3/config.h"
-#include "ns3/log.h"
-#include "ns3/pointer.h"
-#include "ns3/object-vector.h"
-#include "ns3/string.h"
-#include <fstream>
-
-
-NS_LOG_COMPONENT_DEFINE ("AttributeIterator");
-
-namespace ns3 {
-
-
-AttributeIterator::AttributeIterator ()
-{
-}
-
-AttributeIterator::~AttributeIterator ()
-{
-}
-
-void 
-AttributeIterator::Iterate (void)
-{
-  for (uint32_t i = 0; i < Config::GetRootNamespaceObjectN (); ++i)
-    {
-      Ptr<Object> object = Config::GetRootNamespaceObject (i);
-      StartVisitObject (object);
-      DoIterate (object);
-      EndVisitObject ();
-    }
-  NS_ASSERT (m_currentPath.empty ());
-  NS_ASSERT (m_examined.empty ());
-}
-
-bool
-AttributeIterator::IsExamined (Ptr<const Object> object)
-{
-  for (uint32_t i = 0; i < m_examined.size (); ++i)
-    {
-      if (object == m_examined[i])
-        {
-          return true;
-        }
-    }
-  return false;
-}
-
-
-std::string
-AttributeIterator::GetCurrentPath (std::string attr) const
-{
-  std::ostringstream oss;
-  for (uint32_t i = 0; i < m_currentPath.size (); ++i)
-    {
-      oss << "/" << m_currentPath[i];
-    }
-  if (attr != "")
-    {
-      oss << "/" << attr;
-    }
-  return oss.str ();
-}
-
-std::string
-AttributeIterator::GetCurrentPath (void) const
-{
-  std::ostringstream oss;
-  for (uint32_t i = 0; i < m_currentPath.size (); ++i)
-    {
-      oss << "/" << m_currentPath[i];
-    }
-  return oss.str ();
-}
-
-void 
-AttributeIterator::DoStartVisitObject (Ptr<Object> object)
-{
-}
-void 
-AttributeIterator::DoEndVisitObject (void)
-{
-}
-void 
-AttributeIterator::DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> item)
-{
-}
-void 
-AttributeIterator::DoEndVisitPointerAttribute (void)
-{
-}
-void 
-AttributeIterator::DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector)
-{
-}
-void 
-AttributeIterator::DoEndVisitArrayAttribute (void)
-{
-}
-void 
-AttributeIterator::DoStartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item)
-{
-}
-void 
-AttributeIterator::DoEndVisitArrayItem (void)
-{
-}
-
-void 
-AttributeIterator::VisitAttribute (Ptr<Object> object, std::string name)
-{
-  m_currentPath.push_back (name);
-  DoVisitAttribute (object, name);
-  m_currentPath.pop_back ();
-}
-
-void 
-AttributeIterator::StartVisitObject (Ptr<Object> object)
-{
-  m_currentPath.push_back ("$" + object->GetInstanceTypeId ().GetName ());
-  DoStartVisitObject (object);
-}
-void 
-AttributeIterator::EndVisitObject (void)
-{
-  m_currentPath.pop_back ();
-  DoEndVisitObject ();
-}
-void 
-AttributeIterator::StartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value)
-{
-  m_currentPath.push_back (name);
-  m_currentPath.push_back ("$" + value->GetInstanceTypeId ().GetName ());
-  DoStartVisitPointerAttribute (object, name, value);
-}
-void 
-AttributeIterator::EndVisitPointerAttribute (void)
-{
-  m_currentPath.pop_back ();
-  m_currentPath.pop_back ();
-  DoEndVisitPointerAttribute ();
-}
-void 
-AttributeIterator::StartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector)
-{
-  m_currentPath.push_back (name);
-  DoStartVisitArrayAttribute (object, name, vector);
-}
-void 
-AttributeIterator::EndVisitArrayAttribute (void)
-{
-  m_currentPath.pop_back ();
-  DoEndVisitArrayAttribute ();
-}
-
-void 
-AttributeIterator::StartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item)
-{
-  std::ostringstream oss;
-  oss << index;
-  m_currentPath.push_back (oss.str ());
-  m_currentPath.push_back ("$" + item->GetInstanceTypeId ().GetName ());
-  DoStartVisitArrayItem (vector, index, item);
-}
-void 
-AttributeIterator::EndVisitArrayItem (void)
-{
-  m_currentPath.pop_back ();
-  m_currentPath.pop_back ();
-  DoEndVisitArrayItem ();
-}
-
-
-void
-AttributeIterator::DoIterate (Ptr<Object> object)
-{
-  if (IsExamined (object))
-    {
-      return;
-    }
-  TypeId tid;
-  for (tid = object->GetInstanceTypeId (); tid.HasParent (); tid = tid.GetParent ())
-    {
-      NS_LOG_DEBUG ("store " << tid.GetName ());
-      for (uint32_t i = 0; i < tid.GetAttributeN (); ++i)
-        {
-          Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (i);
-          const PointerChecker *ptrChecker = dynamic_cast<const PointerChecker *> (PeekPointer (checker));
-          if (ptrChecker != 0)
-            {
-              NS_LOG_DEBUG ("pointer attribute " << tid.GetAttributeName (i));
-              PointerValue ptr;
-              object->GetAttribute (tid.GetAttributeName (i), ptr);
-              Ptr<Object> tmp = ptr.Get<Object> ();
-              if (tmp != 0)
-                {
-                  StartVisitPointerAttribute (object, tid.GetAttributeName (i),
-                                              tmp);
-                  m_examined.push_back (object);
-                  DoIterate (tmp);
-                  m_examined.pop_back ();
-                  EndVisitPointerAttribute ();
-                }
-              continue;
-            }
-          // attempt to cast to an object vector.
-          const ObjectVectorChecker *vectorChecker = dynamic_cast<const ObjectVectorChecker *> (PeekPointer (checker));
-          if (vectorChecker != 0)
-            {
-              NS_LOG_DEBUG ("vector attribute " << tid.GetAttributeName (i));
-              ObjectVectorValue vector;
-              object->GetAttribute (tid.GetAttributeName (i), vector);
-              StartVisitArrayAttribute (object, tid.GetAttributeName (i), vector);
-              for (uint32_t j = 0; j < vector.GetN (); ++j)
-                {
-                  NS_LOG_DEBUG ("vector attribute item " << j);
-                  Ptr<Object> tmp = vector.Get (j);
-                  StartVisitArrayItem (vector, j, tmp);
-                  m_examined.push_back (object);
-                  DoIterate (tmp);
-                  m_examined.pop_back ();
-                  EndVisitArrayItem ();
-                }
-              EndVisitArrayAttribute ();
-              continue;
-            }
-          uint32_t flags = tid.GetAttributeFlags (i);
-          Ptr<const AttributeAccessor> accessor = tid.GetAttributeAccessor (i);
-          if ((flags & TypeId::ATTR_GET) && accessor->HasGetter () && 
-              (flags & TypeId::ATTR_SET) && accessor->HasSetter ())
-            {
-              VisitAttribute (object, tid.GetAttributeName (i));
-            }
-          else
-            {
-              NS_LOG_DEBUG ("could not store " << tid.GetAttributeName (i));
-            }
-        }
-    }
-  Object::AggregateIterator iter = object->GetAggregateIterator ();
-  bool recursiveAggregate = false;
-  while (iter.HasNext ())
-    {
-      Ptr<const Object> tmp = iter.Next ();
-      if (IsExamined (tmp))
-        {
-          recursiveAggregate = true;
-        }
-    }
-  if (!recursiveAggregate)
-    {
-      iter = object->GetAggregateIterator ();
-      while (iter.HasNext ())
-        {
-          Ptr<Object> tmp = const_cast<Object *> (PeekPointer (iter.Next ()));
-          StartVisitObject (tmp);
-          m_examined.push_back (object);
-          DoIterate (tmp);
-          m_examined.pop_back ();
-          EndVisitObject ();
-        }
-    }
-}
-
-
-} // namespace ns3
--- a/src/contrib/attribute-iterator.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
- 
-#ifndef ATTRIBUTE_ITERATOR_H
-#define ATTRIBUTE_ITERATOR_H
-
-#include "ns3/ptr.h"
-#include "ns3/object.h"
-#include <vector>
-
-namespace ns3 {
-
-class ObjectVectorValue;
-
-// This class is used internally by ConfigStore and GtkConfigStore.
-class AttributeIterator
-{
-public:
-  AttributeIterator ();
-  virtual ~AttributeIterator ();
-
-  void Iterate (void);
-protected:
-  std::string GetCurrentPath (void) const;
-private:
-  virtual void DoVisitAttribute (Ptr<Object> object, std::string name) = 0;
-  virtual void DoStartVisitObject (Ptr<Object> object);
-  virtual void DoEndVisitObject (void);
-  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
-  virtual void DoEndVisitPointerAttribute (void);
-  virtual void DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector);
-  virtual void DoEndVisitArrayAttribute (void);
-  virtual void DoStartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item);
-  virtual void DoEndVisitArrayItem (void);
-
-  void DoIterate (Ptr<Object> object);
-  bool IsExamined (Ptr<const Object> object);
-  std::string GetCurrentPath (std::string attr) const;
-
-  void VisitAttribute (Ptr<Object> object, std::string name);
-  void StartVisitObject (Ptr<Object> object);
-  void EndVisitObject (void);
-  void StartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
-  void EndVisitPointerAttribute (void);
-  void StartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector);
-  void EndVisitArrayAttribute (void);
-  void StartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item);
-  void EndVisitArrayItem (void);
-
-
-  std::vector<Ptr<Object> > m_examined;
-  std::vector<std::string> m_currentPath;
-};
-
-} // namespace ns3
-
-#endif /* ATTRIBUTE_ITERATOR_H */
--- a/src/contrib/average.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2009 IITP RAS
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Authors: Pavel Boyko <boyko@iitp.ru>
- * Corrections and extensions: Timo Bingmann <tbns@idlebox.net>
- */
-
-#ifndef AVERAGE_H
-#define AVERAGE_H
-#include <cmath>
-#include <ostream>
-#include <limits>
-#include <stdint.h>
-
-namespace ns3 {
-
-/// Simple average, min, max and std. deviation calculator
-template <typename T = double>
-class Average
-{
-public:
-  Average ()
-    : m_size (0), m_min (std::numeric_limits<T>::max ()), m_max (0),
-      m_avg (0), m_avg2 (0) 
-  {
-  }
-
-  /// Add new sample
-  void Update (T const & x)
-  {
-    m_min = std::min (x, m_min);
-    m_max = std::max (x, m_max);
-    m_avg = (m_size * m_avg + x) / (m_size + 1);
-    m_avg2 = (m_size * m_avg2 + x * x) / (m_size + 1);
-    m_size++;
-  }
-  /// Reset statistics
-  void Reset ()
-  {
-    m_size = 0;
-    m_min = std::numeric_limits<T>::max ();
-    m_max = 0;
-    m_avg = 0;
-    m_avg2 = 0;
-  }
-
-  ///\name Sample statistics
-  //\{
-  /// Sample size
-  uint32_t Count   () const { return m_size; }
-  /// Minimum
-  T        Min     () const { return m_min; }
-  /// Maximum
-  T        Max     () const { return m_max; }
-  /// Sample average
-  double   Avg     () const { return m_avg; }
-  /// Estimate of mean, alias to Avg
-  double   Mean    () const { return Avg (); }
-  /// Unbiased estimate of variance
-  double   Var     () const { return Count() / (double)(Count() - 1) * (m_avg2 - m_avg*m_avg); }
-  /// Standard deviation
-  double   Stddev  () const { return sqrt (Var ());}
-  //\}
-  
-  /** 
-   * \name Error of the mean estimates
-   *  
-   * Note that estimates are valid for 
-   *   - uncorrelated measurements, 
-   *   - normal distribution and
-   *   - large enough sample size.
-   */
-  //\{
-  /// Margin of error of the mean for 90% confidence level 
-  double   Error90() const { return 1.645 * sqrt (Var () / Count ()); }
-  /// Margin of error of the mean for 95% confidence level 
-  double   Error95() const { return 1.960 * sqrt (Var () / Count ()); }
-  /// Margin of error of the mean for 99% confidence level 
-  double   Error99() const { return 2.576 * sqrt (Var () / Count ()); }
-  //\}
-
-private:
-  uint32_t m_size;
-  T      m_min, m_max;
-  double m_avg, m_avg2;
-};
-
-/// Print avg (err) [min, max]
-template <typename T>
-std::ostream & operator<< (std::ostream & os, Average<T> const & x)
-{
-  if (x.Count () != 0)
-    os << x.Avg () << " (" << x.Stddev () << ") [" << x.Min () << ", " << x.Max () << "]";
-  else
-    os << "NA"; // not available
-  return os;
-}
-}
-#endif /* AVERAGE_H */
--- a/src/contrib/bindings/callbacks_list.py	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-callback_classes = [
-]
--- a/src/contrib/bindings/modulegen__gcc_ILP32.py	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2794 +0,0 @@
-from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
-
-
-import pybindgen.settings
-import warnings
-
-class ErrorHandler(pybindgen.settings.ErrorHandler):
-    def handle_error(self, wrapper, exception, traceback_):
-        warnings.warn("exception %r in wrapper %s" % (exception, wrapper))
-        return True
-pybindgen.settings.error_handler = ErrorHandler()
-
-
-import sys
-
-def module_init():
-    root_module = Module('ns.contrib', cpp_namespace='::ns3')
-    return root_module
-
-def register_types(module):
-    root_module = module.get_root()
-    
-    ## attribute-list.h (module 'core'): ns3::AttributeList [class]
-    module.add_class('AttributeList', import_from_module='ns.core')
-    ## buffer.h (module 'network'): ns3::Buffer [class]
-    module.add_class('Buffer', import_from_module='ns.network')
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator [class]
-    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::Buffer'])
-    ## packet.h (module 'network'): ns3::ByteTagIterator [class]
-    module.add_class('ByteTagIterator', import_from_module='ns.network')
-    ## packet.h (module 'network'): ns3::ByteTagIterator::Item [class]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagIterator'])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList [class]
-    module.add_class('ByteTagList', import_from_module='ns.network')
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator [class]
-    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList'])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item [struct]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
-    ## callback.h (module 'core'): ns3::CallbackBase [class]
-    module.add_class('CallbackBase', import_from_module='ns.core')
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::DelayJitterEstimation [class]
-    module.add_class('DelayJitterEstimation')
-    ## event-garbage-collector.h (module 'contrib'): ns3::EventGarbageCollector [class]
-    module.add_class('EventGarbageCollector')
-    ## event-id.h (module 'core'): ns3::EventId [class]
-    module.add_class('EventId', import_from_module='ns.core')
-    ## file-config.h (module 'contrib'): ns3::FileConfig [class]
-    module.add_class('FileConfig', allow_subclassing=True)
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot [class]
-    module.add_class('Gnuplot')
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotCollection [class]
-    module.add_class('GnuplotCollection')
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotDataset [class]
-    module.add_class('GnuplotDataset')
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision [class]
-    module.add_class('HighPrecision', import_from_module='ns.core')
-    ## file-config.h (module 'contrib'): ns3::NoneFileConfig [class]
-    module.add_class('NoneFileConfig', parent=root_module['ns3::FileConfig'])
-    ## object-base.h (module 'core'): ns3::ObjectBase [class]
-    module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
-    ## object.h (module 'core'): ns3::ObjectDeleter [struct]
-    module.add_class('ObjectDeleter', import_from_module='ns.core')
-    ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
-    module.add_class('ObjectFactory', import_from_module='ns.core')
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
-    module.add_class('PacketMetadata', import_from_module='ns.network')
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [enumeration]
-    module.add_enum('', ['PAYLOAD', 'HEADER', 'TRAILER'], outer_class=root_module['ns3::PacketMetadata::Item'], import_from_module='ns.network')
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator [class]
-    module.add_class('ItemIterator', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
-    ## packet.h (module 'network'): ns3::PacketTagIterator [class]
-    module.add_class('PacketTagIterator', import_from_module='ns.network')
-    ## packet.h (module 'network'): ns3::PacketTagIterator::Item [class]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagIterator'])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList [class]
-    module.add_class('PacketTagList', import_from_module='ns.network')
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData [struct]
-    module.add_class('TagData', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagList'])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simulator.h (module 'core'): ns3::Simulator [class]
-    module.add_class('Simulator', is_singleton=True, import_from_module='ns.core')
-    ## tag.h (module 'network'): ns3::Tag [class]
-    module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
-    ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
-    module.add_class('TagBuffer', import_from_module='ns.network')
-    ## nstime.h (module 'core'): ns3::Time [class]
-    module.add_class('Time', import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
-    module.add_enum('Unit', ['S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
-    ## type-id.h (module 'core'): ns3::TypeId [class]
-    module.add_class('TypeId', import_from_module='ns.core')
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
-    module.add_enum('AttributeFlag', ['ATTR_GET', 'ATTR_SET', 'ATTR_CONSTRUCT', 'ATTR_SGC'], outer_class=root_module['ns3::TypeId'], import_from_module='ns.core')
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo [struct]
-    module.add_class('AttributeInfo', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
-    ## attribute-list.h (module 'core'): ns3::UnsafeAttributeList [class]
-    module.add_class('UnsafeAttributeList', import_from_module='ns.core')
-    ## empty.h (module 'core'): ns3::empty [class]
-    module.add_class('empty', import_from_module='ns.core')
-    ## chunk.h (module 'network'): ns3::Chunk [class]
-    module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore [class]
-    module.add_class('ConfigStore', parent=root_module['ns3::ObjectBase'])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::Mode [enumeration]
-    module.add_enum('Mode', ['LOAD', 'SAVE', 'NONE'], outer_class=root_module['ns3::ConfigStore'])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::FileFormat [enumeration]
-    module.add_enum('FileFormat', ['XML', 'RAW_TEXT'], outer_class=root_module['ns3::ConfigStore'])
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag [class]
-    module.add_class('FlowIdTag', parent=root_module['ns3::Tag'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset [class]
-    module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::Style [enumeration]
-    module.add_enum('Style', ['LINES', 'POINTS', 'LINES_POINTS', 'DOTS', 'IMPULSES', 'STEPS', 'FSTEPS', 'HISTEPS'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::ErrorBars [enumeration]
-    module.add_enum('ErrorBars', ['NONE', 'X', 'Y', 'XY'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dFunction [class]
-    module.add_class('Gnuplot2dFunction', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dDataset [class]
-    module.add_class('Gnuplot3dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dFunction [class]
-    module.add_class('Gnuplot3dFunction', parent=root_module['ns3::GnuplotDataset'])
-    ## header.h (module 'network'): ns3::Header [class]
-    module.add_class('Header', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
-    ## object.h (module 'core'): ns3::Object [class]
-    module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
-    module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
-    ## nstime.h (module 'core'): ns3::Scalar [class]
-    module.add_class('Scalar', import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Scalar [class]
-    root_module['ns3::Scalar'].implicitly_converts_to(root_module['ns3::Time'])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeChecker', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeChecker>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeValue', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeValue>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::CallbackImplBase', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CallbackImplBase>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::EventImpl', 'ns3::empty', 'ns3::DefaultDeleter<ns3::EventImpl>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::NixVector', 'ns3::empty', 'ns3::DefaultDeleter<ns3::NixVector>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Packet', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Packet>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## trailer.h (module 'network'): ns3::Trailer [class]
-    module.add_class('Trailer', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
-    ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
-    module.add_class('AttributeAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
-    ## attribute.h (module 'core'): ns3::AttributeChecker [class]
-    module.add_class('AttributeChecker', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
-    ## attribute.h (module 'core'): ns3::AttributeValue [class]
-    module.add_class('AttributeValue', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
-    ## callback.h (module 'core'): ns3::CallbackChecker [class]
-    module.add_class('CallbackChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## callback.h (module 'core'): ns3::CallbackImplBase [class]
-    module.add_class('CallbackImplBase', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
-    ## callback.h (module 'core'): ns3::CallbackValue [class]
-    module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
-    module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## event-impl.h (module 'core'): ns3::EventImpl [class]
-    module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## nix-vector.h (module 'network'): ns3::NixVector [class]
-    module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
-    module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
-    module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## packet.h (module 'network'): ns3::Packet [class]
-    module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
-    ## nstime.h (module 'core'): ns3::TimeChecker [class]
-    module.add_class('TimeChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## nstime.h (module 'core'): ns3::TimeValue [class]
-    module.add_class('TimeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## type-id.h (module 'core'): ns3::TypeIdChecker [class]
-    module.add_class('TypeIdChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## type-id.h (module 'core'): ns3::TypeIdValue [class]
-    module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Time', 'ns3::TimeSquare')
-    typehandlers.add_type_alias('ns3::Time*', 'ns3::TimeSquare*')
-    typehandlers.add_type_alias('ns3::Time&', 'ns3::TimeSquare&')
-    module.add_typedef(root_module['ns3::Time'], 'TimeSquare')
-    typehandlers.add_type_alias('ns3::Time', 'ns3::TimeInvert')
-    typehandlers.add_type_alias('ns3::Time*', 'ns3::TimeInvert*')
-    typehandlers.add_type_alias('ns3::Time&', 'ns3::TimeInvert&')
-    module.add_typedef(root_module['ns3::Time'], 'TimeInvert')
-    
-    ## Register a nested module for the namespace FatalImpl
-    
-    nested_module = module.add_cpp_namespace('FatalImpl')
-    register_types_ns3_FatalImpl(nested_module)
-    
-
-def register_types_ns3_FatalImpl(module):
-    root_module = module.get_root()
-    
-
-def register_methods(root_module):
-    register_Ns3AttributeList_methods(root_module, root_module['ns3::AttributeList'])
-    register_Ns3Buffer_methods(root_module, root_module['ns3::Buffer'])
-    register_Ns3BufferIterator_methods(root_module, root_module['ns3::Buffer::Iterator'])
-    register_Ns3ByteTagIterator_methods(root_module, root_module['ns3::ByteTagIterator'])
-    register_Ns3ByteTagIteratorItem_methods(root_module, root_module['ns3::ByteTagIterator::Item'])
-    register_Ns3ByteTagList_methods(root_module, root_module['ns3::ByteTagList'])
-    register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
-    register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
-    register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
-    register_Ns3DelayJitterEstimation_methods(root_module, root_module['ns3::DelayJitterEstimation'])
-    register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
-    register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
-    register_Ns3FileConfig_methods(root_module, root_module['ns3::FileConfig'])
-    register_Ns3Gnuplot_methods(root_module, root_module['ns3::Gnuplot'])
-    register_Ns3GnuplotCollection_methods(root_module, root_module['ns3::GnuplotCollection'])
-    register_Ns3GnuplotDataset_methods(root_module, root_module['ns3::GnuplotDataset'])
-    register_Ns3HighPrecision_methods(root_module, root_module['ns3::HighPrecision'])
-    register_Ns3NoneFileConfig_methods(root_module, root_module['ns3::NoneFileConfig'])
-    register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
-    register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
-    register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
-    register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
-    register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
-    register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
-    register_Ns3PacketTagIterator_methods(root_module, root_module['ns3::PacketTagIterator'])
-    register_Ns3PacketTagIteratorItem_methods(root_module, root_module['ns3::PacketTagIterator::Item'])
-    register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
-    register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
-    register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
-    register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
-    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
-    register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Time_methods(root_module, root_module['ns3::Time'])
-    register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
-    register_Ns3TypeIdAttributeInfo_methods(root_module, root_module['ns3::TypeId::AttributeInfo'])
-    register_Ns3UnsafeAttributeList_methods(root_module, root_module['ns3::UnsafeAttributeList'])
-    register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
-    register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
-    register_Ns3ConfigStore_methods(root_module, root_module['ns3::ConfigStore'])
-    register_Ns3FlowIdTag_methods(root_module, root_module['ns3::FlowIdTag'])
-    register_Ns3Gnuplot2dDataset_methods(root_module, root_module['ns3::Gnuplot2dDataset'])
-    register_Ns3Gnuplot2dFunction_methods(root_module, root_module['ns3::Gnuplot2dFunction'])
-    register_Ns3Gnuplot3dDataset_methods(root_module, root_module['ns3::Gnuplot3dDataset'])
-    register_Ns3Gnuplot3dFunction_methods(root_module, root_module['ns3::Gnuplot3dFunction'])
-    register_Ns3Header_methods(root_module, root_module['ns3::Header'])
-    register_Ns3Object_methods(root_module, root_module['ns3::Object'])
-    register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
-    register_Ns3Scalar_methods(root_module, root_module['ns3::Scalar'])
-    register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
-    register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
-    register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
-    register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
-    register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
-    register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
-    register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
-    register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
-    register_Ns3AttributeChecker_methods(root_module, root_module['ns3::AttributeChecker'])
-    register_Ns3AttributeValue_methods(root_module, root_module['ns3::AttributeValue'])
-    register_Ns3CallbackChecker_methods(root_module, root_module['ns3::CallbackChecker'])
-    register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
-    register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
-    register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
-    register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
-    register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
-    register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
-    register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
-    register_Ns3TimeChecker_methods(root_module, root_module['ns3::TimeChecker'])
-    register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
-    register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
-    register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
-    return
-
-def register_Ns3AttributeList_methods(root_module, cls):
-    ## attribute-list.h (module 'core'): ns3::AttributeList::AttributeList() [constructor]
-    cls.add_constructor([])
-    ## attribute-list.h (module 'core'): ns3::AttributeList::AttributeList(ns3::AttributeList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeList const &', 'o')])
-    ## attribute-list.h (module 'core'): bool ns3::AttributeList::DeserializeFromString(std::string value) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value')])
-    ## attribute-list.h (module 'core'): static ns3::AttributeList * ns3::AttributeList::GetGlobal() [member function]
-    cls.add_method('GetGlobal', 
-                   'ns3::AttributeList *', 
-                   [], 
-                   is_static=True)
-    ## attribute-list.h (module 'core'): void ns3::AttributeList::Reset() [member function]
-    cls.add_method('Reset', 
-                   'void', 
-                   [])
-    ## attribute-list.h (module 'core'): std::string ns3::AttributeList::SerializeToString() const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## attribute-list.h (module 'core'): void ns3::AttributeList::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## attribute-list.h (module 'core'): bool ns3::AttributeList::SetFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetFailSafe', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## attribute-list.h (module 'core'): void ns3::AttributeList::SetWithTid(ns3::TypeId tid, std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetWithTid', 
-                   'void', 
-                   [param('ns3::TypeId', 'tid'), param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    return
-
-def register_Ns3Buffer_methods(root_module, cls):
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer() [constructor]
-    cls.add_constructor([])
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize) [constructor]
-    cls.add_constructor([param('uint32_t', 'dataSize')])
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize, bool initialize) [constructor]
-    cls.add_constructor([param('uint32_t', 'dataSize'), param('bool', 'initialize')])
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer(ns3::Buffer const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Buffer const &', 'o')])
-    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtEnd(uint32_t end) [member function]
-    cls.add_method('AddAtEnd', 
-                   'bool', 
-                   [param('uint32_t', 'end')])
-    ## buffer.h (module 'network'): void ns3::Buffer::AddAtEnd(ns3::Buffer const & o) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('ns3::Buffer const &', 'o')])
-    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtStart(uint32_t start) [member function]
-    cls.add_method('AddAtStart', 
-                   'bool', 
-                   [param('uint32_t', 'start')])
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::Begin() const [member function]
-    cls.add_method('Begin', 
-                   'ns3::Buffer::Iterator', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): void ns3::Buffer::CopyData(std::ostream * os, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'void', 
-                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::CopyData(uint8_t * buffer, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFragment(uint32_t start, uint32_t length) const [member function]
-    cls.add_method('CreateFragment', 
-                   'ns3::Buffer', 
-                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFullCopy() const [member function]
-    cls.add_method('CreateFullCopy', 
-                   'ns3::Buffer', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::End() const [member function]
-    cls.add_method('End', 
-                   'ns3::Buffer::Iterator', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentEndOffset() const [member function]
-    cls.add_method('GetCurrentEndOffset', 
-                   'int32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentStartOffset() const [member function]
-    cls.add_method('GetCurrentStartOffset', 
-                   'int32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSize() const [member function]
-    cls.add_method('GetSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint8_t const * ns3::Buffer::PeekData() const [member function]
-    cls.add_method('PeekData', 
-                   'uint8_t const *', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtEnd(uint32_t end) [member function]
-    cls.add_method('RemoveAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'end')])
-    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtStart(uint32_t start) [member function]
-    cls.add_method('RemoveAtStart', 
-                   'void', 
-                   [param('uint32_t', 'start')])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    return
-
-def register_Ns3BufferIterator_methods(root_module, cls):
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator(ns3::Buffer::Iterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Buffer::Iterator const &', 'arg0')])
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator() [constructor]
-    cls.add_constructor([])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size) [member function]
-    cls.add_method('CalculateIpChecksum', 
-                   'uint16_t', 
-                   [param('uint16_t', 'size')])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size, uint32_t initialChecksum) [member function]
-    cls.add_method('CalculateIpChecksum', 
-                   'uint16_t', 
-                   [param('uint16_t', 'size'), param('uint32_t', 'initialChecksum')])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetDistanceFrom(ns3::Buffer::Iterator const & o) const [member function]
-    cls.add_method('GetDistanceFrom', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator const &', 'o')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetSize() const [member function]
-    cls.add_method('GetSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsEnd() const [member function]
-    cls.add_method('IsEnd', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsStart() const [member function]
-    cls.add_method('IsStart', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next() [member function]
-    cls.add_method('Next', 
-                   'void', 
-                   [])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next(uint32_t delta) [member function]
-    cls.add_method('Next', 
-                   'void', 
-                   [param('uint32_t', 'delta')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
-    cls.add_method('Prev', 
-                   'void', 
-                   [])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev(uint32_t delta) [member function]
-    cls.add_method('Prev', 
-                   'void', 
-                   [param('uint32_t', 'delta')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(uint8_t * buffer, uint32_t size) [member function]
-    cls.add_method('Read', 
-                   'void', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
-    cls.add_method('ReadLsbtohU16', 
-                   'uint16_t', 
-                   [])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadLsbtohU32() [member function]
-    cls.add_method('ReadLsbtohU32', 
-                   'uint32_t', 
-                   [])
-    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadLsbtohU64() [member function]
-    cls.add_method('ReadLsbtohU64', 
-                   'uint64_t', 
-                   [])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadNtohU16() [member function]
-    cls.add_method('ReadNtohU16', 
-                   'uint16_t', 
-                   [])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadNtohU32() [member function]
-    cls.add_method('ReadNtohU32', 
-                   'uint32_t', 
-                   [])
-    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadNtohU64() [member function]
-    cls.add_method('ReadNtohU64', 
-                   'uint64_t', 
-                   [])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadU16() [member function]
-    cls.add_method('ReadU16', 
-                   'uint16_t', 
-                   [])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadU32() [member function]
-    cls.add_method('ReadU32', 
-                   'uint32_t', 
-                   [])
-    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadU64() [member function]
-    cls.add_method('ReadU64', 
-                   'uint64_t', 
-                   [])
-    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::ReadU8() [member function]
-    cls.add_method('ReadU8', 
-                   'uint8_t', 
-                   [])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Write', 
-                   'void', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
-    cls.add_method('Write', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU16(uint16_t data) [member function]
-    cls.add_method('WriteHtolsbU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU32(uint32_t data) [member function]
-    cls.add_method('WriteHtolsbU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU64(uint64_t data) [member function]
-    cls.add_method('WriteHtolsbU64', 
-                   'void', 
-                   [param('uint64_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU16(uint16_t data) [member function]
-    cls.add_method('WriteHtonU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU32(uint32_t data) [member function]
-    cls.add_method('WriteHtonU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU64(uint64_t data) [member function]
-    cls.add_method('WriteHtonU64', 
-                   'void', 
-                   [param('uint64_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU16(uint16_t data) [member function]
-    cls.add_method('WriteU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU32(uint32_t data) [member function]
-    cls.add_method('WriteU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU64(uint64_t data) [member function]
-    cls.add_method('WriteU64', 
-                   'void', 
-                   [param('uint64_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data) [member function]
-    cls.add_method('WriteU8', 
-                   'void', 
-                   [param('uint8_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data, uint32_t len) [member function]
-    cls.add_method('WriteU8', 
-                   'void', 
-                   [param('uint8_t', 'data'), param('uint32_t', 'len')])
-    return
-
-def register_Ns3ByteTagIterator_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::ByteTagIterator::ByteTagIterator(ns3::ByteTagIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagIterator const &', 'arg0')])
-    ## packet.h (module 'network'): bool ns3::ByteTagIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::ByteTagIterator::Item ns3::ByteTagIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::ByteTagIterator::Item', 
-                   [])
-    return
-
-def register_Ns3ByteTagIteratorItem_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::ByteTagIterator::Item::Item(ns3::ByteTagIterator::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagIterator::Item const &', 'arg0')])
-    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetEnd() const [member function]
-    cls.add_method('GetEnd', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetStart() const [member function]
-    cls.add_method('GetStart', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::ByteTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
-    cls.add_method('GetTag', 
-                   'void', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::TypeId ns3::ByteTagIterator::Item::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3ByteTagList_methods(root_module, cls):
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList() [constructor]
-    cls.add_constructor([])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList(ns3::ByteTagList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagList const &', 'o')])
-    ## byte-tag-list.h (module 'network'): ns3::TagBuffer ns3::ByteTagList::Add(ns3::TypeId tid, uint32_t bufferSize, int32_t start, int32_t end) [member function]
-    cls.add_method('Add', 
-                   'ns3::TagBuffer', 
-                   [param('ns3::TypeId', 'tid'), param('uint32_t', 'bufferSize'), param('int32_t', 'start'), param('int32_t', 'end')])
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::Add(ns3::ByteTagList const & o) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('ns3::ByteTagList const &', 'o')])
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtEnd(int32_t adjustment, int32_t appendOffset) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('int32_t', 'adjustment'), param('int32_t', 'appendOffset')])
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtStart(int32_t adjustment, int32_t prependOffset) [member function]
-    cls.add_method('AddAtStart', 
-                   'void', 
-                   [param('int32_t', 'adjustment'), param('int32_t', 'prependOffset')])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator ns3::ByteTagList::Begin(int32_t offsetStart, int32_t offsetEnd) const [member function]
-    cls.add_method('Begin', 
-                   'ns3::ByteTagList::Iterator', 
-                   [param('int32_t', 'offsetStart'), param('int32_t', 'offsetEnd')], 
-                   is_const=True)
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::RemoveAll() [member function]
-    cls.add_method('RemoveAll', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3ByteTagListIterator_methods(root_module, cls):
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Iterator(ns3::ByteTagList::Iterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagList::Iterator const &', 'arg0')])
-    ## byte-tag-list.h (module 'network'): uint32_t ns3::ByteTagList::Iterator::GetOffsetStart() const [member function]
-    cls.add_method('GetOffsetStart', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## byte-tag-list.h (module 'network'): bool ns3::ByteTagList::Iterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item ns3::ByteTagList::Iterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::ByteTagList::Iterator::Item', 
-                   [])
-    return
-
-def register_Ns3ByteTagListIteratorItem_methods(root_module, cls):
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::ByteTagList::Iterator::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagList::Iterator::Item const &', 'arg0')])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::TagBuffer buf) [constructor]
-    cls.add_constructor([param('ns3::TagBuffer', 'buf')])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::buf [variable]
-    cls.add_instance_attribute('buf', 'ns3::TagBuffer', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::end [variable]
-    cls.add_instance_attribute('end', 'int32_t', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::size [variable]
-    cls.add_instance_attribute('size', 'uint32_t', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::start [variable]
-    cls.add_instance_attribute('start', 'int32_t', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::tid [variable]
-    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
-    return
-
-def register_Ns3CallbackBase_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::CallbackBase const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackBase const &', 'arg0')])
-    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::Ptr<ns3::CallbackImplBase> ns3::CallbackBase::GetImpl() const [member function]
-    cls.add_method('GetImpl', 
-                   'ns3::Ptr< ns3::CallbackImplBase >', 
-                   [], 
-                   is_const=True)
-    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::Ptr<ns3::CallbackImplBase> impl) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], 
-                        visibility='protected')
-    ## callback.h (module 'core'): static std::string ns3::CallbackBase::Demangle(std::string const & mangled) [member function]
-    cls.add_method('Demangle', 
-                   'std::string', 
-                   [param('std::string const &', 'mangled')], 
-                   is_static=True, visibility='protected')
-    return
-
-def register_Ns3DelayJitterEstimation_methods(root_module, cls):
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
-    cls.add_constructor([])
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::Time ns3::DelayJitterEstimation::GetLastDelay() const [member function]
-    cls.add_method('GetLastDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::Time ns3::DelayJitterEstimation::GetLastJitter() const [member function]
-    cls.add_method('GetLastJitter', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h (module 'contrib'): static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('PrepareTx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')], 
-                   is_static=True)
-    ## delay-jitter-estimation.h (module 'contrib'): void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('RecordRx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
-    return
-
-def register_Ns3EventGarbageCollector_methods(root_module, cls):
-    ## event-garbage-collector.h (module 'contrib'): ns3::EventGarbageCollector::EventGarbageCollector(ns3::EventGarbageCollector const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventGarbageCollector const &', 'arg0')])
-    ## event-garbage-collector.h (module 'contrib'): ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
-    cls.add_constructor([])
-    ## event-garbage-collector.h (module 'contrib'): void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
-    cls.add_method('Track', 
-                   'void', 
-                   [param('ns3::EventId', 'event')])
-    return
-
-def register_Ns3EventId_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_binary_comparison_operator('==')
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventId const &', 'arg0')])
-    ## event-id.h (module 'core'): ns3::EventId::EventId() [constructor]
-    cls.add_constructor([])
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::Ptr<ns3::EventImpl> const & impl, uint64_t ts, uint32_t context, uint32_t uid) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl > const &', 'impl'), param('uint64_t', 'ts'), param('uint32_t', 'context'), param('uint32_t', 'uid')])
-    ## event-id.h (module 'core'): void ns3::EventId::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetContext() const [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint64_t ns3::EventId::GetTs() const [member function]
-    cls.add_method('GetTs', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): ns3::EventImpl * ns3::EventId::PeekEventImpl() const [member function]
-    cls.add_method('PeekEventImpl', 
-                   'ns3::EventImpl *', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3FileConfig_methods(root_module, cls):
-    ## file-config.h (module 'contrib'): ns3::FileConfig::FileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h (module 'contrib'): ns3::FileConfig::FileConfig(ns3::FileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FileConfig const &', 'arg0')])
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
-def register_Ns3Gnuplot_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot::Gnuplot(ns3::Gnuplot const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot::Gnuplot(std::string const & outputFilename="", std::string const & title="") [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename', default_value='""'), param('std::string const &', 'title', default_value='""')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::AddDataset(ns3::GnuplotDataset const & dataset) [member function]
-    cls.add_method('AddDataset', 
-                   'void', 
-                   [param('ns3::GnuplotDataset const &', 'dataset')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::AppendExtra(std::string const & extra) [member function]
-    cls.add_method('AppendExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h (module 'contrib'): static std::string ns3::Gnuplot::DetectTerminal(std::string const & filename) [member function]
-    cls.add_method('DetectTerminal', 
-                   'std::string', 
-                   [param('std::string const &', 'filename')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetLegend(std::string const & xLegend, std::string const & yLegend) [member function]
-    cls.add_method('SetLegend', 
-                   'void', 
-                   [param('std::string const &', 'xLegend'), param('std::string const &', 'yLegend')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    return
-
-def register_Ns3GnuplotCollection_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotCollection::GnuplotCollection(ns3::GnuplotCollection const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotCollection const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotCollection::GnuplotCollection(std::string const & outputFilename) [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotCollection::AddPlot(ns3::Gnuplot const & plot) [member function]
-    cls.add_method('AddPlot', 
-                   'void', 
-                   [param('ns3::Gnuplot const &', 'plot')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotCollection::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot & ns3::GnuplotCollection::GetPlot(unsigned int id) [member function]
-    cls.add_method('GetPlot', 
-                   'ns3::Gnuplot &', 
-                   [param('unsigned int', 'id')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotCollection::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    return
-
-def register_Ns3GnuplotDataset_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset const & original) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset const &', 'original')])
-    ## gnuplot.h (module 'contrib'): static void ns3::GnuplotDataset::SetDefaultExtra(std::string const & extra) [member function]
-    cls.add_method('SetDefaultExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotDataset::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotDataset::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset::Data * data) [constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset::Data *', 'data')], 
-                        visibility='protected')
-    return
-
-def register_Ns3HighPrecision_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(ns3::HighPrecision const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::HighPrecision const &', 'arg0')])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(int64_t high, uint64_t low) [constructor]
-    cls.add_constructor([param('int64_t', 'high'), param('uint64_t', 'low')])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision() [constructor]
-    cls.add_constructor([])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(int64_t value, bool dummy) [constructor]
-    cls.add_constructor([param('int64_t', 'value'), param('bool', 'dummy')])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(double value) [constructor]
-    cls.add_constructor([param('double', 'value')])
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Add(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): int ns3::HighPrecision::Compare(ns3::HighPrecision const & o) const [member function]
-    cls.add_method('Compare', 
-                   'int', 
-                   [param('ns3::HighPrecision const &', 'o')], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Div(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Div', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): double ns3::HighPrecision::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): int64_t ns3::HighPrecision::GetHigh() const [member function]
-    cls.add_method('GetHigh', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): int64_t ns3::HighPrecision::GetInteger() const [member function]
-    cls.add_method('GetInteger', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): uint64_t ns3::HighPrecision::GetLow() const [member function]
-    cls.add_method('GetLow', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): static ns3::HighPrecision ns3::HighPrecision::Invert(uint64_t v) [member function]
-    cls.add_method('Invert', 
-                   'ns3::HighPrecision', 
-                   [param('uint64_t', 'v')], 
-                   is_static=True)
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Mul(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Mul', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::MulByInvert(ns3::HighPrecision const & o) [member function]
-    cls.add_method('MulByInvert', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Sub(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Sub', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): static ns3::HighPrecision ns3::HighPrecision::Zero() [member function]
-    cls.add_method('Zero', 
-                   'ns3::HighPrecision', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3NoneFileConfig_methods(root_module, cls):
-    ## file-config.h (module 'contrib'): ns3::NoneFileConfig::NoneFileConfig(ns3::NoneFileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::NoneFileConfig const &', 'arg0')])
-    ## file-config.h (module 'contrib'): ns3::NoneFileConfig::NoneFileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_virtual=True)
-    return
-
-def register_Ns3ObjectBase_methods(root_module, cls):
-    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase() [constructor]
-    cls.add_constructor([])
-    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase(ns3::ObjectBase const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectBase const &', 'arg0')])
-    ## object-base.h (module 'core'): void ns3::ObjectBase::GetAttribute(std::string name, ns3::AttributeValue & value) const [member function]
-    cls.add_method('GetAttribute', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'value')], 
-                   is_const=True)
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::GetAttributeFailSafe(std::string name, ns3::AttributeValue & attribute) const [member function]
-    cls.add_method('GetAttributeFailSafe', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'attribute')], 
-                   is_const=True)
-    ## object-base.h (module 'core'): ns3::TypeId ns3::ObjectBase::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## object-base.h (module 'core'): static ns3::TypeId ns3::ObjectBase::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## object-base.h (module 'core'): void ns3::ObjectBase::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttribute', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::SetAttributeFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttributeFailSafe', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceConnect', 
-                   'bool', 
-                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceConnectWithoutContext', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceDisconnect', 
-                   'bool', 
-                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceDisconnectWithoutContext', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): void ns3::ObjectBase::ConstructSelf(ns3::AttributeList const & attributes) [member function]
-    cls.add_method('ConstructSelf', 
-                   'void', 
-                   [param('ns3::AttributeList const &', 'attributes')], 
-                   visibility='protected')
-    ## object-base.h (module 'core'): void ns3::ObjectBase::NotifyConstructionCompleted() [member function]
-    cls.add_method('NotifyConstructionCompleted', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3ObjectDeleter_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter(ns3::ObjectDeleter const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectDeleter const &', 'arg0')])
-    ## object.h (module 'core'): static void ns3::ObjectDeleter::Delete(ns3::Object * object) [member function]
-    cls.add_method('Delete', 
-                   'void', 
-                   [param('ns3::Object *', 'object')], 
-                   is_static=True)
-    return
-
-def register_Ns3ObjectFactory_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(ns3::ObjectFactory const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::Object> ns3::ObjectFactory::Create() const [member function]
-    cls.add_method('Create', 
-                   'ns3::Ptr< ns3::Object >', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): ns3::TypeId ns3::ObjectFactory::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(ns3::AttributeList const & list) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::AttributeList const &', 'list')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(ns3::TypeId tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('ns3::TypeId', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(char const * tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('char const *', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(std::string tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('std::string', 'tid')])
-    return
-
-def register_Ns3PacketMetadata_methods(root_module, cls):
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
-    cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(ns3::PacketMetadata const & o) [copy constructor]
-    cls.add_constructor([param('ns3::PacketMetadata const &', 'o')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddAtEnd(ns3::PacketMetadata const & o) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('ns3::PacketMetadata const &', 'o')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddHeader(ns3::Header const & header, uint32_t size) [member function]
-    cls.add_method('AddHeader', 
-                   'void', 
-                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddPaddingAtEnd(uint32_t end) [member function]
-    cls.add_method('AddPaddingAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'end')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
-    cls.add_method('AddTrailer', 
-                   'void', 
-                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::PacketMetadata::BeginItem(ns3::Buffer buffer) const [member function]
-    cls.add_method('BeginItem', 
-                   'ns3::PacketMetadata::ItemIterator', 
-                   [param('ns3::Buffer', 'buffer')], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata ns3::PacketMetadata::CreateFragment(uint32_t start, uint32_t end) const [member function]
-    cls.add_method('CreateFragment', 
-                   'ns3::PacketMetadata', 
-                   [param('uint32_t', 'start'), param('uint32_t', 'end')], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::Enable() [member function]
-    cls.add_method('Enable', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::EnableChecking() [member function]
-    cls.add_method('EnableChecking', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): uint64_t ns3::PacketMetadata::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtEnd(uint32_t end) [member function]
-    cls.add_method('RemoveAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'end')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtStart(uint32_t start) [member function]
-    cls.add_method('RemoveAtStart', 
-                   'void', 
-                   [param('uint32_t', 'start')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveHeader(ns3::Header const & header, uint32_t size) [member function]
-    cls.add_method('RemoveHeader', 
-                   'void', 
-                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
-    cls.add_method('RemoveTrailer', 
-                   'void', 
-                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    return
-
-def register_Ns3PacketMetadataItem_methods(root_module, cls):
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item() [constructor]
-    cls.add_constructor([])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item(ns3::PacketMetadata::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketMetadata::Item const &', 'arg0')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::current [variable]
-    cls.add_instance_attribute('current', 'ns3::Buffer::Iterator', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentSize [variable]
-    cls.add_instance_attribute('currentSize', 'uint32_t', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromEnd [variable]
-    cls.add_instance_attribute('currentTrimedFromEnd', 'uint32_t', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromStart [variable]
-    cls.add_instance_attribute('currentTrimedFromStart', 'uint32_t', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::isFragment [variable]
-    cls.add_instance_attribute('isFragment', 'bool', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::tid [variable]
-    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
-    return
-
-def register_Ns3PacketMetadataItemIterator_methods(root_module, cls):
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata::ItemIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketMetadata::ItemIterator const &', 'arg0')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata const * metadata, ns3::Buffer buffer) [constructor]
-    cls.add_constructor([param('ns3::PacketMetadata const *', 'metadata'), param('ns3::Buffer', 'buffer')])
-    ## packet-metadata.h (module 'network'): bool ns3::PacketMetadata::ItemIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item ns3::PacketMetadata::ItemIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::PacketMetadata::Item', 
-                   [])
-    return
-
-def register_Ns3PacketTagIterator_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::PacketTagIterator::PacketTagIterator(ns3::PacketTagIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagIterator const &', 'arg0')])
-    ## packet.h (module 'network'): bool ns3::PacketTagIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::PacketTagIterator::Item ns3::PacketTagIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::PacketTagIterator::Item', 
-                   [])
-    return
-
-def register_Ns3PacketTagIteratorItem_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::PacketTagIterator::Item::Item(ns3::PacketTagIterator::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagIterator::Item const &', 'arg0')])
-    ## packet.h (module 'network'): void ns3::PacketTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
-    cls.add_method('GetTag', 
-                   'void', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::TypeId ns3::PacketTagIterator::Item::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3PacketTagList_methods(root_module, cls):
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList() [constructor]
-    cls.add_constructor([])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList(ns3::PacketTagList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagList const &', 'o')])
-    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::Add(ns3::Tag const & tag) const [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData const * ns3::PacketTagList::Head() const [member function]
-    cls.add_method('Head', 
-                   'ns3::PacketTagList::TagData const *', 
-                   [], 
-                   is_const=True)
-    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Peek(ns3::Tag & tag) const [member function]
-    cls.add_method('Peek', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Remove(ns3::Tag & tag) [member function]
-    cls.add_method('Remove', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')])
-    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::RemoveAll() [member function]
-    cls.add_method('RemoveAll', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3PacketTagListTagData_methods(root_module, cls):
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData() [constructor]
-    cls.add_constructor([])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData(ns3::PacketTagList::TagData const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagList::TagData const &', 'arg0')])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::count [variable]
-    cls.add_instance_attribute('count', 'uint32_t', is_const=False)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::data [variable]
-    cls.add_instance_attribute('data', 'uint8_t [ 20 ]', is_const=False)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::next [variable]
-    cls.add_instance_attribute('next', 'ns3::PacketTagList::TagData *', is_const=False)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::tid [variable]
-    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
-    return
-
-def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount(ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3Simulator_methods(root_module, cls):
-    ## simulator.h (module 'core'): ns3::Simulator::Simulator(ns3::Simulator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Simulator const &', 'arg0')])
-    ## simulator.h (module 'core'): static void ns3::Simulator::Cancel(ns3::EventId const & id) [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Destroy() [member function]
-    cls.add_method('Destroy', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetContext() [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetDelayLeft(ns3::EventId const & id) [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Ptr<ns3::SimulatorImpl> ns3::Simulator::GetImplementation() [member function]
-    cls.add_method('GetImplementation', 
-                   'ns3::Ptr< ns3::SimulatorImpl >', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetMaximumSimulationTime() [member function]
-    cls.add_method('GetMaximumSimulationTime', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetSystemId() [member function]
-    cls.add_method('GetSystemId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsExpired(ns3::EventId const & id) [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsFinished() [member function]
-    cls.add_method('IsFinished', 
-                   'bool', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True, deprecated=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Now() [member function]
-    cls.add_method('Now', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Remove(ns3::EventId const & id) [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::RunOneEvent() [member function]
-    cls.add_method('RunOneEvent', 
-                   'void', 
-                   [], 
-                   is_static=True, deprecated=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetImplementation(ns3::Ptr<ns3::SimulatorImpl> impl) [member function]
-    cls.add_method('SetImplementation', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetScheduler(ns3::ObjectFactory schedulerFactory) [member function]
-    cls.add_method('SetScheduler', 
-                   'void', 
-                   [param('ns3::ObjectFactory', 'schedulerFactory')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop() [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop(ns3::Time const & time) [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [param('ns3::Time const &', 'time')], 
-                   is_static=True)
-    return
-
-def register_Ns3Tag_methods(root_module, cls):
-    ## tag.h (module 'network'): ns3::Tag::Tag() [constructor]
-    cls.add_constructor([])
-    ## tag.h (module 'network'): ns3::Tag::Tag(ns3::Tag const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Tag const &', 'arg0')])
-    ## tag.h (module 'network'): void ns3::Tag::Deserialize(ns3::TagBuffer i) [member function]
-    cls.add_method('Deserialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'i')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## tag.h (module 'network'): uint32_t ns3::Tag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## tag.h (module 'network'): static ns3::TypeId ns3::Tag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## tag.h (module 'network'): void ns3::Tag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## tag.h (module 'network'): void ns3::Tag::Serialize(ns3::TagBuffer i) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'i')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3TagBuffer_methods(root_module, cls):
-    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(ns3::TagBuffer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TagBuffer const &', 'arg0')])
-    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(uint8_t * start, uint8_t * end) [constructor]
-    cls.add_constructor([param('uint8_t *', 'start'), param('uint8_t *', 'end')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::CopyFrom(ns3::TagBuffer o) [member function]
-    cls.add_method('CopyFrom', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'o')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Read(uint8_t * buffer, uint32_t size) [member function]
-    cls.add_method('Read', 
-                   'void', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
-    ## tag-buffer.h (module 'network'): double ns3::TagBuffer::ReadDouble() [member function]
-    cls.add_method('ReadDouble', 
-                   'double', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint16_t ns3::TagBuffer::ReadU16() [member function]
-    cls.add_method('ReadU16', 
-                   'uint16_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint32_t ns3::TagBuffer::ReadU32() [member function]
-    cls.add_method('ReadU32', 
-                   'uint32_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint64_t ns3::TagBuffer::ReadU64() [member function]
-    cls.add_method('ReadU64', 
-                   'uint64_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint8_t ns3::TagBuffer::ReadU8() [member function]
-    cls.add_method('ReadU8', 
-                   'uint8_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::TrimAtEnd(uint32_t trim) [member function]
-    cls.add_method('TrimAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'trim')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Write(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Write', 
-                   'void', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteDouble(double v) [member function]
-    cls.add_method('WriteDouble', 
-                   'void', 
-                   [param('double', 'v')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU16(uint16_t data) [member function]
-    cls.add_method('WriteU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU32(uint32_t data) [member function]
-    cls.add_method('WriteU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU64(uint64_t v) [member function]
-    cls.add_method('WriteU64', 
-                   'void', 
-                   [param('uint64_t', 'v')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU8(uint8_t v) [member function]
-    cls.add_method('WriteU8', 
-                   'void', 
-                   [param('uint8_t', 'v')])
-    return
-
-def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('>')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::Time const &', 'right'))
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('<=')
-    cls.add_binary_comparison_operator('==')
-    cls.add_binary_comparison_operator('>=')
-    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::Time const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Time const &', 'o')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::HighPrecision const & data) [constructor]
-    cls.add_constructor([param('ns3::HighPrecision const &', 'data')])
-    ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
-    cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
-    cls.add_method('Compare', 
-                   'int', 
-                   [param('ns3::Time const &', 'o')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromDouble', 
-                   'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromInteger', 
-                   'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetFemtoSeconds() const [member function]
-    cls.add_method('GetFemtoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): ns3::HighPrecision const & ns3::Time::GetHighPrecision() const [member function]
-    cls.add_method('GetHighPrecision', 
-                   'ns3::HighPrecision const &', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMicroSeconds() const [member function]
-    cls.add_method('GetMicroSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMilliSeconds() const [member function]
-    cls.add_method('GetMilliSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
-    cls.add_method('GetNanoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetPicoSeconds() const [member function]
-    cls.add_method('GetPicoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time::Unit ns3::Time::GetResolution() [member function]
-    cls.add_method('GetResolution', 
-                   'ns3::Time::Unit', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): double ns3::Time::GetSeconds() const [member function]
-    cls.add_method('GetSeconds', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetTimeStep() const [member function]
-    cls.add_method('GetTimeStep', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
-    cls.add_method('IsNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsPositive() const [member function]
-    cls.add_method('IsPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyNegative() const [member function]
-    cls.add_method('IsStrictlyNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyPositive() const [member function]
-    cls.add_method('IsStrictlyPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsZero() const [member function]
-    cls.add_method('IsZero', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): ns3::HighPrecision * ns3::Time::PeekHighPrecision() [member function]
-    cls.add_method('PeekHighPrecision', 
-                   'ns3::HighPrecision *', 
-                   [])
-    ## nstime.h (module 'core'): static void ns3::Time::SetResolution(ns3::Time::Unit resolution) [member function]
-    cls.add_method('SetResolution', 
-                   'void', 
-                   [param('ns3::Time::Unit', 'resolution')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static double ns3::Time::ToDouble(ns3::Time const & time, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('ToDouble', 
-                   'double', 
-                   [param('ns3::Time const &', 'time'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static uint64_t ns3::Time::ToInteger(ns3::Time const & time, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('ToInteger', 
-                   'uint64_t', 
-                   [param('ns3::Time const &', 'time'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    return
-
-def register_Ns3TypeId_methods(root_module, cls):
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## type-id.h (module 'core'): ns3::TypeId::TypeId(char const * name) [constructor]
-    cls.add_constructor([param('char const *', 'name')])
-    ## type-id.h (module 'core'): ns3::TypeId::TypeId() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeId::TypeId(ns3::TypeId const & o) [copy constructor]
-    cls.add_constructor([param('ns3::TypeId const &', 'o')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('AddAttribute', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, uint32_t flags, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('AddAttribute', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name'), param('std::string', 'help'), param('uint32_t', 'flags'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr<const ns3::TraceSourceAccessor> accessor) [member function]
-    cls.add_method('AddTraceSource', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeAccessor const> ns3::TypeId::GetAttributeAccessor(uint32_t i) const [member function]
-    cls.add_method('GetAttributeAccessor', 
-                   'ns3::Ptr< ns3::AttributeAccessor const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeChecker const> ns3::TypeId::GetAttributeChecker(uint32_t i) const [member function]
-    cls.add_method('GetAttributeChecker', 
-                   'ns3::Ptr< ns3::AttributeChecker const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetAttributeFlags(uint32_t i) const [member function]
-    cls.add_method('GetAttributeFlags', 
-                   'uint32_t', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeFullName(uint32_t i) const [member function]
-    cls.add_method('GetAttributeFullName', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeHelp(uint32_t i) const [member function]
-    cls.add_method('GetAttributeHelp', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeValue const> ns3::TypeId::GetAttributeInitialValue(uint32_t i) const [member function]
-    cls.add_method('GetAttributeInitialValue', 
-                   'ns3::Ptr< ns3::AttributeValue const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetAttributeN() const [member function]
-    cls.add_method('GetAttributeN', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeName(uint32_t i) const [member function]
-    cls.add_method('GetAttributeName', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::Callback<ns3::ObjectBase*,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::TypeId::GetConstructor() const [member function]
-    cls.add_method('GetConstructor', 
-                   'ns3::Callback< ns3::ObjectBase *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetGroupName() const [member function]
-    cls.add_method('GetGroupName', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetName() const [member function]
-    cls.add_method('GetName', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::GetParent() const [member function]
-    cls.add_method('GetParent', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::GetRegistered(uint32_t i) [member function]
-    cls.add_method('GetRegistered', 
-                   'ns3::TypeId', 
-                   [param('uint32_t', 'i')], 
-                   is_static=True)
-    ## type-id.h (module 'core'): static uint32_t ns3::TypeId::GetRegisteredN() [member function]
-    cls.add_method('GetRegisteredN', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## type-id.h (module 'core'): ns3::Ptr<const ns3::TraceSourceAccessor> ns3::TypeId::GetTraceSourceAccessor(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceAccessor', 
-                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetTraceSourceHelp(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceHelp', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetTraceSourceN() const [member function]
-    cls.add_method('GetTraceSourceN', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetTraceSourceName(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceName', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint16_t ns3::TypeId::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::HasConstructor() const [member function]
-    cls.add_method('HasConstructor', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::HasParent() const [member function]
-    cls.add_method('HasParent', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::HideFromDocumentation() [member function]
-    cls.add_method('HideFromDocumentation', 
-                   'ns3::TypeId', 
-                   [])
-    ## type-id.h (module 'core'): bool ns3::TypeId::IsChildOf(ns3::TypeId other) const [member function]
-    cls.add_method('IsChildOf', 
-                   'bool', 
-                   [param('ns3::TypeId', 'other')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): static bool ns3::TypeId::LookupAttributeByFullName(std::string fullName, ns3::TypeId::AttributeInfo * info) [member function]
-    cls.add_method('LookupAttributeByFullName', 
-                   'bool', 
-                   [param('std::string', 'fullName'), param('ns3::TypeId::AttributeInfo *', 'info')], 
-                   is_static=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::LookupAttributeByName(std::string name, ns3::TypeId::AttributeInfo * info) const [member function]
-    cls.add_method('LookupAttributeByName', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::TypeId::AttributeInfo *', 'info', transfer_ownership=False)], 
-                   is_const=True)
-    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::LookupByName(std::string name) [member function]
-    cls.add_method('LookupByName', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name')], 
-                   is_static=True)
-    ## type-id.h (module 'core'): ns3::Ptr<const ns3::TraceSourceAccessor> ns3::TypeId::LookupTraceSourceByName(std::string name) const [member function]
-    cls.add_method('LookupTraceSourceByName', 
-                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
-                   [param('std::string', 'name')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::MustHideFromDocumentation() const [member function]
-    cls.add_method('MustHideFromDocumentation', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetGroupName(std::string groupName) [member function]
-    cls.add_method('SetGroupName', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'groupName')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetParent(ns3::TypeId tid) [member function]
-    cls.add_method('SetParent', 
-                   'ns3::TypeId', 
-                   [param('ns3::TypeId', 'tid')])
-    ## type-id.h (module 'core'): void ns3::TypeId::SetUid(uint16_t tid) [member function]
-    cls.add_method('SetUid', 
-                   'void', 
-                   [param('uint16_t', 'tid')])
-    return
-
-def register_Ns3TypeIdAttributeInfo_methods(root_module, cls):
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::AttributeInfo() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::AttributeInfo(ns3::TypeId::AttributeInfo const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TypeId::AttributeInfo const &', 'arg0')])
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::accessor [variable]
-    cls.add_instance_attribute('accessor', 'ns3::Ptr< ns3::AttributeAccessor const >', is_const=False)
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::checker [variable]
-    cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::flags [variable]
-    cls.add_instance_attribute('flags', 'uint32_t', is_const=False)
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::initialValue [variable]
-    cls.add_instance_attribute('initialValue', 'ns3::Ptr< ns3::AttributeValue const >', is_const=False)
-    return
-
-def register_Ns3UnsafeAttributeList_methods(root_module, cls):
-    ## attribute-list.h (module 'core'): ns3::UnsafeAttributeList::UnsafeAttributeList() [constructor]
-    cls.add_constructor([])
-    ## attribute-list.h (module 'core'): ns3::UnsafeAttributeList::UnsafeAttributeList(ns3::UnsafeAttributeList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::UnsafeAttributeList const &', 'o')])
-    ## attribute-list.h (module 'core'): ns3::AttributeList ns3::UnsafeAttributeList::GetSafe(std::string name) const [member function]
-    cls.add_method('GetSafe', 
-                   'ns3::AttributeList', 
-                   [param('std::string', 'name')], 
-                   is_const=True)
-    ## attribute-list.h (module 'core'): void ns3::UnsafeAttributeList::Set(std::string name, ns3::AttributeValue const & param) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'param')])
-    return
-
-def register_Ns3Empty_methods(root_module, cls):
-    ## empty.h (module 'core'): ns3::empty::empty() [constructor]
-    cls.add_constructor([])
-    ## empty.h (module 'core'): ns3::empty::empty(ns3::empty const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::empty const &', 'arg0')])
-    return
-
-def register_Ns3Chunk_methods(root_module, cls):
-    ## chunk.h (module 'network'): ns3::Chunk::Chunk() [constructor]
-    cls.add_constructor([])
-    ## chunk.h (module 'network'): ns3::Chunk::Chunk(ns3::Chunk const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Chunk const &', 'arg0')])
-    ## chunk.h (module 'network'): uint32_t ns3::Chunk::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## chunk.h (module 'network'): static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## chunk.h (module 'network'): void ns3::Chunk::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3ConfigStore_methods(root_module, cls):
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::ConfigStore(ns3::ConfigStore const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ConfigStore const &', 'arg0')])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::ConfigStore() [constructor]
-    cls.add_constructor([])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::ConfigureAttributes() [member function]
-    cls.add_method('ConfigureAttributes', 
-                   'void', 
-                   [])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::ConfigureDefaults() [member function]
-    cls.add_method('ConfigureDefaults', 
-                   'void', 
-                   [])
-    ## config-store.h (module 'contrib'): ns3::TypeId ns3::ConfigStore::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## config-store.h (module 'contrib'): static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::SetFileFormat(ns3::ConfigStore::FileFormat format) [member function]
-    cls.add_method('SetFileFormat', 
-                   'void', 
-                   [param('ns3::ConfigStore::FileFormat', 'format')])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::SetMode(ns3::ConfigStore::Mode mode) [member function]
-    cls.add_method('SetMode', 
-                   'void', 
-                   [param('ns3::ConfigStore::Mode', 'mode')])
-    return
-
-def register_Ns3FlowIdTag_methods(root_module, cls):
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag::FlowIdTag(ns3::FlowIdTag const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FlowIdTag const &', 'arg0')])
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag::FlowIdTag() [constructor]
-    cls.add_constructor([])
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag::FlowIdTag(uint32_t flowId) [constructor]
-    cls.add_constructor([param('uint32_t', 'flowId')])
-    ## flow-id-tag.h (module 'contrib'): static uint32_t ns3::FlowIdTag::AllocateFlowId() [member function]
-    cls.add_method('AllocateFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::Deserialize(ns3::TagBuffer buf) [member function]
-    cls.add_method('Deserialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): uint32_t ns3::FlowIdTag::GetFlowId() const [member function]
-    cls.add_method('GetFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## flow-id-tag.h (module 'contrib'): ns3::TypeId ns3::FlowIdTag::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): uint32_t ns3::FlowIdTag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): static ns3::TypeId ns3::FlowIdTag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::Serialize(ns3::TagBuffer buf) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::SetFlowId(uint32_t flowId) [member function]
-    cls.add_method('SetFlowId', 
-                   'void', 
-                   [param('uint32_t', 'flowId')])
-    return
-
-def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::Gnuplot2dDataset(ns3::Gnuplot2dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dDataset const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::Gnuplot2dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::Add(double x, double y) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::Add(double x, double y, double errorDelta) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::Add(double x, double y, double minY, double maxY) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'minY'), param('double', 'maxY')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h (module 'contrib'): static void ns3::Gnuplot2dDataset::SetDefaultErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetDefaultErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): static void ns3::Gnuplot2dDataset::SetDefaultStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::SetErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::SetStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')])
-    return
-
-def register_Ns3Gnuplot2dFunction_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dFunction::Gnuplot2dFunction(ns3::Gnuplot2dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dFunction const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dFunction::Gnuplot2dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_Ns3Gnuplot3dDataset_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dDataset::Gnuplot3dDataset(ns3::Gnuplot3dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dDataset const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dDataset::Gnuplot3dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dDataset::Add(double x, double y, double z) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'z')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h (module 'contrib'): static void ns3::Gnuplot3dDataset::SetDefaultStyle(std::string const & style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dDataset::SetStyle(std::string const & style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')])
-    return
-
-def register_Ns3Gnuplot3dFunction_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dFunction::Gnuplot3dFunction(ns3::Gnuplot3dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dFunction const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dFunction::Gnuplot3dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_Ns3Header_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## header.h (module 'network'): ns3::Header::Header() [constructor]
-    cls.add_constructor([])
-    ## header.h (module 'network'): ns3::Header::Header(ns3::Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Header const &', 'arg0')])
-    ## header.h (module 'network'): uint32_t ns3::Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## header.h (module 'network'): uint32_t ns3::Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## header.h (module 'network'): static ns3::TypeId ns3::Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## header.h (module 'network'): void ns3::Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## header.h (module 'network'): void ns3::Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3Object_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::Object::Object() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
-    cls.add_method('AggregateObject', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Object >', 'other')])
-    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
-    cls.add_method('Dispose', 
-                   'void', 
-                   [])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
-    cls.add_method('GetAggregateIterator', 
-                   'ns3::Object::AggregateIterator', 
-                   [], 
-                   is_const=True)
-    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## object.h (module 'core'): void ns3::Object::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [])
-    ## object.h (module 'core'): ns3::Object::Object(ns3::Object const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Object const &', 'o')], 
-                        visibility='protected')
-    ## object.h (module 'core'): void ns3::Object::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    ## object.h (module 'core'): void ns3::Object::DoStart() [member function]
-    cls.add_method('DoStart', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    ## object.h (module 'core'): void ns3::Object::NotifyNewAggregate() [member function]
-    cls.add_method('NotifyNewAggregate', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3ObjectAggregateIterator_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator(ns3::Object::AggregateIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Object::AggregateIterator const &', 'arg0')])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): bool ns3::Object::AggregateIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## object.h (module 'core'): ns3::Ptr<ns3::Object const> ns3::Object::AggregateIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::Ptr< ns3::Object const >', 
-                   [])
-    return
-
-def register_Ns3Scalar_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(ns3::Scalar const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Scalar const &', 'arg0')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(double v) [constructor]
-    cls.add_constructor([param('double', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(uint32_t v) [constructor]
-    cls.add_constructor([param('uint32_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(int32_t v) [constructor]
-    cls.add_constructor([param('int32_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(uint64_t v) [constructor]
-    cls.add_constructor([param('uint64_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(int64_t v) [constructor]
-    cls.add_constructor([param('int64_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(ns3::Time t) [constructor]
-    cls.add_constructor([param('ns3::Time', 't')])
-    ## nstime.h (module 'core'): double ns3::Scalar::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter< ns3::AttributeAccessor > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter< ns3::AttributeChecker > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter< ns3::AttributeValue > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount(ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter< ns3::CallbackImplBase > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount(ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter< ns3::EventImpl > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount(ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter< ns3::NixVector > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter< ns3::Packet > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3Trailer_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## trailer.h (module 'network'): ns3::Trailer::Trailer() [constructor]
-    cls.add_constructor([])
-    ## trailer.h (module 'network'): ns3::Trailer::Trailer(ns3::Trailer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Trailer const &', 'arg0')])
-    ## trailer.h (module 'network'): uint32_t ns3::Trailer::Deserialize(ns3::Buffer::Iterator end) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'end')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## trailer.h (module 'network'): uint32_t ns3::Trailer::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## trailer.h (module 'network'): static ns3::TypeId ns3::Trailer::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## trailer.h (module 'network'): void ns3::Trailer::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## trailer.h (module 'network'): void ns3::Trailer::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3AttributeAccessor_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor(ns3::AttributeAccessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeAccessor const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Get(ns3::ObjectBase const * object, ns3::AttributeValue & attribute) const [member function]
-    cls.add_method('Get', 
-                   'bool', 
-                   [param('ns3::ObjectBase const *', 'object'), param('ns3::AttributeValue &', 'attribute')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasGetter() const [member function]
-    cls.add_method('HasGetter', 
-                   'bool', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasSetter() const [member function]
-    cls.add_method('HasSetter', 
-                   'bool', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Set', 
-                   'bool', 
-                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False), param('ns3::AttributeValue const &', 'value')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3AttributeChecker_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker(ns3::AttributeChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeChecker const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Check(ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Check', 
-                   'bool', 
-                   [param('ns3::AttributeValue const &', 'value')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Copy(ns3::AttributeValue const & source, ns3::AttributeValue & destination) const [member function]
-    cls.add_method('Copy', 
-                   'bool', 
-                   [param('ns3::AttributeValue const &', 'source'), param('ns3::AttributeValue &', 'destination')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeChecker::Create() const [member function]
-    cls.add_method('Create', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetUnderlyingTypeInformation() const [member function]
-    cls.add_method('GetUnderlyingTypeInformation', 
-                   'std::string', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetValueTypeName() const [member function]
-    cls.add_method('GetValueTypeName', 
-                   'std::string', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeChecker::HasUnderlyingTypeInformation() const [member function]
-    cls.add_method('HasUnderlyingTypeInformation', 
-                   'bool', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3AttributeValue_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue(ns3::AttributeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeValue const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::AttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3CallbackChecker_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker(ns3::CallbackChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackChecker const &', 'arg0')])
-    return
-
-def register_Ns3CallbackImplBase_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase(ns3::CallbackImplBase const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackImplBase const &', 'arg0')])
-    ## callback.h (module 'core'): bool ns3::CallbackImplBase::IsEqual(ns3::Ptr<ns3::CallbackImplBase const> other) const [member function]
-    cls.add_method('IsEqual', 
-                   'bool', 
-                   [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3CallbackValue_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackValue const &', 'arg0')])
-    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackBase const & base) [constructor]
-    cls.add_constructor([param('ns3::CallbackBase const &', 'base')])
-    ## callback.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::CallbackValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## callback.h (module 'core'): bool ns3::CallbackValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## callback.h (module 'core'): std::string ns3::CallbackValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## callback.h (module 'core'): void ns3::CallbackValue::Set(ns3::CallbackBase base) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::CallbackBase', 'base')])
-    return
-
-def register_Ns3EmptyAttributeValue_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue(ns3::EmptyAttributeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EmptyAttributeValue const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::EmptyAttributeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, visibility='private', is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::EmptyAttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   visibility='private', is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::EmptyAttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, visibility='private', is_virtual=True)
-    return
-
-def register_Ns3EventImpl_methods(root_module, cls):
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl() [constructor]
-    cls.add_constructor([])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): bool ns3::EventImpl::IsCancelled() [member function]
-    cls.add_method('IsCancelled', 
-                   'bool', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Notify() [member function]
-    cls.add_method('Notify', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3NixVector_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector() [constructor]
-    cls.add_constructor([])
-    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector(ns3::NixVector const & o) [copy constructor]
-    cls.add_constructor([param('ns3::NixVector const &', 'o')])
-    ## nix-vector.h (module 'network'): void ns3::NixVector::AddNeighborIndex(uint32_t newBits, uint32_t numberOfBits) [member function]
-    cls.add_method('AddNeighborIndex', 
-                   'void', 
-                   [param('uint32_t', 'newBits'), param('uint32_t', 'numberOfBits')])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::BitCount(uint32_t numberOfNeighbors) const [member function]
-    cls.add_method('BitCount', 
-                   'uint32_t', 
-                   [param('uint32_t', 'numberOfNeighbors')], 
-                   is_const=True)
-    ## nix-vector.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::NixVector::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::NixVector >', 
-                   [], 
-                   is_const=True)
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Deserialize(uint32_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('uint32_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::ExtractNeighborIndex(uint32_t numberOfBits) [member function]
-    cls.add_method('ExtractNeighborIndex', 
-                   'uint32_t', 
-                   [param('uint32_t', 'numberOfBits')])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetRemainingBits() [member function]
-    cls.add_method('GetRemainingBits', 
-                   'uint32_t', 
-                   [])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Serialize(uint32_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint32_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    return
-
-def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker(ns3::ObjectFactoryChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryChecker const &', 'arg0')])
-    return
-
-def register_Ns3ObjectFactoryValue_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactoryValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryValue const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'value')])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::ObjectFactoryValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): bool ns3::ObjectFactoryValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## object-factory.h (module 'core'): ns3::ObjectFactory ns3::ObjectFactoryValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::ObjectFactory', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): std::string ns3::ObjectFactoryValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactoryValue::Set(ns3::ObjectFactory const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::ObjectFactory const &', 'value')])
-    return
-
-def register_Ns3Packet_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## packet.h (module 'network'): ns3::Packet::Packet() [constructor]
-    cls.add_constructor([])
-    ## packet.h (module 'network'): ns3::Packet::Packet(ns3::Packet const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Packet const &', 'o')])
-    ## packet.h (module 'network'): ns3::Packet::Packet(uint32_t size) [constructor]
-    cls.add_constructor([param('uint32_t', 'size')])
-    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size, bool magic) [constructor]
-    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size'), param('bool', 'magic')])
-    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size) [constructor]
-    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## packet.h (module 'network'): void ns3::Packet::AddAtEnd(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
-    ## packet.h (module 'network'): void ns3::Packet::AddByteTag(ns3::Tag const & tag) const [member function]
-    cls.add_method('AddByteTag', 
-                   'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::AddHeader(ns3::Header const & header) [member function]
-    cls.add_method('AddHeader', 
-                   'void', 
-                   [param('ns3::Header const &', 'header')])
-    ## packet.h (module 'network'): void ns3::Packet::AddPacketTag(ns3::Tag const & tag) const [member function]
-    cls.add_method('AddPacketTag', 
-                   'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::AddPaddingAtEnd(uint32_t size) [member function]
-    cls.add_method('AddPaddingAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'size')])
-    ## packet.h (module 'network'): void ns3::Packet::AddTrailer(ns3::Trailer const & trailer) [member function]
-    cls.add_method('AddTrailer', 
-                   'void', 
-                   [param('ns3::Trailer const &', 'trailer')])
-    ## packet.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::Packet::BeginItem() const [member function]
-    cls.add_method('BeginItem', 
-                   'ns3::PacketMetadata::ItemIterator', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::Packet >', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::CopyData(uint8_t * buffer, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::CopyData(std::ostream * os, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'void', 
-                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::CreateFragment(uint32_t start, uint32_t length) const [member function]
-    cls.add_method('CreateFragment', 
-                   'ns3::Ptr< ns3::Packet >', 
-                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
-                   is_const=True)
-    ## packet.h (module 'network'): static void ns3::Packet::EnableChecking() [member function]
-    cls.add_method('EnableChecking', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet.h (module 'network'): static void ns3::Packet::EnablePrinting() [member function]
-    cls.add_method('EnablePrinting', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet.h (module 'network'): bool ns3::Packet::FindFirstMatchingByteTag(ns3::Tag & tag) const [member function]
-    cls.add_method('FindFirstMatchingByteTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::ByteTagIterator ns3::Packet::GetByteTagIterator() const [member function]
-    cls.add_method('GetByteTagIterator', 
-                   'ns3::ByteTagIterator', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::Packet::GetNixVector() const [member function]
-    cls.add_method('GetNixVector', 
-                   'ns3::Ptr< ns3::NixVector >', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::PacketTagIterator ns3::Packet::GetPacketTagIterator() const [member function]
-    cls.add_method('GetPacketTagIterator', 
-                   'ns3::PacketTagIterator', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSize() const [member function]
-    cls.add_method('GetSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint64_t ns3::Packet::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint8_t const * ns3::Packet::PeekData() const [member function]
-    cls.add_method('PeekData', 
-                   'uint8_t const *', 
-                   [], 
-                   deprecated=True, is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekHeader(ns3::Header & header) const [member function]
-    cls.add_method('PeekHeader', 
-                   'uint32_t', 
-                   [param('ns3::Header &', 'header')], 
-                   is_const=True)
-    ## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
-    cls.add_method('PeekPacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekTrailer(ns3::Trailer & trailer) [member function]
-    cls.add_method('PeekTrailer', 
-                   'uint32_t', 
-                   [param('ns3::Trailer &', 'trailer')])
-    ## packet.h (module 'network'): void ns3::Packet::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::PrintByteTags(std::ostream & os) const [member function]
-    cls.add_method('PrintByteTags', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::PrintPacketTags(std::ostream & os) const [member function]
-    cls.add_method('PrintPacketTags', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAllByteTags() [member function]
-    cls.add_method('RemoveAllByteTags', 
-                   'void', 
-                   [])
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAllPacketTags() [member function]
-    cls.add_method('RemoveAllPacketTags', 
-                   'void', 
-                   [])
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAtEnd(uint32_t size) [member function]
-    cls.add_method('RemoveAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'size')])
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAtStart(uint32_t size) [member function]
-    cls.add_method('RemoveAtStart', 
-                   'void', 
-                   [param('uint32_t', 'size')])
-    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveHeader(ns3::Header & header) [member function]
-    cls.add_method('RemoveHeader', 
-                   'uint32_t', 
-                   [param('ns3::Header &', 'header')])
-    ## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
-    cls.add_method('RemovePacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')])
-    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveTrailer(ns3::Trailer & trailer) [member function]
-    cls.add_method('RemoveTrailer', 
-                   'uint32_t', 
-                   [param('ns3::Trailer &', 'trailer')])
-    ## packet.h (module 'network'): uint32_t ns3::Packet::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
-    cls.add_method('SetNixVector', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
-    return
-
-def register_Ns3TimeChecker_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::TimeChecker::TimeChecker() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::TimeChecker::TimeChecker(ns3::TimeChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimeChecker const &', 'arg0')])
-    return
-
-def register_Ns3TimeValue_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::TimeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimeValue const &', 'arg0')])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
-    cls.add_constructor([param('ns3::Time const &', 'value')])
-    ## nstime.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TimeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): bool ns3::TimeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## nstime.h (module 'core'): ns3::Time ns3::TimeValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): std::string ns3::TimeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): void ns3::TimeValue::Set(ns3::Time const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::Time const &', 'value')])
-    return
-
-def register_Ns3TypeIdChecker_methods(root_module, cls):
-    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker(ns3::TypeIdChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TypeIdChecker const &', 'arg0')])
-    return
-
-def register_Ns3TypeIdValue_methods(root_module, cls):
-    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeIdValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TypeIdValue const &', 'arg0')])
-    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeId const & value) [constructor]
-    cls.add_constructor([param('ns3::TypeId const &', 'value')])
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TypeIdValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## type-id.h (module 'core'): bool ns3::TypeIdValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeIdValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeIdValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## type-id.h (module 'core'): void ns3::TypeIdValue::Set(ns3::TypeId const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::TypeId const &', 'value')])
-    return
-
-def register_functions(root_module):
-    module = root_module
-    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
-    return
-
-def register_functions_ns3_FatalImpl(module, root_module):
-    return
-
-def main():
-    out = FileCodeSink(sys.stdout)
-    root_module = module_init()
-    register_types(root_module)
-    register_methods(root_module)
-    register_functions(root_module)
-    root_module.generate(out)
-
-if __name__ == '__main__':
-    main()
-
--- a/src/contrib/bindings/modulegen__gcc_LP64.py	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2794 +0,0 @@
-from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
-
-
-import pybindgen.settings
-import warnings
-
-class ErrorHandler(pybindgen.settings.ErrorHandler):
-    def handle_error(self, wrapper, exception, traceback_):
-        warnings.warn("exception %r in wrapper %s" % (exception, wrapper))
-        return True
-pybindgen.settings.error_handler = ErrorHandler()
-
-
-import sys
-
-def module_init():
-    root_module = Module('ns.contrib', cpp_namespace='::ns3')
-    return root_module
-
-def register_types(module):
-    root_module = module.get_root()
-    
-    ## attribute-list.h (module 'core'): ns3::AttributeList [class]
-    module.add_class('AttributeList', import_from_module='ns.core')
-    ## buffer.h (module 'network'): ns3::Buffer [class]
-    module.add_class('Buffer', import_from_module='ns.network')
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator [class]
-    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::Buffer'])
-    ## packet.h (module 'network'): ns3::ByteTagIterator [class]
-    module.add_class('ByteTagIterator', import_from_module='ns.network')
-    ## packet.h (module 'network'): ns3::ByteTagIterator::Item [class]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagIterator'])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList [class]
-    module.add_class('ByteTagList', import_from_module='ns.network')
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator [class]
-    module.add_class('Iterator', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList'])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item [struct]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::ByteTagList::Iterator'])
-    ## callback.h (module 'core'): ns3::CallbackBase [class]
-    module.add_class('CallbackBase', import_from_module='ns.core')
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::DelayJitterEstimation [class]
-    module.add_class('DelayJitterEstimation')
-    ## event-garbage-collector.h (module 'contrib'): ns3::EventGarbageCollector [class]
-    module.add_class('EventGarbageCollector')
-    ## event-id.h (module 'core'): ns3::EventId [class]
-    module.add_class('EventId', import_from_module='ns.core')
-    ## file-config.h (module 'contrib'): ns3::FileConfig [class]
-    module.add_class('FileConfig', allow_subclassing=True)
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot [class]
-    module.add_class('Gnuplot')
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotCollection [class]
-    module.add_class('GnuplotCollection')
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotDataset [class]
-    module.add_class('GnuplotDataset')
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision [class]
-    module.add_class('HighPrecision', import_from_module='ns.core')
-    ## file-config.h (module 'contrib'): ns3::NoneFileConfig [class]
-    module.add_class('NoneFileConfig', parent=root_module['ns3::FileConfig'])
-    ## object-base.h (module 'core'): ns3::ObjectBase [class]
-    module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
-    ## object.h (module 'core'): ns3::ObjectDeleter [struct]
-    module.add_class('ObjectDeleter', import_from_module='ns.core')
-    ## object-factory.h (module 'core'): ns3::ObjectFactory [class]
-    module.add_class('ObjectFactory', import_from_module='ns.core')
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata [class]
-    module.add_class('PacketMetadata', import_from_module='ns.network')
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [enumeration]
-    module.add_enum('', ['PAYLOAD', 'HEADER', 'TRAILER'], outer_class=root_module['ns3::PacketMetadata::Item'], import_from_module='ns.network')
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator [class]
-    module.add_class('ItemIterator', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
-    ## packet.h (module 'network'): ns3::PacketTagIterator [class]
-    module.add_class('PacketTagIterator', import_from_module='ns.network')
-    ## packet.h (module 'network'): ns3::PacketTagIterator::Item [class]
-    module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagIterator'])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList [class]
-    module.add_class('PacketTagList', import_from_module='ns.network')
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData [struct]
-    module.add_class('TagData', import_from_module='ns.network', outer_class=root_module['ns3::PacketTagList'])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Object', 'ns3::ObjectBase', 'ns3::ObjectDeleter'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simulator.h (module 'core'): ns3::Simulator [class]
-    module.add_class('Simulator', is_singleton=True, import_from_module='ns.core')
-    ## tag.h (module 'network'): ns3::Tag [class]
-    module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
-    ## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
-    module.add_class('TagBuffer', import_from_module='ns.network')
-    ## nstime.h (module 'core'): ns3::Time [class]
-    module.add_class('Time', import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
-    module.add_enum('Unit', ['S', 'MS', 'US', 'NS', 'PS', 'FS', 'LAST'], outer_class=root_module['ns3::Time'], import_from_module='ns.core')
-    ## type-id.h (module 'core'): ns3::TypeId [class]
-    module.add_class('TypeId', import_from_module='ns.core')
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeFlag [enumeration]
-    module.add_enum('AttributeFlag', ['ATTR_GET', 'ATTR_SET', 'ATTR_CONSTRUCT', 'ATTR_SGC'], outer_class=root_module['ns3::TypeId'], import_from_module='ns.core')
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo [struct]
-    module.add_class('AttributeInfo', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
-    ## attribute-list.h (module 'core'): ns3::UnsafeAttributeList [class]
-    module.add_class('UnsafeAttributeList', import_from_module='ns.core')
-    ## empty.h (module 'core'): ns3::empty [class]
-    module.add_class('empty', import_from_module='ns.core')
-    ## chunk.h (module 'network'): ns3::Chunk [class]
-    module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore [class]
-    module.add_class('ConfigStore', parent=root_module['ns3::ObjectBase'])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::Mode [enumeration]
-    module.add_enum('Mode', ['LOAD', 'SAVE', 'NONE'], outer_class=root_module['ns3::ConfigStore'])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::FileFormat [enumeration]
-    module.add_enum('FileFormat', ['XML', 'RAW_TEXT'], outer_class=root_module['ns3::ConfigStore'])
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag [class]
-    module.add_class('FlowIdTag', parent=root_module['ns3::Tag'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset [class]
-    module.add_class('Gnuplot2dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::Style [enumeration]
-    module.add_enum('Style', ['LINES', 'POINTS', 'LINES_POINTS', 'DOTS', 'IMPULSES', 'STEPS', 'FSTEPS', 'HISTEPS'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::ErrorBars [enumeration]
-    module.add_enum('ErrorBars', ['NONE', 'X', 'Y', 'XY'], outer_class=root_module['ns3::Gnuplot2dDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dFunction [class]
-    module.add_class('Gnuplot2dFunction', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dDataset [class]
-    module.add_class('Gnuplot3dDataset', parent=root_module['ns3::GnuplotDataset'])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dFunction [class]
-    module.add_class('Gnuplot3dFunction', parent=root_module['ns3::GnuplotDataset'])
-    ## header.h (module 'network'): ns3::Header [class]
-    module.add_class('Header', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
-    ## object.h (module 'core'): ns3::Object [class]
-    module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator [class]
-    module.add_class('AggregateIterator', import_from_module='ns.core', outer_class=root_module['ns3::Object'])
-    ## nstime.h (module 'core'): ns3::Scalar [class]
-    module.add_class('Scalar', import_from_module='ns.core')
-    ## nstime.h (module 'core'): ns3::Scalar [class]
-    root_module['ns3::Scalar'].implicitly_converts_to(root_module['ns3::Time'])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeAccessor', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeAccessor>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeChecker', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeChecker>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::AttributeValue', 'ns3::empty', 'ns3::DefaultDeleter<ns3::AttributeValue>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::CallbackImplBase', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CallbackImplBase>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::EventImpl', 'ns3::empty', 'ns3::DefaultDeleter<ns3::EventImpl>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::NixVector', 'ns3::empty', 'ns3::DefaultDeleter<ns3::NixVector>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > [class]
-    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Packet', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Packet>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
-    ## trailer.h (module 'network'): ns3::Trailer [class]
-    module.add_class('Trailer', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
-    ## attribute.h (module 'core'): ns3::AttributeAccessor [class]
-    module.add_class('AttributeAccessor', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
-    ## attribute.h (module 'core'): ns3::AttributeChecker [class]
-    module.add_class('AttributeChecker', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
-    ## attribute.h (module 'core'): ns3::AttributeValue [class]
-    module.add_class('AttributeValue', allow_subclassing=False, automatic_type_narrowing=True, import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
-    ## callback.h (module 'core'): ns3::CallbackChecker [class]
-    module.add_class('CallbackChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## callback.h (module 'core'): ns3::CallbackImplBase [class]
-    module.add_class('CallbackImplBase', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
-    ## callback.h (module 'core'): ns3::CallbackValue [class]
-    module.add_class('CallbackValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## attribute.h (module 'core'): ns3::EmptyAttributeValue [class]
-    module.add_class('EmptyAttributeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## event-impl.h (module 'core'): ns3::EventImpl [class]
-    module.add_class('EventImpl', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    ## nix-vector.h (module 'network'): ns3::NixVector [class]
-    module.add_class('NixVector', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker [class]
-    module.add_class('ObjectFactoryChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue [class]
-    module.add_class('ObjectFactoryValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## packet.h (module 'network'): ns3::Packet [class]
-    module.add_class('Packet', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
-    ## nstime.h (module 'core'): ns3::TimeChecker [class]
-    module.add_class('TimeChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## nstime.h (module 'core'): ns3::TimeValue [class]
-    module.add_class('TimeValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    ## type-id.h (module 'core'): ns3::TypeIdChecker [class]
-    module.add_class('TypeIdChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
-    ## type-id.h (module 'core'): ns3::TypeIdValue [class]
-    module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
-    typehandlers.add_type_alias('ns3::Time', 'ns3::TimeSquare')
-    typehandlers.add_type_alias('ns3::Time*', 'ns3::TimeSquare*')
-    typehandlers.add_type_alias('ns3::Time&', 'ns3::TimeSquare&')
-    module.add_typedef(root_module['ns3::Time'], 'TimeSquare')
-    typehandlers.add_type_alias('ns3::Time', 'ns3::TimeInvert')
-    typehandlers.add_type_alias('ns3::Time*', 'ns3::TimeInvert*')
-    typehandlers.add_type_alias('ns3::Time&', 'ns3::TimeInvert&')
-    module.add_typedef(root_module['ns3::Time'], 'TimeInvert')
-    
-    ## Register a nested module for the namespace FatalImpl
-    
-    nested_module = module.add_cpp_namespace('FatalImpl')
-    register_types_ns3_FatalImpl(nested_module)
-    
-
-def register_types_ns3_FatalImpl(module):
-    root_module = module.get_root()
-    
-
-def register_methods(root_module):
-    register_Ns3AttributeList_methods(root_module, root_module['ns3::AttributeList'])
-    register_Ns3Buffer_methods(root_module, root_module['ns3::Buffer'])
-    register_Ns3BufferIterator_methods(root_module, root_module['ns3::Buffer::Iterator'])
-    register_Ns3ByteTagIterator_methods(root_module, root_module['ns3::ByteTagIterator'])
-    register_Ns3ByteTagIteratorItem_methods(root_module, root_module['ns3::ByteTagIterator::Item'])
-    register_Ns3ByteTagList_methods(root_module, root_module['ns3::ByteTagList'])
-    register_Ns3ByteTagListIterator_methods(root_module, root_module['ns3::ByteTagList::Iterator'])
-    register_Ns3ByteTagListIteratorItem_methods(root_module, root_module['ns3::ByteTagList::Iterator::Item'])
-    register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
-    register_Ns3DelayJitterEstimation_methods(root_module, root_module['ns3::DelayJitterEstimation'])
-    register_Ns3EventGarbageCollector_methods(root_module, root_module['ns3::EventGarbageCollector'])
-    register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
-    register_Ns3FileConfig_methods(root_module, root_module['ns3::FileConfig'])
-    register_Ns3Gnuplot_methods(root_module, root_module['ns3::Gnuplot'])
-    register_Ns3GnuplotCollection_methods(root_module, root_module['ns3::GnuplotCollection'])
-    register_Ns3GnuplotDataset_methods(root_module, root_module['ns3::GnuplotDataset'])
-    register_Ns3HighPrecision_methods(root_module, root_module['ns3::HighPrecision'])
-    register_Ns3NoneFileConfig_methods(root_module, root_module['ns3::NoneFileConfig'])
-    register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
-    register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
-    register_Ns3ObjectFactory_methods(root_module, root_module['ns3::ObjectFactory'])
-    register_Ns3PacketMetadata_methods(root_module, root_module['ns3::PacketMetadata'])
-    register_Ns3PacketMetadataItem_methods(root_module, root_module['ns3::PacketMetadata::Item'])
-    register_Ns3PacketMetadataItemIterator_methods(root_module, root_module['ns3::PacketMetadata::ItemIterator'])
-    register_Ns3PacketTagIterator_methods(root_module, root_module['ns3::PacketTagIterator'])
-    register_Ns3PacketTagIteratorItem_methods(root_module, root_module['ns3::PacketTagIterator::Item'])
-    register_Ns3PacketTagList_methods(root_module, root_module['ns3::PacketTagList'])
-    register_Ns3PacketTagListTagData_methods(root_module, root_module['ns3::PacketTagList::TagData'])
-    register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
-    register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
-    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
-    register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
-    register_Ns3Time_methods(root_module, root_module['ns3::Time'])
-    register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
-    register_Ns3TypeIdAttributeInfo_methods(root_module, root_module['ns3::TypeId::AttributeInfo'])
-    register_Ns3UnsafeAttributeList_methods(root_module, root_module['ns3::UnsafeAttributeList'])
-    register_Ns3Empty_methods(root_module, root_module['ns3::empty'])
-    register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
-    register_Ns3ConfigStore_methods(root_module, root_module['ns3::ConfigStore'])
-    register_Ns3FlowIdTag_methods(root_module, root_module['ns3::FlowIdTag'])
-    register_Ns3Gnuplot2dDataset_methods(root_module, root_module['ns3::Gnuplot2dDataset'])
-    register_Ns3Gnuplot2dFunction_methods(root_module, root_module['ns3::Gnuplot2dFunction'])
-    register_Ns3Gnuplot3dDataset_methods(root_module, root_module['ns3::Gnuplot3dDataset'])
-    register_Ns3Gnuplot3dFunction_methods(root_module, root_module['ns3::Gnuplot3dFunction'])
-    register_Ns3Header_methods(root_module, root_module['ns3::Header'])
-    register_Ns3Object_methods(root_module, root_module['ns3::Object'])
-    register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
-    register_Ns3Scalar_methods(root_module, root_module['ns3::Scalar'])
-    register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >'])
-    register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >'])
-    register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >'])
-    register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >'])
-    register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >'])
-    register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >'])
-    register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >'])
-    register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
-    register_Ns3AttributeAccessor_methods(root_module, root_module['ns3::AttributeAccessor'])
-    register_Ns3AttributeChecker_methods(root_module, root_module['ns3::AttributeChecker'])
-    register_Ns3AttributeValue_methods(root_module, root_module['ns3::AttributeValue'])
-    register_Ns3CallbackChecker_methods(root_module, root_module['ns3::CallbackChecker'])
-    register_Ns3CallbackImplBase_methods(root_module, root_module['ns3::CallbackImplBase'])
-    register_Ns3CallbackValue_methods(root_module, root_module['ns3::CallbackValue'])
-    register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
-    register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
-    register_Ns3NixVector_methods(root_module, root_module['ns3::NixVector'])
-    register_Ns3ObjectFactoryChecker_methods(root_module, root_module['ns3::ObjectFactoryChecker'])
-    register_Ns3ObjectFactoryValue_methods(root_module, root_module['ns3::ObjectFactoryValue'])
-    register_Ns3Packet_methods(root_module, root_module['ns3::Packet'])
-    register_Ns3TimeChecker_methods(root_module, root_module['ns3::TimeChecker'])
-    register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
-    register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
-    register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
-    return
-
-def register_Ns3AttributeList_methods(root_module, cls):
-    ## attribute-list.h (module 'core'): ns3::AttributeList::AttributeList() [constructor]
-    cls.add_constructor([])
-    ## attribute-list.h (module 'core'): ns3::AttributeList::AttributeList(ns3::AttributeList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeList const &', 'o')])
-    ## attribute-list.h (module 'core'): bool ns3::AttributeList::DeserializeFromString(std::string value) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value')])
-    ## attribute-list.h (module 'core'): static ns3::AttributeList * ns3::AttributeList::GetGlobal() [member function]
-    cls.add_method('GetGlobal', 
-                   'ns3::AttributeList *', 
-                   [], 
-                   is_static=True)
-    ## attribute-list.h (module 'core'): void ns3::AttributeList::Reset() [member function]
-    cls.add_method('Reset', 
-                   'void', 
-                   [])
-    ## attribute-list.h (module 'core'): std::string ns3::AttributeList::SerializeToString() const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## attribute-list.h (module 'core'): void ns3::AttributeList::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## attribute-list.h (module 'core'): bool ns3::AttributeList::SetFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetFailSafe', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## attribute-list.h (module 'core'): void ns3::AttributeList::SetWithTid(ns3::TypeId tid, std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetWithTid', 
-                   'void', 
-                   [param('ns3::TypeId', 'tid'), param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    return
-
-def register_Ns3Buffer_methods(root_module, cls):
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer() [constructor]
-    cls.add_constructor([])
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize) [constructor]
-    cls.add_constructor([param('uint32_t', 'dataSize')])
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize, bool initialize) [constructor]
-    cls.add_constructor([param('uint32_t', 'dataSize'), param('bool', 'initialize')])
-    ## buffer.h (module 'network'): ns3::Buffer::Buffer(ns3::Buffer const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Buffer const &', 'o')])
-    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtEnd(uint32_t end) [member function]
-    cls.add_method('AddAtEnd', 
-                   'bool', 
-                   [param('uint32_t', 'end')])
-    ## buffer.h (module 'network'): void ns3::Buffer::AddAtEnd(ns3::Buffer const & o) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('ns3::Buffer const &', 'o')])
-    ## buffer.h (module 'network'): bool ns3::Buffer::AddAtStart(uint32_t start) [member function]
-    cls.add_method('AddAtStart', 
-                   'bool', 
-                   [param('uint32_t', 'start')])
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::Begin() const [member function]
-    cls.add_method('Begin', 
-                   'ns3::Buffer::Iterator', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): void ns3::Buffer::CopyData(std::ostream * os, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'void', 
-                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::CopyData(uint8_t * buffer, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFragment(uint32_t start, uint32_t length) const [member function]
-    cls.add_method('CreateFragment', 
-                   'ns3::Buffer', 
-                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): ns3::Buffer ns3::Buffer::CreateFullCopy() const [member function]
-    cls.add_method('CreateFullCopy', 
-                   'ns3::Buffer', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator ns3::Buffer::End() const [member function]
-    cls.add_method('End', 
-                   'ns3::Buffer::Iterator', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentEndOffset() const [member function]
-    cls.add_method('GetCurrentEndOffset', 
-                   'int32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): int32_t ns3::Buffer::GetCurrentStartOffset() const [member function]
-    cls.add_method('GetCurrentStartOffset', 
-                   'int32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::GetSize() const [member function]
-    cls.add_method('GetSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint8_t const * ns3::Buffer::PeekData() const [member function]
-    cls.add_method('PeekData', 
-                   'uint8_t const *', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtEnd(uint32_t end) [member function]
-    cls.add_method('RemoveAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'end')])
-    ## buffer.h (module 'network'): void ns3::Buffer::RemoveAtStart(uint32_t start) [member function]
-    cls.add_method('RemoveAtStart', 
-                   'void', 
-                   [param('uint32_t', 'start')])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    return
-
-def register_Ns3BufferIterator_methods(root_module, cls):
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator(ns3::Buffer::Iterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Buffer::Iterator const &', 'arg0')])
-    ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator() [constructor]
-    cls.add_constructor([])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size) [member function]
-    cls.add_method('CalculateIpChecksum', 
-                   'uint16_t', 
-                   [param('uint16_t', 'size')])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::CalculateIpChecksum(uint16_t size, uint32_t initialChecksum) [member function]
-    cls.add_method('CalculateIpChecksum', 
-                   'uint16_t', 
-                   [param('uint16_t', 'size'), param('uint32_t', 'initialChecksum')])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetDistanceFrom(ns3::Buffer::Iterator const & o) const [member function]
-    cls.add_method('GetDistanceFrom', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator const &', 'o')], 
-                   is_const=True)
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::GetSize() const [member function]
-    cls.add_method('GetSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsEnd() const [member function]
-    cls.add_method('IsEnd', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): bool ns3::Buffer::Iterator::IsStart() const [member function]
-    cls.add_method('IsStart', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next() [member function]
-    cls.add_method('Next', 
-                   'void', 
-                   [])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Next(uint32_t delta) [member function]
-    cls.add_method('Next', 
-                   'void', 
-                   [param('uint32_t', 'delta')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
-    cls.add_method('Prev', 
-                   'void', 
-                   [])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev(uint32_t delta) [member function]
-    cls.add_method('Prev', 
-                   'void', 
-                   [param('uint32_t', 'delta')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(uint8_t * buffer, uint32_t size) [member function]
-    cls.add_method('Read', 
-                   'void', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
-    cls.add_method('ReadLsbtohU16', 
-                   'uint16_t', 
-                   [])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadLsbtohU32() [member function]
-    cls.add_method('ReadLsbtohU32', 
-                   'uint32_t', 
-                   [])
-    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadLsbtohU64() [member function]
-    cls.add_method('ReadLsbtohU64', 
-                   'uint64_t', 
-                   [])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadNtohU16() [member function]
-    cls.add_method('ReadNtohU16', 
-                   'uint16_t', 
-                   [])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadNtohU32() [member function]
-    cls.add_method('ReadNtohU32', 
-                   'uint32_t', 
-                   [])
-    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadNtohU64() [member function]
-    cls.add_method('ReadNtohU64', 
-                   'uint64_t', 
-                   [])
-    ## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadU16() [member function]
-    cls.add_method('ReadU16', 
-                   'uint16_t', 
-                   [])
-    ## buffer.h (module 'network'): uint32_t ns3::Buffer::Iterator::ReadU32() [member function]
-    cls.add_method('ReadU32', 
-                   'uint32_t', 
-                   [])
-    ## buffer.h (module 'network'): uint64_t ns3::Buffer::Iterator::ReadU64() [member function]
-    cls.add_method('ReadU64', 
-                   'uint64_t', 
-                   [])
-    ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::ReadU8() [member function]
-    cls.add_method('ReadU8', 
-                   'uint8_t', 
-                   [])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Write', 
-                   'void', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Write(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
-    cls.add_method('Write', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU16(uint16_t data) [member function]
-    cls.add_method('WriteHtolsbU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU32(uint32_t data) [member function]
-    cls.add_method('WriteHtolsbU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtolsbU64(uint64_t data) [member function]
-    cls.add_method('WriteHtolsbU64', 
-                   'void', 
-                   [param('uint64_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU16(uint16_t data) [member function]
-    cls.add_method('WriteHtonU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU32(uint32_t data) [member function]
-    cls.add_method('WriteHtonU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteHtonU64(uint64_t data) [member function]
-    cls.add_method('WriteHtonU64', 
-                   'void', 
-                   [param('uint64_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU16(uint16_t data) [member function]
-    cls.add_method('WriteU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU32(uint32_t data) [member function]
-    cls.add_method('WriteU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU64(uint64_t data) [member function]
-    cls.add_method('WriteU64', 
-                   'void', 
-                   [param('uint64_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data) [member function]
-    cls.add_method('WriteU8', 
-                   'void', 
-                   [param('uint8_t', 'data')])
-    ## buffer.h (module 'network'): void ns3::Buffer::Iterator::WriteU8(uint8_t data, uint32_t len) [member function]
-    cls.add_method('WriteU8', 
-                   'void', 
-                   [param('uint8_t', 'data'), param('uint32_t', 'len')])
-    return
-
-def register_Ns3ByteTagIterator_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::ByteTagIterator::ByteTagIterator(ns3::ByteTagIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagIterator const &', 'arg0')])
-    ## packet.h (module 'network'): bool ns3::ByteTagIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::ByteTagIterator::Item ns3::ByteTagIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::ByteTagIterator::Item', 
-                   [])
-    return
-
-def register_Ns3ByteTagIteratorItem_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::ByteTagIterator::Item::Item(ns3::ByteTagIterator::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagIterator::Item const &', 'arg0')])
-    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetEnd() const [member function]
-    cls.add_method('GetEnd', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetStart() const [member function]
-    cls.add_method('GetStart', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::ByteTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
-    cls.add_method('GetTag', 
-                   'void', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::TypeId ns3::ByteTagIterator::Item::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3ByteTagList_methods(root_module, cls):
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList() [constructor]
-    cls.add_constructor([])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList(ns3::ByteTagList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagList const &', 'o')])
-    ## byte-tag-list.h (module 'network'): ns3::TagBuffer ns3::ByteTagList::Add(ns3::TypeId tid, uint32_t bufferSize, int32_t start, int32_t end) [member function]
-    cls.add_method('Add', 
-                   'ns3::TagBuffer', 
-                   [param('ns3::TypeId', 'tid'), param('uint32_t', 'bufferSize'), param('int32_t', 'start'), param('int32_t', 'end')])
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::Add(ns3::ByteTagList const & o) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('ns3::ByteTagList const &', 'o')])
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtEnd(int32_t adjustment, int32_t appendOffset) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('int32_t', 'adjustment'), param('int32_t', 'appendOffset')])
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::AddAtStart(int32_t adjustment, int32_t prependOffset) [member function]
-    cls.add_method('AddAtStart', 
-                   'void', 
-                   [param('int32_t', 'adjustment'), param('int32_t', 'prependOffset')])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator ns3::ByteTagList::Begin(int32_t offsetStart, int32_t offsetEnd) const [member function]
-    cls.add_method('Begin', 
-                   'ns3::ByteTagList::Iterator', 
-                   [param('int32_t', 'offsetStart'), param('int32_t', 'offsetEnd')], 
-                   is_const=True)
-    ## byte-tag-list.h (module 'network'): void ns3::ByteTagList::RemoveAll() [member function]
-    cls.add_method('RemoveAll', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3ByteTagListIterator_methods(root_module, cls):
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Iterator(ns3::ByteTagList::Iterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagList::Iterator const &', 'arg0')])
-    ## byte-tag-list.h (module 'network'): uint32_t ns3::ByteTagList::Iterator::GetOffsetStart() const [member function]
-    cls.add_method('GetOffsetStart', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## byte-tag-list.h (module 'network'): bool ns3::ByteTagList::Iterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item ns3::ByteTagList::Iterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::ByteTagList::Iterator::Item', 
-                   [])
-    return
-
-def register_Ns3ByteTagListIteratorItem_methods(root_module, cls):
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::ByteTagList::Iterator::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ByteTagList::Iterator::Item const &', 'arg0')])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::TagBuffer buf) [constructor]
-    cls.add_constructor([param('ns3::TagBuffer', 'buf')])
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::buf [variable]
-    cls.add_instance_attribute('buf', 'ns3::TagBuffer', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::end [variable]
-    cls.add_instance_attribute('end', 'int32_t', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::size [variable]
-    cls.add_instance_attribute('size', 'uint32_t', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::start [variable]
-    cls.add_instance_attribute('start', 'int32_t', is_const=False)
-    ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::tid [variable]
-    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
-    return
-
-def register_Ns3CallbackBase_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::CallbackBase const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackBase const &', 'arg0')])
-    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::Ptr<ns3::CallbackImplBase> ns3::CallbackBase::GetImpl() const [member function]
-    cls.add_method('GetImpl', 
-                   'ns3::Ptr< ns3::CallbackImplBase >', 
-                   [], 
-                   is_const=True)
-    ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::Ptr<ns3::CallbackImplBase> impl) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::CallbackImplBase >', 'impl')], 
-                        visibility='protected')
-    ## callback.h (module 'core'): static std::string ns3::CallbackBase::Demangle(std::string const & mangled) [member function]
-    cls.add_method('Demangle', 
-                   'std::string', 
-                   [param('std::string const &', 'mangled')], 
-                   is_static=True, visibility='protected')
-    return
-
-def register_Ns3DelayJitterEstimation_methods(root_module, cls):
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
-    cls.add_constructor([])
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::Time ns3::DelayJitterEstimation::GetLastDelay() const [member function]
-    cls.add_method('GetLastDelay', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h (module 'contrib'): ns3::Time ns3::DelayJitterEstimation::GetLastJitter() const [member function]
-    cls.add_method('GetLastJitter', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## delay-jitter-estimation.h (module 'contrib'): static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('PrepareTx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')], 
-                   is_static=True)
-    ## delay-jitter-estimation.h (module 'contrib'): void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('RecordRx', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
-    return
-
-def register_Ns3EventGarbageCollector_methods(root_module, cls):
-    ## event-garbage-collector.h (module 'contrib'): ns3::EventGarbageCollector::EventGarbageCollector(ns3::EventGarbageCollector const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventGarbageCollector const &', 'arg0')])
-    ## event-garbage-collector.h (module 'contrib'): ns3::EventGarbageCollector::EventGarbageCollector() [constructor]
-    cls.add_constructor([])
-    ## event-garbage-collector.h (module 'contrib'): void ns3::EventGarbageCollector::Track(ns3::EventId event) [member function]
-    cls.add_method('Track', 
-                   'void', 
-                   [param('ns3::EventId', 'event')])
-    return
-
-def register_Ns3EventId_methods(root_module, cls):
-    cls.add_binary_comparison_operator('!=')
-    cls.add_binary_comparison_operator('==')
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventId const &', 'arg0')])
-    ## event-id.h (module 'core'): ns3::EventId::EventId() [constructor]
-    cls.add_constructor([])
-    ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::Ptr<ns3::EventImpl> const & impl, uint64_t ts, uint32_t context, uint32_t uid) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::EventImpl > const &', 'impl'), param('uint64_t', 'ts'), param('uint32_t', 'context'), param('uint32_t', 'uid')])
-    ## event-id.h (module 'core'): void ns3::EventId::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetContext() const [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint64_t ns3::EventId::GetTs() const [member function]
-    cls.add_method('GetTs', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): uint32_t ns3::EventId::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsExpired() const [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): bool ns3::EventId::IsRunning() const [member function]
-    cls.add_method('IsRunning', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## event-id.h (module 'core'): ns3::EventImpl * ns3::EventId::PeekEventImpl() const [member function]
-    cls.add_method('PeekEventImpl', 
-                   'ns3::EventImpl *', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3FileConfig_methods(root_module, cls):
-    ## file-config.h (module 'contrib'): ns3::FileConfig::FileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h (module 'contrib'): ns3::FileConfig::FileConfig(ns3::FileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FileConfig const &', 'arg0')])
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::FileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_pure_virtual=True, is_virtual=True)
-    return
-
-def register_Ns3Gnuplot_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot::Gnuplot(ns3::Gnuplot const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot::Gnuplot(std::string const & outputFilename="", std::string const & title="") [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename', default_value='""'), param('std::string const &', 'title', default_value='""')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::AddDataset(ns3::GnuplotDataset const & dataset) [member function]
-    cls.add_method('AddDataset', 
-                   'void', 
-                   [param('ns3::GnuplotDataset const &', 'dataset')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::AppendExtra(std::string const & extra) [member function]
-    cls.add_method('AppendExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h (module 'contrib'): static std::string ns3::Gnuplot::DetectTerminal(std::string const & filename) [member function]
-    cls.add_method('DetectTerminal', 
-                   'std::string', 
-                   [param('std::string const &', 'filename')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetLegend(std::string const & xLegend, std::string const & yLegend) [member function]
-    cls.add_method('SetLegend', 
-                   'void', 
-                   [param('std::string const &', 'xLegend'), param('std::string const &', 'yLegend')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    return
-
-def register_Ns3GnuplotCollection_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotCollection::GnuplotCollection(ns3::GnuplotCollection const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotCollection const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotCollection::GnuplotCollection(std::string const & outputFilename) [constructor]
-    cls.add_constructor([param('std::string const &', 'outputFilename')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotCollection::AddPlot(ns3::Gnuplot const & plot) [member function]
-    cls.add_method('AddPlot', 
-                   'void', 
-                   [param('ns3::Gnuplot const &', 'plot')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotCollection::GenerateOutput(std::ostream & os) const [member function]
-    cls.add_method('GenerateOutput', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot & ns3::GnuplotCollection::GetPlot(unsigned int id) [member function]
-    cls.add_method('GetPlot', 
-                   'ns3::Gnuplot &', 
-                   [param('unsigned int', 'id')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotCollection::SetTerminal(std::string const & terminal) [member function]
-    cls.add_method('SetTerminal', 
-                   'void', 
-                   [param('std::string const &', 'terminal')])
-    return
-
-def register_Ns3GnuplotDataset_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset const & original) [copy constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset const &', 'original')])
-    ## gnuplot.h (module 'contrib'): static void ns3::GnuplotDataset::SetDefaultExtra(std::string const & extra) [member function]
-    cls.add_method('SetDefaultExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotDataset::SetExtra(std::string const & extra) [member function]
-    cls.add_method('SetExtra', 
-                   'void', 
-                   [param('std::string const &', 'extra')])
-    ## gnuplot.h (module 'contrib'): void ns3::GnuplotDataset::SetTitle(std::string const & title) [member function]
-    cls.add_method('SetTitle', 
-                   'void', 
-                   [param('std::string const &', 'title')])
-    ## gnuplot.h (module 'contrib'): ns3::GnuplotDataset::GnuplotDataset(ns3::GnuplotDataset::Data * data) [constructor]
-    cls.add_constructor([param('ns3::GnuplotDataset::Data *', 'data')], 
-                        visibility='protected')
-    return
-
-def register_Ns3HighPrecision_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(ns3::HighPrecision const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::HighPrecision const &', 'arg0')])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(int64_t high, uint64_t low) [constructor]
-    cls.add_constructor([param('int64_t', 'high'), param('uint64_t', 'low')])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision() [constructor]
-    cls.add_constructor([])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(int64_t value, bool dummy) [constructor]
-    cls.add_constructor([param('int64_t', 'value'), param('bool', 'dummy')])
-    ## high-precision-128.h (module 'core'): ns3::HighPrecision::HighPrecision(double value) [constructor]
-    cls.add_constructor([param('double', 'value')])
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Add(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): int ns3::HighPrecision::Compare(ns3::HighPrecision const & o) const [member function]
-    cls.add_method('Compare', 
-                   'int', 
-                   [param('ns3::HighPrecision const &', 'o')], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Div(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Div', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): double ns3::HighPrecision::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): int64_t ns3::HighPrecision::GetHigh() const [member function]
-    cls.add_method('GetHigh', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): int64_t ns3::HighPrecision::GetInteger() const [member function]
-    cls.add_method('GetInteger', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): uint64_t ns3::HighPrecision::GetLow() const [member function]
-    cls.add_method('GetLow', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## high-precision-128.h (module 'core'): static ns3::HighPrecision ns3::HighPrecision::Invert(uint64_t v) [member function]
-    cls.add_method('Invert', 
-                   'ns3::HighPrecision', 
-                   [param('uint64_t', 'v')], 
-                   is_static=True)
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Mul(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Mul', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::MulByInvert(ns3::HighPrecision const & o) [member function]
-    cls.add_method('MulByInvert', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): void ns3::HighPrecision::Sub(ns3::HighPrecision const & o) [member function]
-    cls.add_method('Sub', 
-                   'void', 
-                   [param('ns3::HighPrecision const &', 'o')])
-    ## high-precision-128.h (module 'core'): static ns3::HighPrecision ns3::HighPrecision::Zero() [member function]
-    cls.add_method('Zero', 
-                   'ns3::HighPrecision', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3NoneFileConfig_methods(root_module, cls):
-    ## file-config.h (module 'contrib'): ns3::NoneFileConfig::NoneFileConfig(ns3::NoneFileConfig const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::NoneFileConfig const &', 'arg0')])
-    ## file-config.h (module 'contrib'): ns3::NoneFileConfig::NoneFileConfig() [constructor]
-    cls.add_constructor([])
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::Attributes() [member function]
-    cls.add_method('Attributes', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::Default() [member function]
-    cls.add_method('Default', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::Global() [member function]
-    cls.add_method('Global', 
-                   'void', 
-                   [], 
-                   is_virtual=True)
-    ## file-config.h (module 'contrib'): void ns3::NoneFileConfig::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')], 
-                   is_virtual=True)
-    return
-
-def register_Ns3ObjectBase_methods(root_module, cls):
-    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase() [constructor]
-    cls.add_constructor([])
-    ## object-base.h (module 'core'): ns3::ObjectBase::ObjectBase(ns3::ObjectBase const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectBase const &', 'arg0')])
-    ## object-base.h (module 'core'): void ns3::ObjectBase::GetAttribute(std::string name, ns3::AttributeValue & value) const [member function]
-    cls.add_method('GetAttribute', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'value')], 
-                   is_const=True)
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::GetAttributeFailSafe(std::string name, ns3::AttributeValue & attribute) const [member function]
-    cls.add_method('GetAttributeFailSafe', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue &', 'attribute')], 
-                   is_const=True)
-    ## object-base.h (module 'core'): ns3::TypeId ns3::ObjectBase::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## object-base.h (module 'core'): static ns3::TypeId ns3::ObjectBase::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## object-base.h (module 'core'): void ns3::ObjectBase::SetAttribute(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttribute', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::SetAttributeFailSafe(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('SetAttributeFailSafe', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceConnect', 
-                   'bool', 
-                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceConnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceConnectWithoutContext', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnect(std::string name, std::string context, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceDisconnect', 
-                   'bool', 
-                   [param('std::string', 'name'), param('std::string', 'context'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): bool ns3::ObjectBase::TraceDisconnectWithoutContext(std::string name, ns3::CallbackBase const & cb) [member function]
-    cls.add_method('TraceDisconnectWithoutContext', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::CallbackBase const &', 'cb')])
-    ## object-base.h (module 'core'): void ns3::ObjectBase::ConstructSelf(ns3::AttributeList const & attributes) [member function]
-    cls.add_method('ConstructSelf', 
-                   'void', 
-                   [param('ns3::AttributeList const &', 'attributes')], 
-                   visibility='protected')
-    ## object-base.h (module 'core'): void ns3::ObjectBase::NotifyConstructionCompleted() [member function]
-    cls.add_method('NotifyConstructionCompleted', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3ObjectDeleter_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): ns3::ObjectDeleter::ObjectDeleter(ns3::ObjectDeleter const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectDeleter const &', 'arg0')])
-    ## object.h (module 'core'): static void ns3::ObjectDeleter::Delete(ns3::Object * object) [member function]
-    cls.add_method('Delete', 
-                   'void', 
-                   [param('ns3::Object *', 'object')], 
-                   is_static=True)
-    return
-
-def register_Ns3ObjectFactory_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory(ns3::ObjectFactory const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactory::ObjectFactory() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::Object> ns3::ObjectFactory::Create() const [member function]
-    cls.add_method('Create', 
-                   'ns3::Ptr< ns3::Object >', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): ns3::TypeId ns3::ObjectFactory::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(std::string name, ns3::AttributeValue const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'value')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::Set(ns3::AttributeList const & list) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::AttributeList const &', 'list')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(ns3::TypeId tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('ns3::TypeId', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(char const * tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('char const *', 'tid')])
-    ## object-factory.h (module 'core'): void ns3::ObjectFactory::SetTypeId(std::string tid) [member function]
-    cls.add_method('SetTypeId', 
-                   'void', 
-                   [param('std::string', 'tid')])
-    return
-
-def register_Ns3PacketMetadata_methods(root_module, cls):
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(uint64_t uid, uint32_t size) [constructor]
-    cls.add_constructor([param('uint64_t', 'uid'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::PacketMetadata(ns3::PacketMetadata const & o) [copy constructor]
-    cls.add_constructor([param('ns3::PacketMetadata const &', 'o')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddAtEnd(ns3::PacketMetadata const & o) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('ns3::PacketMetadata const &', 'o')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddHeader(ns3::Header const & header, uint32_t size) [member function]
-    cls.add_method('AddHeader', 
-                   'void', 
-                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddPaddingAtEnd(uint32_t end) [member function]
-    cls.add_method('AddPaddingAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'end')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::AddTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
-    cls.add_method('AddTrailer', 
-                   'void', 
-                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::PacketMetadata::BeginItem(ns3::Buffer buffer) const [member function]
-    cls.add_method('BeginItem', 
-                   'ns3::PacketMetadata::ItemIterator', 
-                   [param('ns3::Buffer', 'buffer')], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata ns3::PacketMetadata::CreateFragment(uint32_t start, uint32_t end) const [member function]
-    cls.add_method('CreateFragment', 
-                   'ns3::PacketMetadata', 
-                   [param('uint32_t', 'start'), param('uint32_t', 'end')], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Deserialize(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::Enable() [member function]
-    cls.add_method('Enable', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet-metadata.h (module 'network'): static void ns3::PacketMetadata::EnableChecking() [member function]
-    cls.add_method('EnableChecking', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): uint64_t ns3::PacketMetadata::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtEnd(uint32_t end) [member function]
-    cls.add_method('RemoveAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'end')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveAtStart(uint32_t start) [member function]
-    cls.add_method('RemoveAtStart', 
-                   'void', 
-                   [param('uint32_t', 'start')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveHeader(ns3::Header const & header, uint32_t size) [member function]
-    cls.add_method('RemoveHeader', 
-                   'void', 
-                   [param('ns3::Header const &', 'header'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): void ns3::PacketMetadata::RemoveTrailer(ns3::Trailer const & trailer, uint32_t size) [member function]
-    cls.add_method('RemoveTrailer', 
-                   'void', 
-                   [param('ns3::Trailer const &', 'trailer'), param('uint32_t', 'size')])
-    ## packet-metadata.h (module 'network'): uint32_t ns3::PacketMetadata::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    return
-
-def register_Ns3PacketMetadataItem_methods(root_module, cls):
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item() [constructor]
-    cls.add_constructor([])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::Item(ns3::PacketMetadata::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketMetadata::Item const &', 'arg0')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::current [variable]
-    cls.add_instance_attribute('current', 'ns3::Buffer::Iterator', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentSize [variable]
-    cls.add_instance_attribute('currentSize', 'uint32_t', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromEnd [variable]
-    cls.add_instance_attribute('currentTrimedFromEnd', 'uint32_t', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::currentTrimedFromStart [variable]
-    cls.add_instance_attribute('currentTrimedFromStart', 'uint32_t', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::isFragment [variable]
-    cls.add_instance_attribute('isFragment', 'bool', is_const=False)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::tid [variable]
-    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
-    return
-
-def register_Ns3PacketMetadataItemIterator_methods(root_module, cls):
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata::ItemIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketMetadata::ItemIterator const &', 'arg0')])
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator::ItemIterator(ns3::PacketMetadata const * metadata, ns3::Buffer buffer) [constructor]
-    cls.add_constructor([param('ns3::PacketMetadata const *', 'metadata'), param('ns3::Buffer', 'buffer')])
-    ## packet-metadata.h (module 'network'): bool ns3::PacketMetadata::ItemIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item ns3::PacketMetadata::ItemIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::PacketMetadata::Item', 
-                   [])
-    return
-
-def register_Ns3PacketTagIterator_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::PacketTagIterator::PacketTagIterator(ns3::PacketTagIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagIterator const &', 'arg0')])
-    ## packet.h (module 'network'): bool ns3::PacketTagIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::PacketTagIterator::Item ns3::PacketTagIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::PacketTagIterator::Item', 
-                   [])
-    return
-
-def register_Ns3PacketTagIteratorItem_methods(root_module, cls):
-    ## packet.h (module 'network'): ns3::PacketTagIterator::Item::Item(ns3::PacketTagIterator::Item const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagIterator::Item const &', 'arg0')])
-    ## packet.h (module 'network'): void ns3::PacketTagIterator::Item::GetTag(ns3::Tag & tag) const [member function]
-    cls.add_method('GetTag', 
-                   'void', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::TypeId ns3::PacketTagIterator::Item::GetTypeId() const [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3PacketTagList_methods(root_module, cls):
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList() [constructor]
-    cls.add_constructor([])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::PacketTagList(ns3::PacketTagList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagList const &', 'o')])
-    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::Add(ns3::Tag const & tag) const [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData const * ns3::PacketTagList::Head() const [member function]
-    cls.add_method('Head', 
-                   'ns3::PacketTagList::TagData const *', 
-                   [], 
-                   is_const=True)
-    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Peek(ns3::Tag & tag) const [member function]
-    cls.add_method('Peek', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet-tag-list.h (module 'network'): bool ns3::PacketTagList::Remove(ns3::Tag & tag) [member function]
-    cls.add_method('Remove', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')])
-    ## packet-tag-list.h (module 'network'): void ns3::PacketTagList::RemoveAll() [member function]
-    cls.add_method('RemoveAll', 
-                   'void', 
-                   [])
-    return
-
-def register_Ns3PacketTagListTagData_methods(root_module, cls):
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData() [constructor]
-    cls.add_constructor([])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::TagData(ns3::PacketTagList::TagData const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::PacketTagList::TagData const &', 'arg0')])
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::count [variable]
-    cls.add_instance_attribute('count', 'uint32_t', is_const=False)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::data [variable]
-    cls.add_instance_attribute('data', 'uint8_t [ 20 ]', is_const=False)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::next [variable]
-    cls.add_instance_attribute('next', 'ns3::PacketTagList::TagData *', is_const=False)
-    ## packet-tag-list.h (module 'network'): ns3::PacketTagList::TagData::tid [variable]
-    cls.add_instance_attribute('tid', 'ns3::TypeId', is_const=False)
-    return
-
-def register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::SimpleRefCount(ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter> const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter>::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3Simulator_methods(root_module, cls):
-    ## simulator.h (module 'core'): ns3::Simulator::Simulator(ns3::Simulator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Simulator const &', 'arg0')])
-    ## simulator.h (module 'core'): static void ns3::Simulator::Cancel(ns3::EventId const & id) [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Destroy() [member function]
-    cls.add_method('Destroy', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetContext() [member function]
-    cls.add_method('GetContext', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetDelayLeft(ns3::EventId const & id) [member function]
-    cls.add_method('GetDelayLeft', 
-                   'ns3::Time', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Ptr<ns3::SimulatorImpl> ns3::Simulator::GetImplementation() [member function]
-    cls.add_method('GetImplementation', 
-                   'ns3::Ptr< ns3::SimulatorImpl >', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::GetMaximumSimulationTime() [member function]
-    cls.add_method('GetMaximumSimulationTime', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static uint32_t ns3::Simulator::GetSystemId() [member function]
-    cls.add_method('GetSystemId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsExpired(ns3::EventId const & id) [member function]
-    cls.add_method('IsExpired', 
-                   'bool', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static bool ns3::Simulator::IsFinished() [member function]
-    cls.add_method('IsFinished', 
-                   'bool', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True, deprecated=True)
-    ## simulator.h (module 'core'): static ns3::Time ns3::Simulator::Now() [member function]
-    cls.add_method('Now', 
-                   'ns3::Time', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Remove(ns3::EventId const & id) [member function]
-    cls.add_method('Remove', 
-                   'void', 
-                   [param('ns3::EventId const &', 'id')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::RunOneEvent() [member function]
-    cls.add_method('RunOneEvent', 
-                   'void', 
-                   [], 
-                   is_static=True, deprecated=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetImplementation(ns3::Ptr<ns3::SimulatorImpl> impl) [member function]
-    cls.add_method('SetImplementation', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::SimulatorImpl >', 'impl')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::SetScheduler(ns3::ObjectFactory schedulerFactory) [member function]
-    cls.add_method('SetScheduler', 
-                   'void', 
-                   [param('ns3::ObjectFactory', 'schedulerFactory')], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop() [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## simulator.h (module 'core'): static void ns3::Simulator::Stop(ns3::Time const & time) [member function]
-    cls.add_method('Stop', 
-                   'void', 
-                   [param('ns3::Time const &', 'time')], 
-                   is_static=True)
-    return
-
-def register_Ns3Tag_methods(root_module, cls):
-    ## tag.h (module 'network'): ns3::Tag::Tag() [constructor]
-    cls.add_constructor([])
-    ## tag.h (module 'network'): ns3::Tag::Tag(ns3::Tag const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Tag const &', 'arg0')])
-    ## tag.h (module 'network'): void ns3::Tag::Deserialize(ns3::TagBuffer i) [member function]
-    cls.add_method('Deserialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'i')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## tag.h (module 'network'): uint32_t ns3::Tag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## tag.h (module 'network'): static ns3::TypeId ns3::Tag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## tag.h (module 'network'): void ns3::Tag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## tag.h (module 'network'): void ns3::Tag::Serialize(ns3::TagBuffer i) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'i')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3TagBuffer_methods(root_module, cls):
-    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(ns3::TagBuffer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TagBuffer const &', 'arg0')])
-    ## tag-buffer.h (module 'network'): ns3::TagBuffer::TagBuffer(uint8_t * start, uint8_t * end) [constructor]
-    cls.add_constructor([param('uint8_t *', 'start'), param('uint8_t *', 'end')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::CopyFrom(ns3::TagBuffer o) [member function]
-    cls.add_method('CopyFrom', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'o')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Read(uint8_t * buffer, uint32_t size) [member function]
-    cls.add_method('Read', 
-                   'void', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
-    ## tag-buffer.h (module 'network'): double ns3::TagBuffer::ReadDouble() [member function]
-    cls.add_method('ReadDouble', 
-                   'double', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint16_t ns3::TagBuffer::ReadU16() [member function]
-    cls.add_method('ReadU16', 
-                   'uint16_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint32_t ns3::TagBuffer::ReadU32() [member function]
-    cls.add_method('ReadU32', 
-                   'uint32_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint64_t ns3::TagBuffer::ReadU64() [member function]
-    cls.add_method('ReadU64', 
-                   'uint64_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): uint8_t ns3::TagBuffer::ReadU8() [member function]
-    cls.add_method('ReadU8', 
-                   'uint8_t', 
-                   [])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::TrimAtEnd(uint32_t trim) [member function]
-    cls.add_method('TrimAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'trim')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::Write(uint8_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Write', 
-                   'void', 
-                   [param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteDouble(double v) [member function]
-    cls.add_method('WriteDouble', 
-                   'void', 
-                   [param('double', 'v')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU16(uint16_t data) [member function]
-    cls.add_method('WriteU16', 
-                   'void', 
-                   [param('uint16_t', 'data')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU32(uint32_t data) [member function]
-    cls.add_method('WriteU32', 
-                   'void', 
-                   [param('uint32_t', 'data')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU64(uint64_t v) [member function]
-    cls.add_method('WriteU64', 
-                   'void', 
-                   [param('uint64_t', 'v')])
-    ## tag-buffer.h (module 'network'): void ns3::TagBuffer::WriteU8(uint8_t v) [member function]
-    cls.add_method('WriteU8', 
-                   'void', 
-                   [param('uint8_t', 'v')])
-    return
-
-def register_Ns3Time_methods(root_module, cls):
-    cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('>')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_inplace_numeric_operator('*=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
-    cls.add_inplace_numeric_operator('/=', param('ns3::Time const &', 'right'))
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('<=')
-    cls.add_binary_comparison_operator('==')
-    cls.add_binary_comparison_operator('>=')
-    ## nstime.h (module 'core'): ns3::Time::Time() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::Time const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Time const &', 'o')])
-    ## nstime.h (module 'core'): ns3::Time::Time(ns3::HighPrecision const & data) [constructor]
-    cls.add_constructor([param('ns3::HighPrecision const &', 'data')])
-    ## nstime.h (module 'core'): ns3::Time::Time(std::string const & s) [constructor]
-    cls.add_constructor([param('std::string const &', 's')])
-    ## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
-    cls.add_method('Compare', 
-                   'int', 
-                   [param('ns3::Time const &', 'o')], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromDouble(double value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromDouble', 
-                   'ns3::Time', 
-                   [param('double', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static ns3::Time ns3::Time::FromInteger(uint64_t value, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('FromInteger', 
-                   'ns3::Time', 
-                   [param('uint64_t', 'value'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetFemtoSeconds() const [member function]
-    cls.add_method('GetFemtoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): ns3::HighPrecision const & ns3::Time::GetHighPrecision() const [member function]
-    cls.add_method('GetHighPrecision', 
-                   'ns3::HighPrecision const &', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMicroSeconds() const [member function]
-    cls.add_method('GetMicroSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetMilliSeconds() const [member function]
-    cls.add_method('GetMilliSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetNanoSeconds() const [member function]
-    cls.add_method('GetNanoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetPicoSeconds() const [member function]
-    cls.add_method('GetPicoSeconds', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): static ns3::Time::Unit ns3::Time::GetResolution() [member function]
-    cls.add_method('GetResolution', 
-                   'ns3::Time::Unit', 
-                   [], 
-                   is_static=True)
-    ## nstime.h (module 'core'): double ns3::Time::GetSeconds() const [member function]
-    cls.add_method('GetSeconds', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): int64_t ns3::Time::GetTimeStep() const [member function]
-    cls.add_method('GetTimeStep', 
-                   'int64_t', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsNegative() const [member function]
-    cls.add_method('IsNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsPositive() const [member function]
-    cls.add_method('IsPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyNegative() const [member function]
-    cls.add_method('IsStrictlyNegative', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsStrictlyPositive() const [member function]
-    cls.add_method('IsStrictlyPositive', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): bool ns3::Time::IsZero() const [member function]
-    cls.add_method('IsZero', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): ns3::HighPrecision * ns3::Time::PeekHighPrecision() [member function]
-    cls.add_method('PeekHighPrecision', 
-                   'ns3::HighPrecision *', 
-                   [])
-    ## nstime.h (module 'core'): static void ns3::Time::SetResolution(ns3::Time::Unit resolution) [member function]
-    cls.add_method('SetResolution', 
-                   'void', 
-                   [param('ns3::Time::Unit', 'resolution')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static double ns3::Time::ToDouble(ns3::Time const & time, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('ToDouble', 
-                   'double', 
-                   [param('ns3::Time const &', 'time'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    ## nstime.h (module 'core'): static uint64_t ns3::Time::ToInteger(ns3::Time const & time, ns3::Time::Unit timeUnit) [member function]
-    cls.add_method('ToInteger', 
-                   'uint64_t', 
-                   [param('ns3::Time const &', 'time'), param('ns3::Time::Unit', 'timeUnit')], 
-                   is_static=True)
-    return
-
-def register_Ns3TypeId_methods(root_module, cls):
-    cls.add_binary_comparison_operator('<')
-    cls.add_binary_comparison_operator('!=')
-    cls.add_output_stream_operator()
-    cls.add_binary_comparison_operator('==')
-    ## type-id.h (module 'core'): ns3::TypeId::TypeId(char const * name) [constructor]
-    cls.add_constructor([param('char const *', 'name')])
-    ## type-id.h (module 'core'): ns3::TypeId::TypeId() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeId::TypeId(ns3::TypeId const & o) [copy constructor]
-    cls.add_constructor([param('ns3::TypeId const &', 'o')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('AddAttribute', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddAttribute(std::string name, std::string help, uint32_t flags, ns3::AttributeValue const & initialValue, ns3::Ptr<ns3::AttributeAccessor const> accessor, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('AddAttribute', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name'), param('std::string', 'help'), param('uint32_t', 'flags'), param('ns3::AttributeValue const &', 'initialValue'), param('ns3::Ptr< ns3::AttributeAccessor const >', 'accessor'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr<const ns3::TraceSourceAccessor> accessor) [member function]
-    cls.add_method('AddTraceSource', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeAccessor const> ns3::TypeId::GetAttributeAccessor(uint32_t i) const [member function]
-    cls.add_method('GetAttributeAccessor', 
-                   'ns3::Ptr< ns3::AttributeAccessor const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeChecker const> ns3::TypeId::GetAttributeChecker(uint32_t i) const [member function]
-    cls.add_method('GetAttributeChecker', 
-                   'ns3::Ptr< ns3::AttributeChecker const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetAttributeFlags(uint32_t i) const [member function]
-    cls.add_method('GetAttributeFlags', 
-                   'uint32_t', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeFullName(uint32_t i) const [member function]
-    cls.add_method('GetAttributeFullName', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeHelp(uint32_t i) const [member function]
-    cls.add_method('GetAttributeHelp', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeValue const> ns3::TypeId::GetAttributeInitialValue(uint32_t i) const [member function]
-    cls.add_method('GetAttributeInitialValue', 
-                   'ns3::Ptr< ns3::AttributeValue const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetAttributeN() const [member function]
-    cls.add_method('GetAttributeN', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetAttributeName(uint32_t i) const [member function]
-    cls.add_method('GetAttributeName', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::Callback<ns3::ObjectBase*,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::TypeId::GetConstructor() const [member function]
-    cls.add_method('GetConstructor', 
-                   'ns3::Callback< ns3::ObjectBase *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetGroupName() const [member function]
-    cls.add_method('GetGroupName', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetName() const [member function]
-    cls.add_method('GetName', 
-                   'std::string', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::GetParent() const [member function]
-    cls.add_method('GetParent', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::GetRegistered(uint32_t i) [member function]
-    cls.add_method('GetRegistered', 
-                   'ns3::TypeId', 
-                   [param('uint32_t', 'i')], 
-                   is_static=True)
-    ## type-id.h (module 'core'): static uint32_t ns3::TypeId::GetRegisteredN() [member function]
-    cls.add_method('GetRegisteredN', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## type-id.h (module 'core'): ns3::Ptr<const ns3::TraceSourceAccessor> ns3::TypeId::GetTraceSourceAccessor(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceAccessor', 
-                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetTraceSourceHelp(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceHelp', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint32_t ns3::TypeId::GetTraceSourceN() const [member function]
-    cls.add_method('GetTraceSourceN', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeId::GetTraceSourceName(uint32_t i) const [member function]
-    cls.add_method('GetTraceSourceName', 
-                   'std::string', 
-                   [param('uint32_t', 'i')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): uint16_t ns3::TypeId::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint16_t', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::HasConstructor() const [member function]
-    cls.add_method('HasConstructor', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::HasParent() const [member function]
-    cls.add_method('HasParent', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::HideFromDocumentation() [member function]
-    cls.add_method('HideFromDocumentation', 
-                   'ns3::TypeId', 
-                   [])
-    ## type-id.h (module 'core'): bool ns3::TypeId::IsChildOf(ns3::TypeId other) const [member function]
-    cls.add_method('IsChildOf', 
-                   'bool', 
-                   [param('ns3::TypeId', 'other')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): static bool ns3::TypeId::LookupAttributeByFullName(std::string fullName, ns3::TypeId::AttributeInfo * info) [member function]
-    cls.add_method('LookupAttributeByFullName', 
-                   'bool', 
-                   [param('std::string', 'fullName'), param('ns3::TypeId::AttributeInfo *', 'info')], 
-                   is_static=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::LookupAttributeByName(std::string name, ns3::TypeId::AttributeInfo * info) const [member function]
-    cls.add_method('LookupAttributeByName', 
-                   'bool', 
-                   [param('std::string', 'name'), param('ns3::TypeId::AttributeInfo *', 'info', transfer_ownership=False)], 
-                   is_const=True)
-    ## type-id.h (module 'core'): static ns3::TypeId ns3::TypeId::LookupByName(std::string name) [member function]
-    cls.add_method('LookupByName', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'name')], 
-                   is_static=True)
-    ## type-id.h (module 'core'): ns3::Ptr<const ns3::TraceSourceAccessor> ns3::TypeId::LookupTraceSourceByName(std::string name) const [member function]
-    cls.add_method('LookupTraceSourceByName', 
-                   'ns3::Ptr< ns3::TraceSourceAccessor const >', 
-                   [param('std::string', 'name')], 
-                   is_const=True)
-    ## type-id.h (module 'core'): bool ns3::TypeId::MustHideFromDocumentation() const [member function]
-    cls.add_method('MustHideFromDocumentation', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetGroupName(std::string groupName) [member function]
-    cls.add_method('SetGroupName', 
-                   'ns3::TypeId', 
-                   [param('std::string', 'groupName')])
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::SetParent(ns3::TypeId tid) [member function]
-    cls.add_method('SetParent', 
-                   'ns3::TypeId', 
-                   [param('ns3::TypeId', 'tid')])
-    ## type-id.h (module 'core'): void ns3::TypeId::SetUid(uint16_t tid) [member function]
-    cls.add_method('SetUid', 
-                   'void', 
-                   [param('uint16_t', 'tid')])
-    return
-
-def register_Ns3TypeIdAttributeInfo_methods(root_module, cls):
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::AttributeInfo() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::AttributeInfo(ns3::TypeId::AttributeInfo const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TypeId::AttributeInfo const &', 'arg0')])
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::accessor [variable]
-    cls.add_instance_attribute('accessor', 'ns3::Ptr< ns3::AttributeAccessor const >', is_const=False)
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::checker [variable]
-    cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::flags [variable]
-    cls.add_instance_attribute('flags', 'uint32_t', is_const=False)
-    ## type-id.h (module 'core'): ns3::TypeId::AttributeInfo::initialValue [variable]
-    cls.add_instance_attribute('initialValue', 'ns3::Ptr< ns3::AttributeValue const >', is_const=False)
-    return
-
-def register_Ns3UnsafeAttributeList_methods(root_module, cls):
-    ## attribute-list.h (module 'core'): ns3::UnsafeAttributeList::UnsafeAttributeList() [constructor]
-    cls.add_constructor([])
-    ## attribute-list.h (module 'core'): ns3::UnsafeAttributeList::UnsafeAttributeList(ns3::UnsafeAttributeList const & o) [copy constructor]
-    cls.add_constructor([param('ns3::UnsafeAttributeList const &', 'o')])
-    ## attribute-list.h (module 'core'): ns3::AttributeList ns3::UnsafeAttributeList::GetSafe(std::string name) const [member function]
-    cls.add_method('GetSafe', 
-                   'ns3::AttributeList', 
-                   [param('std::string', 'name')], 
-                   is_const=True)
-    ## attribute-list.h (module 'core'): void ns3::UnsafeAttributeList::Set(std::string name, ns3::AttributeValue const & param) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('std::string', 'name'), param('ns3::AttributeValue const &', 'param')])
-    return
-
-def register_Ns3Empty_methods(root_module, cls):
-    ## empty.h (module 'core'): ns3::empty::empty() [constructor]
-    cls.add_constructor([])
-    ## empty.h (module 'core'): ns3::empty::empty(ns3::empty const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::empty const &', 'arg0')])
-    return
-
-def register_Ns3Chunk_methods(root_module, cls):
-    ## chunk.h (module 'network'): ns3::Chunk::Chunk() [constructor]
-    cls.add_constructor([])
-    ## chunk.h (module 'network'): ns3::Chunk::Chunk(ns3::Chunk const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Chunk const &', 'arg0')])
-    ## chunk.h (module 'network'): uint32_t ns3::Chunk::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## chunk.h (module 'network'): static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## chunk.h (module 'network'): void ns3::Chunk::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3ConfigStore_methods(root_module, cls):
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::ConfigStore(ns3::ConfigStore const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ConfigStore const &', 'arg0')])
-    ## config-store.h (module 'contrib'): ns3::ConfigStore::ConfigStore() [constructor]
-    cls.add_constructor([])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::ConfigureAttributes() [member function]
-    cls.add_method('ConfigureAttributes', 
-                   'void', 
-                   [])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::ConfigureDefaults() [member function]
-    cls.add_method('ConfigureDefaults', 
-                   'void', 
-                   [])
-    ## config-store.h (module 'contrib'): ns3::TypeId ns3::ConfigStore::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## config-store.h (module 'contrib'): static ns3::TypeId ns3::ConfigStore::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::SetFileFormat(ns3::ConfigStore::FileFormat format) [member function]
-    cls.add_method('SetFileFormat', 
-                   'void', 
-                   [param('ns3::ConfigStore::FileFormat', 'format')])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::SetFilename(std::string filename) [member function]
-    cls.add_method('SetFilename', 
-                   'void', 
-                   [param('std::string', 'filename')])
-    ## config-store.h (module 'contrib'): void ns3::ConfigStore::SetMode(ns3::ConfigStore::Mode mode) [member function]
-    cls.add_method('SetMode', 
-                   'void', 
-                   [param('ns3::ConfigStore::Mode', 'mode')])
-    return
-
-def register_Ns3FlowIdTag_methods(root_module, cls):
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag::FlowIdTag(ns3::FlowIdTag const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::FlowIdTag const &', 'arg0')])
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag::FlowIdTag() [constructor]
-    cls.add_constructor([])
-    ## flow-id-tag.h (module 'contrib'): ns3::FlowIdTag::FlowIdTag(uint32_t flowId) [constructor]
-    cls.add_constructor([param('uint32_t', 'flowId')])
-    ## flow-id-tag.h (module 'contrib'): static uint32_t ns3::FlowIdTag::AllocateFlowId() [member function]
-    cls.add_method('AllocateFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::Deserialize(ns3::TagBuffer buf) [member function]
-    cls.add_method('Deserialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): uint32_t ns3::FlowIdTag::GetFlowId() const [member function]
-    cls.add_method('GetFlowId', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## flow-id-tag.h (module 'contrib'): ns3::TypeId ns3::FlowIdTag::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): uint32_t ns3::FlowIdTag::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): static ns3::TypeId ns3::FlowIdTag::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::Serialize(ns3::TagBuffer buf) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::TagBuffer', 'buf')], 
-                   is_const=True, is_virtual=True)
-    ## flow-id-tag.h (module 'contrib'): void ns3::FlowIdTag::SetFlowId(uint32_t flowId) [member function]
-    cls.add_method('SetFlowId', 
-                   'void', 
-                   [param('uint32_t', 'flowId')])
-    return
-
-def register_Ns3Gnuplot2dDataset_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::Gnuplot2dDataset(ns3::Gnuplot2dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dDataset const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dDataset::Gnuplot2dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::Add(double x, double y) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::Add(double x, double y, double errorDelta) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'errorDelta')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::Add(double x, double y, double minY, double maxY) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'minY'), param('double', 'maxY')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h (module 'contrib'): static void ns3::Gnuplot2dDataset::SetDefaultErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetDefaultErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): static void ns3::Gnuplot2dDataset::SetDefaultStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::SetErrorBars(ns3::Gnuplot2dDataset::ErrorBars errorBars) [member function]
-    cls.add_method('SetErrorBars', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::ErrorBars', 'errorBars')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dDataset::SetStyle(ns3::Gnuplot2dDataset::Style style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('ns3::Gnuplot2dDataset::Style', 'style')])
-    return
-
-def register_Ns3Gnuplot2dFunction_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dFunction::Gnuplot2dFunction(ns3::Gnuplot2dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot2dFunction const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot2dFunction::Gnuplot2dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot2dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_Ns3Gnuplot3dDataset_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dDataset::Gnuplot3dDataset(ns3::Gnuplot3dDataset const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dDataset const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dDataset::Gnuplot3dDataset(std::string const & title="Untitled") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dDataset::Add(double x, double y, double z) [member function]
-    cls.add_method('Add', 
-                   'void', 
-                   [param('double', 'x'), param('double', 'y'), param('double', 'z')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dDataset::AddEmptyLine() [member function]
-    cls.add_method('AddEmptyLine', 
-                   'void', 
-                   [])
-    ## gnuplot.h (module 'contrib'): static void ns3::Gnuplot3dDataset::SetDefaultStyle(std::string const & style) [member function]
-    cls.add_method('SetDefaultStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')], 
-                   is_static=True)
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dDataset::SetStyle(std::string const & style) [member function]
-    cls.add_method('SetStyle', 
-                   'void', 
-                   [param('std::string const &', 'style')])
-    return
-
-def register_Ns3Gnuplot3dFunction_methods(root_module, cls):
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dFunction::Gnuplot3dFunction(ns3::Gnuplot3dFunction const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Gnuplot3dFunction const &', 'arg0')])
-    ## gnuplot.h (module 'contrib'): ns3::Gnuplot3dFunction::Gnuplot3dFunction(std::string const & title="Untitled", std::string const & function="") [constructor]
-    cls.add_constructor([param('std::string const &', 'title', default_value='"Untitled"'), param('std::string const &', 'function', default_value='""')])
-    ## gnuplot.h (module 'contrib'): void ns3::Gnuplot3dFunction::SetFunction(std::string const & function) [member function]
-    cls.add_method('SetFunction', 
-                   'void', 
-                   [param('std::string const &', 'function')])
-    return
-
-def register_Ns3Header_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## header.h (module 'network'): ns3::Header::Header() [constructor]
-    cls.add_constructor([])
-    ## header.h (module 'network'): ns3::Header::Header(ns3::Header const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Header const &', 'arg0')])
-    ## header.h (module 'network'): uint32_t ns3::Header::Deserialize(ns3::Buffer::Iterator start) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## header.h (module 'network'): uint32_t ns3::Header::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## header.h (module 'network'): static ns3::TypeId ns3::Header::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## header.h (module 'network'): void ns3::Header::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## header.h (module 'network'): void ns3::Header::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3Object_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::Object::Object() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): void ns3::Object::AggregateObject(ns3::Ptr<ns3::Object> other) [member function]
-    cls.add_method('AggregateObject', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Object >', 'other')])
-    ## object.h (module 'core'): void ns3::Object::Dispose() [member function]
-    cls.add_method('Dispose', 
-                   'void', 
-                   [])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator ns3::Object::GetAggregateIterator() const [member function]
-    cls.add_method('GetAggregateIterator', 
-                   'ns3::Object::AggregateIterator', 
-                   [], 
-                   is_const=True)
-    ## object.h (module 'core'): ns3::TypeId ns3::Object::GetInstanceTypeId() const [member function]
-    cls.add_method('GetInstanceTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object.h (module 'core'): static ns3::TypeId ns3::Object::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## object.h (module 'core'): void ns3::Object::Start() [member function]
-    cls.add_method('Start', 
-                   'void', 
-                   [])
-    ## object.h (module 'core'): ns3::Object::Object(ns3::Object const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Object const &', 'o')], 
-                        visibility='protected')
-    ## object.h (module 'core'): void ns3::Object::DoDispose() [member function]
-    cls.add_method('DoDispose', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    ## object.h (module 'core'): void ns3::Object::DoStart() [member function]
-    cls.add_method('DoStart', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    ## object.h (module 'core'): void ns3::Object::NotifyNewAggregate() [member function]
-    cls.add_method('NotifyNewAggregate', 
-                   'void', 
-                   [], 
-                   visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3ObjectAggregateIterator_methods(root_module, cls):
-    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator(ns3::Object::AggregateIterator const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Object::AggregateIterator const &', 'arg0')])
-    ## object.h (module 'core'): ns3::Object::AggregateIterator::AggregateIterator() [constructor]
-    cls.add_constructor([])
-    ## object.h (module 'core'): bool ns3::Object::AggregateIterator::HasNext() const [member function]
-    cls.add_method('HasNext', 
-                   'bool', 
-                   [], 
-                   is_const=True)
-    ## object.h (module 'core'): ns3::Ptr<ns3::Object const> ns3::Object::AggregateIterator::Next() [member function]
-    cls.add_method('Next', 
-                   'ns3::Ptr< ns3::Object const >', 
-                   [])
-    return
-
-def register_Ns3Scalar_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(ns3::Scalar const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Scalar const &', 'arg0')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(double v) [constructor]
-    cls.add_constructor([param('double', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(uint32_t v) [constructor]
-    cls.add_constructor([param('uint32_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(int32_t v) [constructor]
-    cls.add_constructor([param('int32_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(uint64_t v) [constructor]
-    cls.add_constructor([param('uint64_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(int64_t v) [constructor]
-    cls.add_constructor([param('int64_t', 'v')])
-    ## nstime.h (module 'core'): ns3::Scalar::Scalar(ns3::Time t) [constructor]
-    cls.add_constructor([param('ns3::Time', 't')])
-    ## nstime.h (module 'core'): double ns3::Scalar::GetDouble() const [member function]
-    cls.add_method('GetDouble', 
-                   'double', 
-                   [], 
-                   is_const=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter< ns3::AttributeAccessor > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter< ns3::AttributeChecker > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::SimpleRefCount(ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter< ns3::AttributeValue > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::SimpleRefCount(ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter< ns3::CallbackImplBase > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::SimpleRefCount(ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter< ns3::EventImpl > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::SimpleRefCount(ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter< ns3::NixVector > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___methods(root_module, cls):
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount() [constructor]
-    cls.add_constructor([])
-    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > const & o) [copy constructor]
-    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter< ns3::Packet > > const &', 'o')])
-    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> >::Cleanup() [member function]
-    cls.add_method('Cleanup', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    return
-
-def register_Ns3Trailer_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## trailer.h (module 'network'): ns3::Trailer::Trailer() [constructor]
-    cls.add_constructor([])
-    ## trailer.h (module 'network'): ns3::Trailer::Trailer(ns3::Trailer const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::Trailer const &', 'arg0')])
-    ## trailer.h (module 'network'): uint32_t ns3::Trailer::Deserialize(ns3::Buffer::Iterator end) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('ns3::Buffer::Iterator', 'end')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## trailer.h (module 'network'): uint32_t ns3::Trailer::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## trailer.h (module 'network'): static ns3::TypeId ns3::Trailer::GetTypeId() [member function]
-    cls.add_method('GetTypeId', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_static=True)
-    ## trailer.h (module 'network'): void ns3::Trailer::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## trailer.h (module 'network'): void ns3::Trailer::Serialize(ns3::Buffer::Iterator start) const [member function]
-    cls.add_method('Serialize', 
-                   'void', 
-                   [param('ns3::Buffer::Iterator', 'start')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3AttributeAccessor_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor(ns3::AttributeAccessor const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeAccessor const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::AttributeAccessor::AttributeAccessor() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Get(ns3::ObjectBase const * object, ns3::AttributeValue & attribute) const [member function]
-    cls.add_method('Get', 
-                   'bool', 
-                   [param('ns3::ObjectBase const *', 'object'), param('ns3::AttributeValue &', 'attribute')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasGetter() const [member function]
-    cls.add_method('HasGetter', 
-                   'bool', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::HasSetter() const [member function]
-    cls.add_method('HasSetter', 
-                   'bool', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeAccessor::Set(ns3::ObjectBase * object, ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Set', 
-                   'bool', 
-                   [param('ns3::ObjectBase *', 'object', transfer_ownership=False), param('ns3::AttributeValue const &', 'value')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3AttributeChecker_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker(ns3::AttributeChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeChecker const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::AttributeChecker::AttributeChecker() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Check(ns3::AttributeValue const & value) const [member function]
-    cls.add_method('Check', 
-                   'bool', 
-                   [param('ns3::AttributeValue const &', 'value')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeChecker::Copy(ns3::AttributeValue const & source, ns3::AttributeValue & destination) const [member function]
-    cls.add_method('Copy', 
-                   'bool', 
-                   [param('ns3::AttributeValue const &', 'source'), param('ns3::AttributeValue &', 'destination')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeChecker::Create() const [member function]
-    cls.add_method('Create', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetUnderlyingTypeInformation() const [member function]
-    cls.add_method('GetUnderlyingTypeInformation', 
-                   'std::string', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::AttributeChecker::GetValueTypeName() const [member function]
-    cls.add_method('GetValueTypeName', 
-                   'std::string', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeChecker::HasUnderlyingTypeInformation() const [member function]
-    cls.add_method('HasUnderlyingTypeInformation', 
-                   'bool', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3AttributeValue_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue(ns3::AttributeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::AttributeValue const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::AttributeValue::AttributeValue() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::AttributeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::AttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_pure_virtual=True, is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::AttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3CallbackChecker_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker(ns3::CallbackChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackChecker const &', 'arg0')])
-    return
-
-def register_Ns3CallbackImplBase_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::CallbackImplBase::CallbackImplBase(ns3::CallbackImplBase const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackImplBase const &', 'arg0')])
-    ## callback.h (module 'core'): bool ns3::CallbackImplBase::IsEqual(ns3::Ptr<ns3::CallbackImplBase const> other) const [member function]
-    cls.add_method('IsEqual', 
-                   'bool', 
-                   [param('ns3::Ptr< ns3::CallbackImplBase const >', 'other')], 
-                   is_pure_virtual=True, is_const=True, is_virtual=True)
-    return
-
-def register_Ns3CallbackValue_methods(root_module, cls):
-    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::CallbackValue const &', 'arg0')])
-    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue() [constructor]
-    cls.add_constructor([])
-    ## callback.h (module 'core'): ns3::CallbackValue::CallbackValue(ns3::CallbackBase const & base) [constructor]
-    cls.add_constructor([param('ns3::CallbackBase const &', 'base')])
-    ## callback.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::CallbackValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## callback.h (module 'core'): bool ns3::CallbackValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## callback.h (module 'core'): std::string ns3::CallbackValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## callback.h (module 'core'): void ns3::CallbackValue::Set(ns3::CallbackBase base) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::CallbackBase', 'base')])
-    return
-
-def register_Ns3EmptyAttributeValue_methods(root_module, cls):
-    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue(ns3::EmptyAttributeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EmptyAttributeValue const &', 'arg0')])
-    ## attribute.h (module 'core'): ns3::EmptyAttributeValue::EmptyAttributeValue() [constructor]
-    cls.add_constructor([])
-    ## attribute.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::EmptyAttributeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, visibility='private', is_virtual=True)
-    ## attribute.h (module 'core'): bool ns3::EmptyAttributeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   visibility='private', is_virtual=True)
-    ## attribute.h (module 'core'): std::string ns3::EmptyAttributeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, visibility='private', is_virtual=True)
-    return
-
-def register_Ns3EventImpl_methods(root_module, cls):
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl(ns3::EventImpl const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::EventImpl const &', 'arg0')])
-    ## event-impl.h (module 'core'): ns3::EventImpl::EventImpl() [constructor]
-    cls.add_constructor([])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Cancel() [member function]
-    cls.add_method('Cancel', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Invoke() [member function]
-    cls.add_method('Invoke', 
-                   'void', 
-                   [])
-    ## event-impl.h (module 'core'): bool ns3::EventImpl::IsCancelled() [member function]
-    cls.add_method('IsCancelled', 
-                   'bool', 
-                   [])
-    ## event-impl.h (module 'core'): void ns3::EventImpl::Notify() [member function]
-    cls.add_method('Notify', 
-                   'void', 
-                   [], 
-                   is_pure_virtual=True, visibility='protected', is_virtual=True)
-    return
-
-def register_Ns3NixVector_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector() [constructor]
-    cls.add_constructor([])
-    ## nix-vector.h (module 'network'): ns3::NixVector::NixVector(ns3::NixVector const & o) [copy constructor]
-    cls.add_constructor([param('ns3::NixVector const &', 'o')])
-    ## nix-vector.h (module 'network'): void ns3::NixVector::AddNeighborIndex(uint32_t newBits, uint32_t numberOfBits) [member function]
-    cls.add_method('AddNeighborIndex', 
-                   'void', 
-                   [param('uint32_t', 'newBits'), param('uint32_t', 'numberOfBits')])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::BitCount(uint32_t numberOfNeighbors) const [member function]
-    cls.add_method('BitCount', 
-                   'uint32_t', 
-                   [param('uint32_t', 'numberOfNeighbors')], 
-                   is_const=True)
-    ## nix-vector.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::NixVector::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::NixVector >', 
-                   [], 
-                   is_const=True)
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Deserialize(uint32_t const * buffer, uint32_t size) [member function]
-    cls.add_method('Deserialize', 
-                   'uint32_t', 
-                   [param('uint32_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::ExtractNeighborIndex(uint32_t numberOfBits) [member function]
-    cls.add_method('ExtractNeighborIndex', 
-                   'uint32_t', 
-                   [param('uint32_t', 'numberOfBits')])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetRemainingBits() [member function]
-    cls.add_method('GetRemainingBits', 
-                   'uint32_t', 
-                   [])
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## nix-vector.h (module 'network'): uint32_t ns3::NixVector::Serialize(uint32_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint32_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    return
-
-def register_Ns3ObjectFactoryChecker_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryChecker::ObjectFactoryChecker(ns3::ObjectFactoryChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryChecker const &', 'arg0')])
-    return
-
-def register_Ns3ObjectFactoryValue_methods(root_module, cls):
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue() [constructor]
-    cls.add_constructor([])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactoryValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::ObjectFactoryValue const &', 'arg0')])
-    ## object-factory.h (module 'core'): ns3::ObjectFactoryValue::ObjectFactoryValue(ns3::ObjectFactory const & value) [constructor]
-    cls.add_constructor([param('ns3::ObjectFactory const &', 'value')])
-    ## object-factory.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::ObjectFactoryValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): bool ns3::ObjectFactoryValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## object-factory.h (module 'core'): ns3::ObjectFactory ns3::ObjectFactoryValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::ObjectFactory', 
-                   [], 
-                   is_const=True)
-    ## object-factory.h (module 'core'): std::string ns3::ObjectFactoryValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## object-factory.h (module 'core'): void ns3::ObjectFactoryValue::Set(ns3::ObjectFactory const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::ObjectFactory const &', 'value')])
-    return
-
-def register_Ns3Packet_methods(root_module, cls):
-    cls.add_output_stream_operator()
-    ## packet.h (module 'network'): ns3::Packet::Packet() [constructor]
-    cls.add_constructor([])
-    ## packet.h (module 'network'): ns3::Packet::Packet(ns3::Packet const & o) [copy constructor]
-    cls.add_constructor([param('ns3::Packet const &', 'o')])
-    ## packet.h (module 'network'): ns3::Packet::Packet(uint32_t size) [constructor]
-    cls.add_constructor([param('uint32_t', 'size')])
-    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size, bool magic) [constructor]
-    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size'), param('bool', 'magic')])
-    ## packet.h (module 'network'): ns3::Packet::Packet(uint8_t const * buffer, uint32_t size) [constructor]
-    cls.add_constructor([param('uint8_t const *', 'buffer'), param('uint32_t', 'size')])
-    ## packet.h (module 'network'): void ns3::Packet::AddAtEnd(ns3::Ptr<const ns3::Packet> packet) [member function]
-    cls.add_method('AddAtEnd', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Packet const >', 'packet')])
-    ## packet.h (module 'network'): void ns3::Packet::AddByteTag(ns3::Tag const & tag) const [member function]
-    cls.add_method('AddByteTag', 
-                   'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::AddHeader(ns3::Header const & header) [member function]
-    cls.add_method('AddHeader', 
-                   'void', 
-                   [param('ns3::Header const &', 'header')])
-    ## packet.h (module 'network'): void ns3::Packet::AddPacketTag(ns3::Tag const & tag) const [member function]
-    cls.add_method('AddPacketTag', 
-                   'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::AddPaddingAtEnd(uint32_t size) [member function]
-    cls.add_method('AddPaddingAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'size')])
-    ## packet.h (module 'network'): void ns3::Packet::AddTrailer(ns3::Trailer const & trailer) [member function]
-    cls.add_method('AddTrailer', 
-                   'void', 
-                   [param('ns3::Trailer const &', 'trailer')])
-    ## packet.h (module 'network'): ns3::PacketMetadata::ItemIterator ns3::Packet::BeginItem() const [member function]
-    cls.add_method('BeginItem', 
-                   'ns3::PacketMetadata::ItemIterator', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::Packet >', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::CopyData(uint8_t * buffer, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::CopyData(std::ostream * os, uint32_t size) const [member function]
-    cls.add_method('CopyData', 
-                   'void', 
-                   [param('std::ostream *', 'os'), param('uint32_t', 'size')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Packet::CreateFragment(uint32_t start, uint32_t length) const [member function]
-    cls.add_method('CreateFragment', 
-                   'ns3::Ptr< ns3::Packet >', 
-                   [param('uint32_t', 'start'), param('uint32_t', 'length')], 
-                   is_const=True)
-    ## packet.h (module 'network'): static void ns3::Packet::EnableChecking() [member function]
-    cls.add_method('EnableChecking', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet.h (module 'network'): static void ns3::Packet::EnablePrinting() [member function]
-    cls.add_method('EnablePrinting', 
-                   'void', 
-                   [], 
-                   is_static=True)
-    ## packet.h (module 'network'): bool ns3::Packet::FindFirstMatchingByteTag(ns3::Tag & tag) const [member function]
-    cls.add_method('FindFirstMatchingByteTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::ByteTagIterator ns3::Packet::GetByteTagIterator() const [member function]
-    cls.add_method('GetByteTagIterator', 
-                   'ns3::ByteTagIterator', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::Ptr<ns3::NixVector> ns3::Packet::GetNixVector() const [member function]
-    cls.add_method('GetNixVector', 
-                   'ns3::Ptr< ns3::NixVector >', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): ns3::PacketTagIterator ns3::Packet::GetPacketTagIterator() const [member function]
-    cls.add_method('GetPacketTagIterator', 
-                   'ns3::PacketTagIterator', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSerializedSize() const [member function]
-    cls.add_method('GetSerializedSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::GetSize() const [member function]
-    cls.add_method('GetSize', 
-                   'uint32_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint64_t ns3::Packet::GetUid() const [member function]
-    cls.add_method('GetUid', 
-                   'uint64_t', 
-                   [], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint8_t const * ns3::Packet::PeekData() const [member function]
-    cls.add_method('PeekData', 
-                   'uint8_t const *', 
-                   [], 
-                   deprecated=True, is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekHeader(ns3::Header & header) const [member function]
-    cls.add_method('PeekHeader', 
-                   'uint32_t', 
-                   [param('ns3::Header &', 'header')], 
-                   is_const=True)
-    ## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
-    cls.add_method('PeekPacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
-                   is_const=True)
-    ## packet.h (module 'network'): uint32_t ns3::Packet::PeekTrailer(ns3::Trailer & trailer) [member function]
-    cls.add_method('PeekTrailer', 
-                   'uint32_t', 
-                   [param('ns3::Trailer &', 'trailer')])
-    ## packet.h (module 'network'): void ns3::Packet::Print(std::ostream & os) const [member function]
-    cls.add_method('Print', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::PrintByteTags(std::ostream & os) const [member function]
-    cls.add_method('PrintByteTags', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::PrintPacketTags(std::ostream & os) const [member function]
-    cls.add_method('PrintPacketTags', 
-                   'void', 
-                   [param('std::ostream &', 'os')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAllByteTags() [member function]
-    cls.add_method('RemoveAllByteTags', 
-                   'void', 
-                   [])
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAllPacketTags() [member function]
-    cls.add_method('RemoveAllPacketTags', 
-                   'void', 
-                   [])
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAtEnd(uint32_t size) [member function]
-    cls.add_method('RemoveAtEnd', 
-                   'void', 
-                   [param('uint32_t', 'size')])
-    ## packet.h (module 'network'): void ns3::Packet::RemoveAtStart(uint32_t size) [member function]
-    cls.add_method('RemoveAtStart', 
-                   'void', 
-                   [param('uint32_t', 'size')])
-    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveHeader(ns3::Header & header) [member function]
-    cls.add_method('RemoveHeader', 
-                   'uint32_t', 
-                   [param('ns3::Header &', 'header')])
-    ## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
-    cls.add_method('RemovePacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')])
-    ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveTrailer(ns3::Trailer & trailer) [member function]
-    cls.add_method('RemoveTrailer', 
-                   'uint32_t', 
-                   [param('ns3::Trailer &', 'trailer')])
-    ## packet.h (module 'network'): uint32_t ns3::Packet::Serialize(uint8_t * buffer, uint32_t maxSize) const [member function]
-    cls.add_method('Serialize', 
-                   'uint32_t', 
-                   [param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')], 
-                   is_const=True)
-    ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr<ns3::NixVector> arg0) [member function]
-    cls.add_method('SetNixVector', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
-    return
-
-def register_Ns3TimeChecker_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::TimeChecker::TimeChecker() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::TimeChecker::TimeChecker(ns3::TimeChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimeChecker const &', 'arg0')])
-    return
-
-def register_Ns3TimeValue_methods(root_module, cls):
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue() [constructor]
-    cls.add_constructor([])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::TimeValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TimeValue const &', 'arg0')])
-    ## nstime.h (module 'core'): ns3::TimeValue::TimeValue(ns3::Time const & value) [constructor]
-    cls.add_constructor([param('ns3::Time const &', 'value')])
-    ## nstime.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TimeValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): bool ns3::TimeValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## nstime.h (module 'core'): ns3::Time ns3::TimeValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::Time', 
-                   [], 
-                   is_const=True)
-    ## nstime.h (module 'core'): std::string ns3::TimeValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## nstime.h (module 'core'): void ns3::TimeValue::Set(ns3::Time const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::Time const &', 'value')])
-    return
-
-def register_Ns3TypeIdChecker_methods(root_module, cls):
-    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeIdChecker::TypeIdChecker(ns3::TypeIdChecker const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TypeIdChecker const &', 'arg0')])
-    return
-
-def register_Ns3TypeIdValue_methods(root_module, cls):
-    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue() [constructor]
-    cls.add_constructor([])
-    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeIdValue const & arg0) [copy constructor]
-    cls.add_constructor([param('ns3::TypeIdValue const &', 'arg0')])
-    ## type-id.h (module 'core'): ns3::TypeIdValue::TypeIdValue(ns3::TypeId const & value) [constructor]
-    cls.add_constructor([param('ns3::TypeId const &', 'value')])
-    ## type-id.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::TypeIdValue::Copy() const [member function]
-    cls.add_method('Copy', 
-                   'ns3::Ptr< ns3::AttributeValue >', 
-                   [], 
-                   is_const=True, is_virtual=True)
-    ## type-id.h (module 'core'): bool ns3::TypeIdValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
-    cls.add_method('DeserializeFromString', 
-                   'bool', 
-                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_virtual=True)
-    ## type-id.h (module 'core'): ns3::TypeId ns3::TypeIdValue::Get() const [member function]
-    cls.add_method('Get', 
-                   'ns3::TypeId', 
-                   [], 
-                   is_const=True)
-    ## type-id.h (module 'core'): std::string ns3::TypeIdValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
-    cls.add_method('SerializeToString', 
-                   'std::string', 
-                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
-                   is_const=True, is_virtual=True)
-    ## type-id.h (module 'core'): void ns3::TypeIdValue::Set(ns3::TypeId const & value) [member function]
-    cls.add_method('Set', 
-                   'void', 
-                   [param('ns3::TypeId const &', 'value')])
-    return
-
-def register_functions(root_module):
-    module = root_module
-    register_functions_ns3_FatalImpl(module.get_submodule('FatalImpl'), root_module)
-    return
-
-def register_functions_ns3_FatalImpl(module, root_module):
-    return
-
-def main():
-    out = FileCodeSink(sys.stdout)
-    root_module = module_init()
-    register_types(root_module)
-    register_methods(root_module)
-    register_functions(root_module)
-    root_module.generate(out)
-
-if __name__ == '__main__':
-    main()
-
--- a/src/contrib/config-store.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-#include "config-store.h"
-#include "raw-text-config.h"
-#include "ns3/string.h"
-#include "ns3/log.h"
-#include "ns3/simulator.h"
-#include "ns3/enum.h"
-#include "ns3/attribute-list.h"
-#include "ns3/contrib-config.h"
-#ifdef HAVE_LIBXML2
-#include "xml-config.h"
-#endif
-
-#include <string>
-#include <fstream>
-#include <iostream>
-#include <unistd.h>
-#include <stdlib.h>
-
-
-NS_LOG_COMPONENT_DEFINE ("ConfigStore");
-
-namespace ns3 {
-
-
-NS_OBJECT_ENSURE_REGISTERED (ConfigStore);
-
-TypeId 
-ConfigStore::GetTypeId (void)
-{
-  static TypeId tid = TypeId ("ns3::ConfigStore")
-    .SetParent<ObjectBase> ()
-    .AddAttribute ("Mode", 
-		   "Configuration mode",
-		   EnumValue (ConfigStore::NONE),
-		   MakeEnumAccessor (&ConfigStore::SetMode),
-		   MakeEnumChecker (ConfigStore::NONE, "None",
-				    ConfigStore::LOAD, "Load",
-				    ConfigStore::SAVE, "Save"))
-    .AddAttribute ("Filename", 
-		   "The file where the configuration should be saved to or loaded from.",
-		   StringValue (""),
-		   MakeStringAccessor (&ConfigStore::SetFilename),
-		   MakeStringChecker ())
-    .AddAttribute ("FileFormat",
-		   "Type of file format",
-		   EnumValue (ConfigStore::RAW_TEXT),
-		   MakeEnumAccessor (&ConfigStore::SetFileFormat),
-		   MakeEnumChecker (ConfigStore::RAW_TEXT, "RawText",
-				    ConfigStore::XML, "Xml"))
-    ;
-  return tid;
-}
-TypeId 
-ConfigStore::GetInstanceTypeId (void) const
-{
-  return GetTypeId ();
-}
-
-
-ConfigStore::ConfigStore ()
-{
-  ObjectBase::ConstructSelf (AttributeList ());
-
-#ifdef HAVE_LIBXML2
-  if (m_fileFormat == ConfigStore::XML)
-    {
-      if (m_mode == ConfigStore::SAVE)
-	{
-	  m_file = new XmlConfigSave ();
-	}
-      else if (m_mode == ConfigStore::LOAD)
-	{
-	  m_file = new XmlConfigLoad ();
-	}
-      else 
-	{
-	  m_file = new NoneFileConfig ();
-	}
-    }
-  else 
-#endif /* HAVE_LIBXML2 */
-  if (m_fileFormat == ConfigStore::RAW_TEXT)
-    {
-      if (m_mode == ConfigStore::SAVE)
-	{
-	  m_file = new RawTextConfigSave ();
-	}
-      else if (m_mode == ConfigStore::LOAD)
-	{
-	  m_file = new RawTextConfigLoad ();
-	}
-      else
-	{
-	  m_file = new NoneFileConfig ();
-	}
-    }
-  m_file->SetFilename (m_filename);
-}
-
-ConfigStore::~ConfigStore ()
-{
-  delete m_file;
-  m_file = 0;
-}
-
-void 
-ConfigStore::SetMode (enum Mode mode)
-{
-  m_mode = mode;
-}
-void 
-ConfigStore::SetFileFormat (enum FileFormat format)
-{
-  m_fileFormat = format;
-}
-void 
-ConfigStore::SetFilename (std::string filename)
-{
-  m_filename = filename;
-}
-
-void 
-ConfigStore::ConfigureAttributes (void)
-{
-  m_file->Attributes ();
-}
-
-void 
-ConfigStore::ConfigureDefaults (void)
-{
-  m_file->Default ();
-  m_file->Global ();
-}
-
-} // namespace ns3
--- a/src/contrib/config-store.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-#ifndef CONFIG_STORE_H
-#define CONFIG_STORE_H
-
-#include "ns3/object-base.h"
-#include "file-config.h"
-
-namespace ns3 {
-
-/**
- * \brief Store and load simulation attribute configuration
- *
- * While it is possible to generate a sample config file and lightly
- * edit it to change a couple of values, there are cases where this
- * process will not work because the same value on the same object
- * can appear multiple times in the same automatically-generated 
- * configuration file under different configuration paths.
- *
- * As such, the best way to use this class is to use it to generate
- * an initial configuration file, extract from that configuration
- * file only the strictly necessary elements, and move these minimal
- * elements to a new configuration file which can then safely
- * be edited. Another option is to use the ns3::GtkConfigStore class
- * which will allow you to edit the parameters and will generate 
- * configuration files where all the instances of the same parameter
- * are changed.
- */
-class ConfigStore : public ObjectBase
-{
-public:
-  enum Mode {
-    LOAD,
-    SAVE,
-    NONE
-  };
-  enum FileFormat {
-    XML,
-    RAW_TEXT
-  };
-  static TypeId GetTypeId (void);
-  virtual TypeId GetInstanceTypeId (void) const;
-
-  ConfigStore ();
-  ~ConfigStore ();
-
-  void SetMode (enum Mode mode);
-  void SetFileFormat (enum FileFormat format);
-  void SetFilename (std::string filename);
-
-  void ConfigureDefaults (void);
-  void ConfigureAttributes (void);
-
-private:
-  enum Mode m_mode;
-  enum FileFormat m_fileFormat;
-  std::string m_filename;
-  FileConfig *m_file;
-};
-
-}  // namespace ns3
-
-#endif /* CONFIG_STORE_H */
--- a/src/contrib/contrib.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-/**
- * \addtogroup contrib Contrib
- *
- * The src/contrib directory is for contributed code that is being maintained
- * by the authors, but is not yet part of the main tree.
- * For instance, the developers may be requesting feedback on whether anyone
- * thinks the contributed model is generally useful to maintain in the main
- * tree, or may want feedback on the API or features.  If you find the
- * code in this directory useful, please let the ns-3 developers know.
- * Code may migrate from this directory to the main tree, or may be 
- * removed due to lack of interest, for a later release.
- *
- * - A class to generate graphs with gnuplot: ns3::Gnuplot and ns3::GnuplotDataset
- * - A class to hold configuration data:  ns3::ConfigStore and methods to allow the configuration to be read from and written to a file
- * - A graphical editor of the config store:  ns3::GtkConfigStore
- * - An object that garbage collects events:  ns3::EventGarbageCollector
- * - An object that provides "quick and dirty" delay and jitter estimation:  ns3::DelayJitterEstimation
- */
--- a/src/contrib/delay-jitter-estimation.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-
-#include "delay-jitter-estimation.h"
-#include "ns3/tag.h"
-#include "ns3/simulator.h"
-#include "ns3/string.h"
-
-namespace ns3 {
-
-class DelayJitterEstimationTimestampTag : public Tag
-{
-public:
-  DelayJitterEstimationTimestampTag ();
-  static TypeId GetTypeId (void);
-  virtual TypeId GetInstanceTypeId (void) const;
-
-  virtual uint32_t GetSerializedSize (void) const;
-  virtual void Serialize (TagBuffer i) const;
-  virtual void Deserialize (TagBuffer i);
-  virtual void Print (std::ostream &os) const;
-
-  Time GetTxTime (void) const;
-private:
-  uint64_t m_creationTime;
-};
-
-DelayJitterEstimationTimestampTag::DelayJitterEstimationTimestampTag ()
-  : m_creationTime (Simulator::Now ().GetTimeStep ())
-{}
-
-TypeId 
-DelayJitterEstimationTimestampTag::GetTypeId (void)
-{
-  static TypeId tid = TypeId ("anon::DelayJitterEstimationTimestampTag")
-    .SetParent<Tag> ()
-    .AddConstructor<DelayJitterEstimationTimestampTag> ()
-    .AddAttribute ("CreationTime",
-		   "The time at which the timestamp was created",
-		   StringValue ("0.0s"),
-		   MakeTimeAccessor (&DelayJitterEstimationTimestampTag::GetTxTime),
-		   MakeTimeChecker ())
-    ;
-  return tid;
-}
-TypeId 
-DelayJitterEstimationTimestampTag::GetInstanceTypeId (void) const
-{
-  return GetTypeId ();
-}
-
-uint32_t 
-DelayJitterEstimationTimestampTag::GetSerializedSize (void) const
-{
-  return 8;
-}
-void 
-DelayJitterEstimationTimestampTag::Serialize (TagBuffer i) const
-{
-  i.WriteU64 (m_creationTime);
-}
-void 
-DelayJitterEstimationTimestampTag::Deserialize (TagBuffer i)
-{
-  m_creationTime = i.ReadU64 ();
-}
-void 
-DelayJitterEstimationTimestampTag::Print (std::ostream &os) const
-{
-  os << "CreationTime=" << m_creationTime;
-}
-Time 
-DelayJitterEstimationTimestampTag::GetTxTime (void) const
-{
-  return TimeStep (m_creationTime);
-}
-
-DelayJitterEstimation::DelayJitterEstimation ()
-  : m_previousRx (Simulator::Now ()),
-    m_previousRxTx (Simulator::Now ()),
-    m_jitter (Seconds (0.0)),
-    m_delay (Seconds (0.0))
-{}
-void 
-DelayJitterEstimation::PrepareTx (Ptr<const Packet> packet)
-{
-  DelayJitterEstimationTimestampTag tag;
-  packet->AddByteTag (tag);
-}
-void 
-DelayJitterEstimation::RecordRx (Ptr<const Packet> packet)
-{
-  DelayJitterEstimationTimestampTag tag;
-  bool found;
-  found = packet->FindFirstMatchingByteTag (tag);
-  if (!found)
-    {
-      return;
-    }
-  tag.GetTxTime ();
-
-  Time delta = (Simulator::Now () - m_previousRx) - (tag.GetTxTime () - m_previousRxTx);
-  m_jitter += (Abs (delta) - m_jitter ) / Scalar (16.0);
-  m_previousRx = Simulator::Now ();
-  m_previousRxTx = tag.GetTxTime ();
-  m_delay = Simulator::Now () - tag.GetTxTime ();
-}
-
-Time 
-DelayJitterEstimation::GetLastDelay (void) const
-{
-  return m_delay;
-}
-Time
-DelayJitterEstimation::GetLastJitter (void) const
-{
-  return m_jitter;
-}
-
-} // namespace ns3
--- a/src/contrib/delay-jitter-estimation.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-#ifndef DELAY_JITTER_ESTIMATION_H
-#define DELAY_JITTER_ESTIMATION_H
-
-#include "ns3/nstime.h"
-#include "ns3/packet.h"
-
-namespace ns3 {
-
-/**
- * \brief quick and dirty delay and jitter estimation
- *
- */
-class DelayJitterEstimation
-{
-public:
-  DelayJitterEstimation ();
-
-  /**
-   * \param packet the packet to send over a wire
-   *
-   * This method should be invoked once on each packet to
-   * record within the packet the tx time which is used upon
-   * packet reception to calculate the delay and jitter. The
-   * tx time is stored in the packet as an ns3::Tag which means
-   * that it does not use any network resources and is not
-   * taken into account in transmission delay calculations.
-   */
-  static void PrepareTx (Ptr<const Packet> packet);
-  /**
-   * \param packet the packet received
-   *
-   * Invoke this method to update the delay and jitter calculations
-   * After a call to this method, \ref GetLastDelay and \ref GetLastJitter
-   * will return an updated delay and jitter.
-   */
-  void RecordRx (Ptr<const Packet> packet);
-
-  /**
-   * \returns the updated delay.
-   */
-  Time GetLastDelay (void) const;
-  /**
-   * The jitter is calculated using the RFC 1889 (RTP) jitter
-   * definition.
-   *
-   * \returns the updated jitter.
-   */
-  Time GetLastJitter (void) const;
-
-private:
-  Time m_previousRx;
-  Time m_previousRxTx;
-  Time m_jitter;
-  Time m_delay;
-};
-
-} // namespace ns3
-
-#endif /* DELAY_JITTER_ESTIMATION_H */
--- a/src/contrib/display-functions.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,594 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-#include "display-functions.h"
-#include "raw-text-config.h"
-#include "ns3/config.h"
-#include "ns3/string.h"
-#include "ns3/pointer.h"
-
-namespace ns3 {
-/**
- * This function includes the name of the attribute or the editable value
- * in the second column 
- */
-void
-cell_data_function_col_1 (GtkTreeViewColumn *col, GtkCellRenderer *renderer,
-                          GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
-{
-  ModelNode *node;
-  gtk_tree_model_get (model, iter, COL_NODE, &node, -1);
-  if (node->type == ModelNode::NODE_ATTRIBUTE)
-    {
-      StringValue str;
-      node->object->GetAttribute (node->name, str);
-      g_object_set (renderer, "text", str.Get ().c_str (), (char*) 0);
-      g_object_set (renderer, "editable", TRUE, (char*) 0);
-    }
-  else
-    {
-      g_object_set (renderer, "text", "", (char*) 0);
-      g_object_set (renderer, "editable", FALSE, (char*) 0);
-    }
-}
-/**
- * This function includes the name of the object, pointer, vector or vector item
- * in the first column
- */
-void
-cell_data_function_col_0 (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model,
-                          GtkTreeIter *iter, gpointer user_data)
-{
-  ModelNode *node;
-  gtk_tree_model_get (model, iter, COL_NODE, &node, -1);
-  g_object_set (renderer, "editable", FALSE, (char*) 0);
-  switch (node->type)
-    {
-    case ModelNode::NODE_OBJECT:
-      g_object_set (renderer, "text", node->object->GetInstanceTypeId ().GetName ().c_str (), (char*) 0);
-      break;
-    case ModelNode::NODE_POINTER:
-      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
-      break;
-    case ModelNode::NODE_VECTOR:
-      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
-      break;
-    case ModelNode::NODE_VECTOR_ITEM:
-      {
-        std::stringstream oss;
-        oss << node->index;
-        g_object_set (renderer, "text", oss.str ().c_str (), (char*) 0);
-      }
-      break;
-    case ModelNode::NODE_ATTRIBUTE:
-      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
-      break;
-    }
-}
-
-/**
- * This is the callback called when the value of an attribute is changed
- */
-void
-cell_edited_callback (GtkCellRendererText *cell, gchar *path_string,
-                      gchar *new_text, gpointer user_data)
-{
-  GtkTreeModel *model = GTK_TREE_MODEL (user_data);
-  GtkTreeIter iter;
-  gtk_tree_model_get_iter_from_string (model, &iter, path_string);
-  ModelNode *node;
-  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
-  NS_ASSERT (node->type == ModelNode::NODE_ATTRIBUTE);
-  node->object->SetAttribute (node->name, StringValue (new_text));
-}
-
-/**
- * This function gets the column number 0 or 1 from the mouse
- * click
- */
-int
-get_col_number_from_tree_view_column (GtkTreeViewColumn *col)
-{
-  GList *cols;
-  int num;
-  g_return_val_if_fail (col != 0, -1);
-  g_return_val_if_fail (col->tree_view != 0, -1);
-  cols = gtk_tree_view_get_columns (GTK_TREE_VIEW (col->tree_view));
-  num = g_list_index (cols, (gpointer) col);
-  g_list_free (cols);
-  return num;
-}
-
-/**
- * This function displays the tooltip for an object, pointer, vector
- * item or an attribute
- */
-gboolean
-cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, 
-                       GtkTooltip *tooltip, gpointer user_data)
-{
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  GtkTreeViewColumn * column;
-  if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &x, &y,
-                                          keyboard_tip, &model, 0, &iter))
-    {
-      return FALSE;
-    }
-  if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, y, 0, &column, 0, 0))
-    {
-      return FALSE;
-    }
-  int col = get_col_number_from_tree_view_column (column);
-
-  ModelNode *node;
-  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
-
-  switch (node->type)
-    {
-    case ModelNode::NODE_OBJECT:
-      if (col == 0)
-        {
-          std::string tip = "This object is of type "
-            + node->object->GetInstanceTypeId ().GetName ();
-          gtk_tooltip_set_text (tooltip, tip.c_str ());
-          return TRUE;
-        }
-      break;
-    case ModelNode::NODE_POINTER:
-      if (col == 0)
-        {
-          PointerValue ptr;
-          node->object->GetAttribute (node->name, ptr);
-          std::string tip = "This object is of type "
-            + ptr.GetObject ()->GetInstanceTypeId ().GetName ();
-          gtk_tooltip_set_text (tooltip, tip.c_str ());
-          return TRUE;
-        }
-      break;
-    case ModelNode::NODE_VECTOR:
-      break;
-    case ModelNode::NODE_VECTOR_ITEM:
-      if (col == 0)
-        {
-          std::string tip = "This object is of type "
-            + node->object->GetInstanceTypeId ().GetName ();
-          gtk_tooltip_set_text (tooltip, tip.c_str ());
-          return TRUE;
-        }
-      break;
-    case ModelNode::NODE_ATTRIBUTE:
-      {
-        uint32_t attrIndex = 0;
-        TypeId tid;
-        for (tid = node->object->GetInstanceTypeId (); tid.HasParent (); tid
-               = tid.GetParent ())
-          {
-            for (uint32_t i = 0; i < tid.GetAttributeN (); ++i)
-              {
-                if (tid.GetAttributeName (i) == node->name)
-                  {
-                    attrIndex = i;
-                    goto out;
-                  }
-              }
-          }
-out: if (col == 0)
-          {
-            std::string tip = tid.GetAttributeHelp (attrIndex);
-            gtk_tooltip_set_text (tooltip, tip.c_str ());
-          }
-        else
-          {
-            Ptr<const AttributeChecker> checker = tid.GetAttributeChecker (
-                attrIndex);
-            std::string tip;
-            tip = "This attribute is of type " + checker->GetValueTypeName ();
-            if (checker->HasUnderlyingTypeInformation ())
-              {
-                tip += " " + checker->GetUnderlyingTypeInformation ();
-              }
-            gtk_tooltip_set_text (tooltip, tip.c_str ());
-          }
-        return TRUE;
-      }
-      break;
-    }
-  return FALSE;
-}
-
-/**
- * This is the main view opening the widget, getting tooltips and drawing the 
- * tree of attributes...
- */
-GtkWidget *
-create_view (GtkTreeStore *model)
-{
-  GtkTreeViewColumn *col;
-  GtkCellRenderer *renderer;
-  GtkWidget *view;
-
-  view = gtk_tree_view_new ();
-  g_object_set (view, "has-tooltip", TRUE, (char*) 0);
-  g_signal_connect (view, "query-tooltip", (GCallback) cell_tooltip_callback, 0);
-
-  gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
-  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE);
-
-  col = gtk_tree_view_column_new ();
-  gtk_tree_view_column_set_title (col, "Object Attributes");
-  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_tree_view_column_pack_start (col, renderer, TRUE);
-  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_0, 0, 0);
-  g_object_set (renderer, "editable", FALSE, (char*) 0);
-
-  col = gtk_tree_view_column_new ();
-  gtk_tree_view_column_set_title (col, "Attribute Value");
-  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
-  renderer = gtk_cell_renderer_text_new ();
-  g_signal_connect (renderer, "edited", (GCallback) cell_edited_callback, model);
-  gtk_tree_view_column_pack_start (col, renderer, TRUE);
-  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_1, 0, 0);
-
-  gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
-
-  g_object_unref (model); /* destroy model automatically with view */
-
-  return view;
-}
-
-/**
- * This is the action done when the user presses on the save button.
- * It will save the config to a file.
- */
-void
-save_clicked (GtkButton *button, gpointer user_data)
-{
-  GtkWidget *parent_window = GTK_WIDGET (user_data);
-  GtkWidget *dialog;
-
-  dialog = gtk_file_chooser_dialog_new ("Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE,
-                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
-                                        GTK_RESPONSE_ACCEPT, (char *) 0);
-  gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
-                                                  TRUE);
-
-  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "config.txt");
-
-  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
-    {
-      char *filename;
-
-      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-      RawTextConfigSave config;
-      config.SetFilename (filename);
-      config.Attributes ();
-      g_free (filename);
-    }
-
-  gtk_widget_destroy (dialog);
-}
-
-/**
- * If the user presses the button load, it will load the config file into memory.
- */
-void
-load_clicked (GtkButton *button, gpointer user_data)
-{
-  GtkWidget *parent_window = GTK_WIDGET (user_data);
-  GtkWidget *dialog;
-
-  dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN,
-                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
-                                        GTK_RESPONSE_ACCEPT, (char *) 0);
-
-  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
-    {
-      char *filename;
-
-      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-      RawTextConfigLoad config;
-      config.SetFilename (filename);
-      config.Attributes ();
-    }
-
-  gtk_widget_destroy (dialog);
-}
-
-/**
- * Exit the window when exit button is pressed
- */
-void
-exit_clicked_callback (GtkButton *button, gpointer user_data)
-{
-  gtk_main_quit ();
-  gtk_widget_hide (GTK_WIDGET (user_data));
-}
-
-/**
- * Exit the application
- */
-gboolean
-delete_event_callback (GtkWidget *widget, GdkEvent *event, gpointer user_data)
-{
-  gtk_main_quit ();
-  gtk_widget_hide (GTK_WIDGET (user_data));
-  return TRUE;
-}
-
-/**
- * Delete the tree model contents
- */
-gboolean
-clean_model_callback (GtkTreeModel *model, GtkTreePath *path,
-                      GtkTreeIter *iter, gpointer data)
-{
-  ModelNode *node;
-  gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_NODE, &node, -1);
-  delete node;
-  gtk_tree_store_set (GTK_TREE_STORE (model), iter, COL_NODE, (ModelNode*) 0,
-                      -1);
-  return FALSE;
-}
-
-/**************************     display functions used by default configurator **********************/
-/**
- * This function writes data in the second column, this data is going to be editable
- * if it is a NODE_ATTRIBUTE
- */
-void
-cell_data_function_col_1_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, 
-                                         GtkTreeModel *model, GtkTreeIter *iter,
-                                         gpointer user_data)
-{
-  ModelTypeid *node;
-  gtk_tree_model_get (model, iter, COL_TYPEID, &node, -1);
-  if (node->type == ModelTypeid::NODE_ATTRIBUTE)
-    {
-      g_object_set (renderer, "text", node->defaultValue.c_str (), (char*) 0);
-      g_object_set (renderer, "editable", TRUE, (char*) 0);
-    }
-  else
-    {
-      g_object_set (renderer, "text", "", (char*) 0);
-      g_object_set (renderer, "editable", FALSE, (char*) 0);
-    }
-}
-/**
- * This function writes the attribute or typeid name in the column 0
- */
-void
-cell_data_function_col_0_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, 
-                                         GtkTreeIter *iter, gpointer user_data)
-{
-  ModelTypeid *node;
-  gtk_tree_model_get (model, iter, COL_NODE, &node, -1);
-  g_object_set (renderer, "editable", FALSE, (char*) 0);
-  switch (node->type)
-    {
-    case ModelTypeid::NODE_TYPEID:
-      g_object_set (renderer, "text", node->tid.GetName ().c_str (), (char*) 0);
-      break;
-    case ModelTypeid::NODE_ATTRIBUTE:
-      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
-      break;
-    }
-}
-
-
-/**
- *  This functions is called whenever there is a change in the value of an attribute
- *  If the input value is ok, it will be updated in the default value and in the
- *  gui, otherwise, it won't be updated in both.
- */
-void
-cell_edited_callback_config_default (GtkCellRendererText *cell, gchar *path_string,
-                                     gchar *new_text, gpointer user_data)
-{
-  GtkTreeModel *model = GTK_TREE_MODEL (user_data);
-  GtkTreeIter iter;
-  gtk_tree_model_get_iter_from_string (model, &iter, path_string);
-  ModelTypeid *node;
-  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
-  NS_ASSERT (node->type == ModelTypeid::NODE_ATTRIBUTE);
-  if (Config::SetDefaultFailSafe (node->tid.GetAttributeFullName (node->index),StringValue (new_text)))
-    {
-      node->defaultValue = new_text;
-    }
-}
-
-/**
- * This function is used to display a tooltip whenever the user puts the mouse
- * over a type ID or an attribute. It will give the type and the possible values of
- * an attribute value and the type of the object for an attribute object or a 
- * typeID object 
- */
-gboolean
-cell_tooltip_callback_config_default (GtkWidget *widget, gint x, gint y,
-                                      gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data)
-{
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  GtkTreeViewColumn * column;
-  if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &x, &y,
-                                          keyboard_tip, &model, 0, &iter))
-    {
-      return FALSE;
-    }
-  if (!gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, y, 0, &column, 0, 0))
-    {
-      return FALSE;
-    }
-  int col = get_col_number_from_tree_view_column (column);
-
-  ModelTypeid *node;
-  gtk_tree_model_get (model, &iter, COL_NODE, &node, -1);
-
-  switch (node->type)
-    {
-    case ModelTypeid::NODE_TYPEID:
-      if (col == 0)
-        {
-          std::string tip = "This object is of type " + node->tid.GetName ();
-          gtk_tooltip_set_text (tooltip, tip.c_str ());
-          return TRUE;
-        }
-      break;
-    case ModelTypeid::NODE_ATTRIBUTE:
-      {
-        uint32_t attrIndex = node->index;
-        if (col == 0)
-          {
-            std::string tip = node->tid.GetAttributeHelp (attrIndex);
-            gtk_tooltip_set_text (tooltip, tip.c_str ());
-          }
-        else
-          {
-            Ptr<const AttributeChecker> checker = node->tid.GetAttributeChecker (attrIndex);
-            std::string tip;
-            tip = "This attribute is of type " + checker->GetValueTypeName ();
-            if (checker->HasUnderlyingTypeInformation ())
-              {
-                tip += " " + checker->GetUnderlyingTypeInformation ();
-              }
-            gtk_tooltip_set_text (tooltip, tip.c_str ());
-          }
-        return TRUE;
-      }
-      break;
-    }
-  return FALSE;
-}
-
-/**
- * This is the action done when the user presses on the save button.
- * It will save the config to a file.
- */
-void
-save_clicked_default (GtkButton *button, gpointer user_data)
-{
-  GtkWidget *parent_window = GTK_WIDGET (user_data);
-  GtkWidget *dialog;
-
-  dialog = gtk_file_chooser_dialog_new ("Save File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_SAVE,
-                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
-                                        GTK_RESPONSE_ACCEPT, (char *) 0);
-  gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog),
-                                                  TRUE);
-
-  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "config.txt");
-
-  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
-    {
-      char *filename;
-
-      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-      RawTextConfigSave config;
-      config.SetFilename (filename);
-      config.Default ();
-      g_free (filename);
-    }
-
-  gtk_widget_destroy (dialog);
-}
-
-/**
- * If the user presses the button load, it will load the config file into memory.
- */
-void
-load_clicked_default (GtkButton *button, gpointer user_data)
-{
-  GtkWidget *parent_window = GTK_WIDGET (user_data);
-  GtkWidget *dialog;
-
-  dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (parent_window), GTK_FILE_CHOOSER_ACTION_OPEN,
-                                        GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
-                                        GTK_RESPONSE_ACCEPT, (char *) 0);
-
-  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
-    {
-      char *filename;
-
-      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-      RawTextConfigLoad config;
-      config.SetFilename (filename);
-      config.Default ();
-    }
-
-  gtk_widget_destroy (dialog);
-}
-
-/**
- * This is the main view opening the widget, getting tooltips and drawing the 
- * tree of attributes
- */
-GtkWidget *
-create_view_config_default (GtkTreeStore *model)
-{
-  GtkTreeViewColumn *col;
-  GtkCellRenderer *renderer;
-  GtkWidget *view;
-
-  view = gtk_tree_view_new ();
-  g_object_set (view, "has-tooltip", TRUE, (char*) 0);
-  g_signal_connect (view, "query-tooltip", (GCallback) cell_tooltip_callback_config_default, 0);
-
-  gtk_tree_view_set_grid_lines (GTK_TREE_VIEW (view), GTK_TREE_VIEW_GRID_LINES_BOTH);
-  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE);
-
-  col = gtk_tree_view_column_new ();
-  gtk_tree_view_column_set_title (col, "Object Attributes");
-  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_tree_view_column_pack_start (col, renderer, TRUE);
-  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_0_config_default, 0, 0);
-  g_object_set (renderer, "editable", FALSE, (char*) 0);
-
-  col = gtk_tree_view_column_new ();
-  gtk_tree_view_column_set_title (col, "Attribute Value");
-  gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
-  renderer = gtk_cell_renderer_text_new ();
-  g_signal_connect (renderer, "edited", (GCallback) cell_edited_callback_config_default, model);
-  gtk_tree_view_column_pack_start (col, renderer, TRUE);
-  gtk_tree_view_column_set_cell_data_func (col, renderer, cell_data_function_col_1_config_default, 0, 0);
-
-  gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (model));
-
-  g_object_unref (model); /* destroy model automatically with view */
-
-  return view;
-}
-
-/**
- * Delete the tree model contents
- */
-gboolean
-clean_model_callback_config_default (GtkTreeModel *model, GtkTreePath *path,
-                                     GtkTreeIter *iter, gpointer data)
-{
-  ModelTypeid *node;
-  gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_TYPEID, &node, -1);
-  delete node;
-  gtk_tree_store_set (GTK_TREE_STORE (model), iter, COL_TYPEID, (ModelTypeid*) 0, -1);
-  return FALSE;
-}
-
-
-}//end ns3 namespace
-
--- a/src/contrib/display-functions.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-#ifndef DISPLAY_FUNCTIONS_H
-#define DISPLAY_FUNCTIONS_H
-
-#include "model-node-creator.h"
-#include "model-typeid-creator.h"
-#include <gtk/gtk.h>
-
-namespace ns3 {
-/**
- * This function includes the name of the attribute or the editable value
- * in the second column 
- */
-void
-cell_data_function_col_1 (GtkTreeViewColumn *col, GtkCellRenderer *renderer,
-                          GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data);
-/**
- * This function includes the name of the object, pointer, vector or vector item
- * in the first column
- */
-void
-cell_data_function_col_0 (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model,
-                          GtkTreeIter *iter, gpointer user_data);
-/**
- * This is the callback called when the value of an attribute is changed
- */
-void
-cell_edited_callback (GtkCellRendererText *cell, gchar *path_string,
-                      gchar *new_text, gpointer user_data);
-/**
- * This function gets the column number 0 or 1 from the mouse
- * click
- */
-int
-get_col_number_from_tree_view_column (GtkTreeViewColumn *col);
-/**
- * This function displays the tooltip for an object, pointer, vector
- * item or an attribute
- */
-gboolean
-cell_tooltip_callback (GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, 
-                       GtkTooltip *tooltip, gpointer user_data);
-/**
- * This is the main view opening the widget, getting tooltips and drawing the 
- * tree of attributes...
- */
-GtkWidget *
-create_view (GtkTreeStore *model);
-/**
- * This is the action done when the user presses on the save button.
- * It will save the config to a file.
- */
-void
-save_clicked (GtkButton *button, gpointer user_data);
-/**
- * If the user presses the button load, it will load the config file into memory.
- */
-void
-load_clicked (GtkButton *button, gpointer user_data);
-/**
- * Exit the window when exit button is pressed
- */
-void
-exit_clicked_callback (GtkButton *button, gpointer user_data);
-/**
- * Exit the application
- */
-gboolean
-delete_event_callback (GtkWidget *widget, GdkEvent *event, gpointer user_data);
-/**
- * Delete the tree model contents
- */
-gboolean
-clean_model_callback (GtkTreeModel *model, GtkTreePath *path,
-                      GtkTreeIter *iter, gpointer data);
-/**************************     display functions used by default configurator **********************/
-/**
- * This function writes data in the second column, this data is going to be editable
- * if it is a NODE_ATTRIBUTE
- */
-void
-cell_data_function_col_1_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, 
-                                         GtkTreeModel *model, GtkTreeIter *iter,
-                                         gpointer user_data);
-/**
- * This function writes the attribute or typeid name in the column 0
- */
-void
-cell_data_function_col_0_config_default (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, 
-                                         GtkTreeIter *iter, gpointer user_data);
-/**
- * This is the action done when the user presses on the save button.
- * It will save the config to a file.
- */
-void
-save_clicked_default (GtkButton *button, gpointer user_data);
-/**
- * If the user presses the button load, it will load the config file into memory.
- */
-void
-load_clicked_default (GtkButton *button, gpointer user_data);
-/**
- *  This functions is called whenever there is a change in the value of an attribute
- *  If the input value is ok, it will be updated in the default value and in the
- *  gui, otherwise, it won't be updated in both.
- */
-void
-cell_edited_callback_config_default (GtkCellRendererText *cell, gchar *path_string,
-                                     gchar *new_text, gpointer user_data);
-/**
- * This function is used to display a tooltip whenever the user puts the mouse
- * over a type ID or an attribute. It will give the type and the possible values of
- * an attribute value and the type of the object for an attribute object or a 
- * typeID object 
- */
-gboolean
-cell_tooltip_callback_config_default (GtkWidget *widget, gint x, gint y,
-                                      gboolean keyboard_tip, GtkTooltip *tooltip, gpointer user_data);
-/**
- * This is the main view opening the widget, getting tooltips and drawing the 
- * tree of attributes
- */
-GtkWidget *
-create_view_config_default (GtkTreeStore *model);
-/**
- * Delete the tree model contents
- */
-gboolean
-clean_model_callback_config_default (GtkTreeModel *model, GtkTreePath *path,
-                                     GtkTreeIter *iter, gpointer data);
-}//end namespace ns3
-
-#endif
--- a/src/contrib/event-garbage-collector.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2007 INESC Porto
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
- */
-#include "event-garbage-collector.h"
-
-#define CLEANUP_CHUNK_MIN_SIZE 8
-#define CLEANUP_CHUNK_MAX_SIZE 128
-
-
-namespace ns3 {
-
-
-EventGarbageCollector::EventGarbageCollector () :
-  m_nextCleanupSize (CLEANUP_CHUNK_MIN_SIZE)
-{}
-
-void
-EventGarbageCollector::Track (EventId event)
-{
-  m_events.insert (event);
-  if (m_events.size () >= m_nextCleanupSize)
-    Cleanup ();
-}
-
-void
-EventGarbageCollector::Grow ()
-{
-  m_nextCleanupSize += (m_nextCleanupSize < CLEANUP_CHUNK_MAX_SIZE?
-                        m_nextCleanupSize : CLEANUP_CHUNK_MAX_SIZE);
-}
-
-void
-EventGarbageCollector::Shrink ()
-{
-  while (m_nextCleanupSize > m_events.size ())
-    m_nextCleanupSize >>= 1;
-  Grow ();
-}
-
-// Called when a new event was added and the cleanup limit was exceeded in consequence.
-void
-EventGarbageCollector::Cleanup ()
-{
-  for (EventList::iterator iter = m_events.begin (); iter != m_events.end ();)
-    {
-      if ((*iter).IsExpired ())
-        {
-          m_events.erase (iter++);
-        }
-      else
-        break; // EventIds are sorted by timestamp => further events are not expired for sure
-    }
-
-  // If after cleanup we are still over the limit, increase the limit.
-  if (m_events.size () >= m_nextCleanupSize)
-    Grow ();
-  else
-    Shrink ();
-}
-
-
-EventGarbageCollector::~EventGarbageCollector ()
-{
-  for (EventList::iterator event = m_events.begin ();
-       event != m_events.end (); event++)
-    {
-      Simulator::Cancel (*event);
-    }
-}
-
-} // namespace ns3
-
-
-#include "ns3/test.h"
-
-namespace ns3 {
-
-class EventGarbageCollectorTestCase : public TestCase
-{
-  int m_counter;
-  EventGarbageCollector *m_events;
-
-  void EventGarbageCollectorCallback ();
-
-public:
-
-  EventGarbageCollectorTestCase ();
-  virtual ~EventGarbageCollectorTestCase ();
-  virtual void DoRun (void);
-};
-
-EventGarbageCollectorTestCase::EventGarbageCollectorTestCase ()
-  : TestCase ("EventGarbageCollector"), m_counter (0), m_events (0)
-{}
-
-EventGarbageCollectorTestCase::~EventGarbageCollectorTestCase ()
-{}
-
-void
-EventGarbageCollectorTestCase::EventGarbageCollectorCallback ()
-{
-  m_counter++;
-  if (m_counter == 50)
-    {
-      // this should cause the remaining (50) events to be cancelled
-      delete m_events;
-      m_events = 0;
-    }
-}
-
-void EventGarbageCollectorTestCase::DoRun (void)
-{
-  m_events = new EventGarbageCollector ();
-
-  for (int n = 0; n < 100; n++)
-    {
-      m_events->Track (Simulator::Schedule
-                       (Simulator::Now (),
-                        &EventGarbageCollectorTestCase::EventGarbageCollectorCallback,
-                        this));
-    }
-  Simulator::Run ();
-  NS_TEST_EXPECT_MSG_EQ (m_events, 0, "");
-  NS_TEST_EXPECT_MSG_EQ (m_counter, 50, "");
-  Simulator::Destroy ();
-}
-
-static class EventGarbageCollectorTestSuite : public TestSuite
-{
-public:
-  EventGarbageCollectorTestSuite ()
-    : TestSuite ("event-garbage-collector", UNIT) 
-  {
-    AddTestCase (new EventGarbageCollectorTestCase ());
-  }
-} g_eventGarbageCollectorTests;
-    
-}
-
--- a/src/contrib/event-garbage-collector.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2007 INESC Porto
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
- */
-#ifndef EVENT_GARBAGE_COLLECTOR_H
-#define EVENT_GARBAGE_COLLECTOR_H
-
-#include <set>
-#include "ns3/event-id.h"
-#include "ns3/simulator.h"
-
-namespace ns3 {
-
-/**
- * \brief An object that tracks scheduled events and automatically
- * cancels them when it is destroyed.  It is useful in situations
- * where multiple instances of the same type of event can
- * simultaneously be scheduled, and when the events should be limited
- * to the lifetime of a container object.
- */
-class EventGarbageCollector
-{
-public:
-
-  EventGarbageCollector ();
-
-  /**
-   * \brief Tracks a new event
-   */
-  void Track (EventId event);
-
-  ~EventGarbageCollector ();
-
-private:
-
-  struct EventIdLessThanTs
-  {
-    bool operator () (const EventId &a, const EventId &b) const
-    {
-      return (a.GetTs () < b.GetTs ());
-    }
-  };
-
-  typedef std::multiset<EventId, EventIdLessThanTs> EventList;
-
-  EventList::size_type m_nextCleanupSize;
-  EventList m_events;
-
-  void Cleanup ();
-  void Grow ();
-  void Shrink ();
-};
-
-}; // namespace ns3
-
-#endif /* EVENT_GARBAGE_COLLECTOR_H */
--- a/src/contrib/file-config.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#include "file-config.h"
-
-namespace ns3 {
-
-FileConfig::~FileConfig ()
-{}
-
-NoneFileConfig::NoneFileConfig ()
-{}
-NoneFileConfig::~NoneFileConfig ()
-{}
-void 
-NoneFileConfig::SetFilename (std::string filename)
-{}
-void 
-NoneFileConfig::Default (void)
-{}
-void 
-NoneFileConfig::Global (void)
-{}
-void 
-NoneFileConfig::Attributes (void)
-{}
-
-} // namespace ns3
--- a/src/contrib/file-config.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-#ifndef FILE_CONFIG_H
-#define FILE_CONFIG_H
-
-#include <string>
-
-namespace ns3 {
-
-class FileConfig
-{
-public:
-  virtual ~FileConfig ();
-  virtual void SetFilename (std::string filename) = 0;
-  virtual void Default (void) = 0;
-  virtual void Global (void) = 0;
-  virtual void Attributes (void) = 0;
-};
-
-class NoneFileConfig : public FileConfig
-{
-public:
-  NoneFileConfig ();
-  virtual ~NoneFileConfig ();
-  virtual void SetFilename (std::string filename);
-  virtual void Default (void);
-  virtual void Global (void);
-  virtual void Attributes (void);
-};
-
-} // namespace ns3
-
-#endif /* FILE_CONFIG_H */
--- a/src/contrib/flow-id-tag.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2008 INRIA
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-#include "flow-id-tag.h"
-
-namespace ns3 {
-
-NS_OBJECT_ENSURE_REGISTERED (FlowIdTag);
-
-TypeId 
-FlowIdTag::GetTypeId (void)
-{
-  static TypeId tid = TypeId ("ns3::FlowIdTag")
-    .SetParent<Tag> ()
-    .AddConstructor<FlowIdTag> ()
-    ;
-  return tid;
-}
-TypeId 
-FlowIdTag::GetInstanceTypeId (void) const
-{
-  return GetTypeId ();
-}
-uint32_t 
-FlowIdTag::GetSerializedSize (void) const
-{
-  return 4;
-}
-void 
-FlowIdTag::Serialize (TagBuffer buf) const
-{
-  buf.WriteU32 (m_flowId);
-}
-void 
-FlowIdTag::Deserialize (TagBuffer buf)
-{
-  m_flowId = buf.ReadU32 ();
-}
-void 
-FlowIdTag::Print (std::ostream &os) const
-{
-  os << "FlowId=" << m_flowId;
-}
-FlowIdTag::FlowIdTag ()
-  : Tag () 
-{}
-
-FlowIdTag::FlowIdTag (uint32_t id)
-  : Tag (),
-    m_flowId (id)
-{}
-
-void
-FlowIdTag::SetFlowId (uint32_t id)
-{
-  m_flowId = id;
-}
-uint32_t
-FlowIdTag::GetFlowId (void) const
-{
-  return m_flowId;
-}
-
-uint32_t 
-FlowIdTag::AllocateFlowId (void)
-{
-  static uint32_t nextFlowId = 1;
-  uint32_t flowId = nextFlowId;
-  nextFlowId++;
-  return flowId;
-}
-
-} // namespace ns3
-
--- a/src/contrib/flow-id-tag.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2008 INRIA
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-#ifndef FLOW_ID_TAG_H
-#define FLOW_ID_TAG_H
-
-#include "ns3/tag.h"
-
-namespace ns3 {
-
-class FlowIdTag : public Tag
-{
-public:
-  static TypeId GetTypeId (void);
-  virtual TypeId GetInstanceTypeId (void) const;
-  virtual uint32_t GetSerializedSize (void) const;
-  virtual void Serialize (TagBuffer buf) const;
-  virtual void Deserialize (TagBuffer buf);
-  virtual void Print (std::ostream &os) const;
-  FlowIdTag ();
-  FlowIdTag (uint32_t flowId);
-  void SetFlowId (uint32_t flowId);
-  uint32_t GetFlowId (void) const;
-  static uint32_t AllocateFlowId (void);
-private:
-  uint32_t m_flowId;
-};
-
-} // namespace ns3
-
-#endif /* FLOW_ID_TAG_H */
--- a/src/contrib/gnuplot.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,733 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2007 INRIA, 2008 Timo Bingmann
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Original Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- * Enhancements: Timo Bingmann <timo.bingmann@student.kit.edu>
- */
-#include "gnuplot.h"
-#include "ns3/assert.h"
-#include <ostream>
-#include <stdexcept>
-
-namespace ns3 {
-
-// --- GnuplotDataset::Data ------------------------------------------------ //
-
-struct GnuplotDataset::Data
-{
-  // *** Data Variables ***
-
-  unsigned int m_references;
-
-  std::string m_title;
-  std::string m_extra;
-
-  /**
-   * Initializes the reference counter to 1 and sets m_title and m_extra.
-   */
-  Data(const std::string& title);
-
-  /// Required.
-  virtual ~Data();
-
-  /**
-   * Returns "plot" or "splot".
-   */
-  virtual std::string GetCommand() const = 0;
-
-  /**
-   * Prints the plot description used as argument to (s)plot. Either the
-   * function expression or a datafile description. Should include m_title and
-   * m_extra in the output.
-   */
-  virtual void PrintExpression(std::ostream &os) const = 0;
-    
-  /**
-   * Print the inline data file contents trailing the plot command. Empty for
-   * functions.
-   */
-  virtual void PrintDatafile(std::ostream &os) const = 0;
-};
-
-GnuplotDataset::Data::Data(const std::string& title)
-  : m_references(1),
-    m_title(title),
-    m_extra(m_defaultExtra)
-{
-}
-
-GnuplotDataset::Data::~Data()
-{
-}
-
-// --- GnuplotDataset ------------------------------------------------------ //
-
-std::string GnuplotDataset::m_defaultExtra = "";
-
-GnuplotDataset::GnuplotDataset (struct Data* data)
-  : m_data(data)
-{
-}
-
-GnuplotDataset::GnuplotDataset (const GnuplotDataset& original)
-  : m_data(original.m_data)
-{
-  ++m_data->m_references;
-}
-
-GnuplotDataset::~GnuplotDataset()
-{
-  if (--m_data->m_references == 0)
-    delete m_data;
-}
-
-GnuplotDataset& GnuplotDataset::operator= (const GnuplotDataset& original)
-{
-  if (this != &original)
-    {
-      if (--m_data->m_references == 0)
-        delete m_data;
-
-      m_data = original.m_data;
-      ++m_data->m_references;
-    }
-  return *this;
-}
-
-void
-GnuplotDataset::SetTitle (const std::string& title)
-{
-  m_data->m_title = title;
-}
-
-void
-GnuplotDataset::SetDefaultExtra (const std::string& extra)
-{
-  m_defaultExtra = extra;
-}
-void
-GnuplotDataset::SetExtra (const std::string& extra)
-{
-  m_data->m_extra = extra;
-}
-
-// --- Gnuplot2dDataset::Data2d -------------------------------------------- //
-
-struct Gnuplot2dDataset::Data2d : public GnuplotDataset::Data
-{
-  // *** Data Variables ***
-    
-  enum Style  m_style;
-  enum ErrorBars m_errorBars;
-
-  PointSet    m_pointset;
-
-  /**
-   * Initializes with the values from m_defaultStyle and m_defaultErrorBars.
-   */
-  Data2d(const std::string& title);
-
-  virtual std::string GetCommand() const;
-  virtual void PrintExpression(std::ostream &os) const;
-  virtual void PrintDatafile(std::ostream &os) const;
-};
-
-Gnuplot2dDataset::Data2d::Data2d(const std::string& title)
-  : Data(title),
-    m_style(m_defaultStyle),
-    m_errorBars(m_defaultErrorBars)
-{
-}
-
-std::string
-Gnuplot2dDataset::Data2d::GetCommand() const
-{
-  return "plot";
-}
-
-void
-Gnuplot2dDataset::Data2d::PrintExpression(std::ostream &os) const
-{
-  os << "'-' ";
-
-  if (m_title.size())
-    os << " title '" << m_title << "'";
-
-  switch (m_style) {
-  case LINES:
-    os << " with lines";
-    break;
-  case POINTS:
-    switch (m_errorBars)
-      {
-      case NONE:
-        os << " with points";
-        break;
-      case X:
-        os << " with xerrorbars";
-        break;
-      case Y:
-        os << " with yerrorbars";
-        break;
-      case XY:
-        os << " with xyerrorbars";
-        break;
-      }
-    break;
-  case LINES_POINTS:
-    switch (m_errorBars)
-      {
-      case NONE:
-        os << " with linespoints";
-        break;
-      case X:
-        os << " with errorlines";
-        break;
-      case Y:
-        os << " with yerrorlines";
-        break;
-      case XY:
-        os << " with xyerrorlines";
-        break;
-      }
-    break;
-  case DOTS:
-    os << " with dots";
-    break;
-  case IMPULSES:
-    os << " with impulses";
-    break;
-  case STEPS:
-    os << " with steps";
-    break;
-  case FSTEPS:
-    os << " with fsteps";
-    break;
-  case HISTEPS:
-    os << " with histeps";
-    break;
-  }
-
-  if (m_extra.size())
-    os << " " << m_extra;
-}
-
-void
-Gnuplot2dDataset::Data2d::PrintDatafile(std::ostream &os) const
-{
-  for (PointSet::const_iterator i = m_pointset.begin ();
-       i != m_pointset.end (); ++i)
-    {
-      if (i->empty) {
-        os << std::endl;
-        continue;
-      }
-
-      switch (m_errorBars) {
-      case NONE:
-        os << i->x << " " << i->y << std::endl;
-        break;
-      case X:
-        os << i->x << " " << i->y << " " << i->dx << std::endl;
-        break;
-      case Y:
-        os << i->x << " " << i->y << " " << i->dy << std::endl;
-        break;
-      case XY:
-        os << i->x << " " << i->y << " " << i->dx << " " << i->dy << std::endl;
-        break;
-      }
-    }
-  os << "e" << std::endl;
-}
-
-// --- Gnuplot2dDataset ---------------------------------------------------- //
-
-enum Gnuplot2dDataset::Style Gnuplot2dDataset::m_defaultStyle = LINES;
-enum Gnuplot2dDataset::ErrorBars Gnuplot2dDataset::m_defaultErrorBars = NONE;
-
-Gnuplot2dDataset::Gnuplot2dDataset (const std::string& title)
-  : GnuplotDataset( new Data2d(title) )
-{
-}
-
-void
-Gnuplot2dDataset::SetDefaultStyle (enum Style style)
-{
-  m_defaultStyle = style;
-}
-void
-Gnuplot2dDataset::SetStyle (enum Style style)
-{
-  reinterpret_cast<Data2d*>(m_data)->m_style = style;
-}
-
-void
-Gnuplot2dDataset::SetDefaultErrorBars (enum ErrorBars errorBars)
-{
-  m_defaultErrorBars = errorBars;
-}
-void
-Gnuplot2dDataset::SetErrorBars (enum ErrorBars errorBars)
-{
-  reinterpret_cast<Data2d*>(m_data)->m_errorBars = errorBars;
-}
-
-void 
-Gnuplot2dDataset::Add (double x, double y)
-{
-  NS_ASSERT (reinterpret_cast<Data2d*>(m_data)->m_errorBars == NONE);
-
-  struct Point data;
-  data.empty = false;
-  data.x = x;
-  data.y = y;
-  data.dx = 0.0;
-  data.dy = 0.0;
-  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
-}
-
-void 
-Gnuplot2dDataset::Add (double x, double y, double errorDelta)
-{
-  NS_ASSERT ( reinterpret_cast<Data2d*>(m_data)->m_errorBars == X ||
-              reinterpret_cast<Data2d*>(m_data)->m_errorBars == Y );
-
-  struct Point data;
-  data.empty = false;
-  data.x = x;
-  data.y = y;
-  data.dx = errorDelta;
-  data.dy = errorDelta;
-  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
-}
-
-void 
-Gnuplot2dDataset::Add (double x, double y, double minY, double maxY)
-{
-  NS_ASSERT ( reinterpret_cast<Data2d*>(m_data)->m_errorBars == X ||
-              reinterpret_cast<Data2d*>(m_data)->m_errorBars == Y );
-
-  struct Point data;
-  data.empty = false;
-  data.x = x;
-  data.y = y;
-  data.dx = minY;
-  data.dy = maxY;
-  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
-}
-
-void
-Gnuplot2dDataset::AddEmptyLine()
-{
-  struct Point data;
-  data.empty = true;
-  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
-}
-
-// --- Gnuplot2dFunction::Function2d --------------------------------------- //
-
-struct Gnuplot2dFunction::Function2d : public GnuplotDataset::Data
-{
-  // *** Data Variables ***
-
-  std::string m_function;
-
-  /**
-   * Initializes with the function and title.
-   */
-  Function2d(const std::string& title, const std::string& function);
-
-  virtual std::string GetCommand() const;
-  virtual void PrintExpression(std::ostream &os) const;
-  virtual void PrintDatafile(std::ostream &os) const;
-};
-
-Gnuplot2dFunction::Function2d::Function2d(const std::string& title, const std::string& function)
-  : Data(title),
-    m_function(function)
-{
-}
-
-std::string
-Gnuplot2dFunction::Function2d::GetCommand() const
-{
-  return "plot";
-}
-
-void
-Gnuplot2dFunction::Function2d::PrintExpression(std::ostream &os) const
-{
-  os << m_function;
-
-  if (m_title.size())
-    os << " title '" << m_title << "'";
-
-  if (m_extra.size())
-    os << " " << m_extra;
-}
-
-void
-Gnuplot2dFunction::Function2d::PrintDatafile(std::ostream &os) const
-{
-}
-
-// --- Gnuplot2dFunction --------------------------------------------------- //
-
-Gnuplot2dFunction::Gnuplot2dFunction (const std::string& title, const std::string& function)
-  : GnuplotDataset( new Function2d(title, function) )
-{
-}
-
-void
-Gnuplot2dFunction::SetFunction (const std::string& function)
-{
-  reinterpret_cast<Function2d*>(m_data)->m_function = function;
-}
-
-// --- Gnuplot3dDataset::Data3d -------------------------------------------- //
-
-struct Gnuplot3dDataset::Data3d : public GnuplotDataset::Data
-{
-  // *** Data Variables ***
-    
-  std::string   m_style;
-
-  PointSet      m_pointset;
-
-  /**
-   * Initializes with value from m_defaultStyle.
-   */
-  Data3d(const std::string& title);
-
-  virtual std::string GetCommand() const;
-  virtual void PrintExpression(std::ostream &os) const;
-  virtual void PrintDatafile(std::ostream &os) const;
-};
-
-Gnuplot3dDataset::Data3d::Data3d(const std::string& title)
-  : Data(title),
-    m_style(m_defaultStyle)
-{
-}
-
-std::string
-Gnuplot3dDataset::Data3d::GetCommand() const
-{
-  return "splot";
-}
-
-void
-Gnuplot3dDataset::Data3d::PrintExpression(std::ostream &os) const
-{
-  os << "'-' ";
-
-  if (m_style.size())
-    os << " " << m_style;
-
-  if (m_title.size())
-    os << " title '" << m_title << "'";
-
-  if (m_extra.size())
-    os << " " << m_extra;
-}
-
-void
-Gnuplot3dDataset::Data3d::PrintDatafile(std::ostream &os) const
-{
-  for (PointSet::const_iterator i = m_pointset.begin ();
-       i != m_pointset.end (); ++i)
-    {
-      if (i->empty) {
-        os << std::endl;
-        continue;
-      }
-
-      os << i->x << " " << i->y << " " << i->z << std::endl;
-    }
-  os << "e" << std::endl;
-}
-
-// --- Gnuplot3dDataset ---------------------------------------------------- //
-
-std::string Gnuplot3dDataset::m_defaultStyle = "";
-
-Gnuplot3dDataset::Gnuplot3dDataset (const std::string& title)
-  : GnuplotDataset( new Data3d(title) )
-{
-}
-
-void
-Gnuplot3dDataset::SetDefaultStyle (const std::string& style)
-{
-  m_defaultStyle = style;
-}
-void
-Gnuplot3dDataset::SetStyle (const std::string& style)
-{
-  reinterpret_cast<Data3d*>(m_data)->m_style = style;
-}
-
-void 
-Gnuplot3dDataset::Add (double x, double y, double z)
-{
-  struct Point data;
-  data.empty = false;
-  data.x = x;
-  data.y = y;
-  data.z = z;
-  reinterpret_cast<Data3d*>(m_data)->m_pointset.push_back (data);
-}
-
-void
-Gnuplot3dDataset::AddEmptyLine()
-{
-  struct Point data;
-  data.empty = true;
-  reinterpret_cast<Data3d*>(m_data)->m_pointset.push_back (data);
-}
-
-// --- Gnuplot3dFunction::Function3d --------------------------------------- //
-
-struct Gnuplot3dFunction::Function3d : public GnuplotDataset::Data
-{
-  // *** Data Variables ***
-
-  std::string m_function;
-
-  /**
-   * Initializes with the function and title.
-   */
-  Function3d(const std::string& title, const std::string& function);
-
-  virtual std::string GetCommand() const;
-  virtual void PrintExpression(std::ostream &os) const;
-  virtual void PrintDatafile(std::ostream &os) const;
-};
-
-Gnuplot3dFunction::Function3d::Function3d(const std::string& title, const std::string& function)
-  : Data(title),
-    m_function(function)
-{
-}
-
-std::string
-Gnuplot3dFunction::Function3d::GetCommand() const
-{
-  return "splot";
-}
-
-void
-Gnuplot3dFunction::Function3d::PrintExpression(std::ostream &os) const
-{
-  os << m_function;
-
-  if (m_title.size())
-    os << " title '" << m_title << "'";
-
-  if (m_extra.size())
-    os << " " << m_extra;
-}
-
-void
-Gnuplot3dFunction::Function3d::PrintDatafile(std::ostream &os) const
-{
-}
-
-// --- Gnuplot3dFunction --------------------------------------------------- //
-
-Gnuplot3dFunction::Gnuplot3dFunction (const std::string& title, const std::string& function)
-  : GnuplotDataset( new Function3d(title, function) )
-{
-}
-
-void
-Gnuplot3dFunction::SetFunction (const std::string& function)
-{
-  reinterpret_cast<Function3d*>(m_data)->m_function = function;
-}
-
-// ------------------------------------------------------------------------- //
-
-Gnuplot::Gnuplot (const std::string& outputFilename, const std::string& title)
-  : m_outputFilename(outputFilename),
-    m_terminal( DetectTerminal(outputFilename) ),
-    m_title(title)
-{
-}
-
-std::string Gnuplot::DetectTerminal (const std::string& filename)
-{
-  std::string::size_type dotpos = filename.rfind('.');
-  if (dotpos == std::string::npos) return "";
-
-  if (filename.substr(dotpos) == ".png") {
-    return "png";
-  }
-  else if (filename.substr(dotpos) == ".pdf") {
-    return "pdf";
-  }
-
-  return "";
-}
-
-void
-Gnuplot::SetTerminal (const std::string& terminal)
-{
-  m_terminal = terminal;
-}
-
-void
-Gnuplot::SetTitle (const std::string& title)
-{
-  m_title = title;
-}
-
-void 
-Gnuplot::SetLegend (const std::string& xLegend, const std::string& yLegend)
-{
-  m_xLegend = xLegend;
-  m_yLegend = yLegend;
-}
-
-void
-Gnuplot::SetExtra (const std::string& extra)
-{
-  m_extra = extra;
-}
-
-void
-Gnuplot::AppendExtra (const std::string& extra)
-{
-  m_extra += "\n";
-  m_extra += extra;
-}
-
-void 
-Gnuplot::AddDataset (const GnuplotDataset& dataset)
-{
-  m_datasets.push_back (dataset);
-}
-
-void
-Gnuplot::GenerateOutput (std::ostream &os) const
-{
-  if (m_terminal.size())
-    os << "set terminal " << m_terminal << std::endl;
-
-  if (m_outputFilename.size())
-    os << "set output '" << m_outputFilename << "'" << std::endl;
-
-  if (m_title.size())
-    os << "set title '" << m_title << "'" << std::endl;
-  
-  if (m_xLegend.size())
-    os << "set xlabel '" << m_xLegend << "'" << std::endl;
-
-  if (m_yLegend.size())
-    os << "set ylabel '" << m_yLegend << "'" << std::endl;
-
-  if (m_extra.size())
-    os << m_extra << std::endl;
-
-  if (m_datasets.empty())
-    return;
-
-  // Determine the GetCommand() values of all datasets included. Check that all
-  // are equal and print the command.
-
-  std::string command = m_datasets.begin()->m_data->GetCommand();
-
-  for (Datasets::const_iterator i = m_datasets.begin () + 1;
-       i != m_datasets.end (); ++i)
-    {
-      NS_ASSERT_MSG(command == i->m_data->GetCommand(),
-                    "Cannot mix 'plot' and 'splot' GnuplotDatasets.");
-    }
-
-  os << command << " ";
-
-  // Print all dataset expressions
-
-  for (Datasets::const_iterator i = m_datasets.begin (); i != m_datasets.end ();)
-    {
-      i->m_data->PrintExpression(os);
-
-      i++;
-
-      if (i != m_datasets.end ())
-	{
-	  os << ", ";
-	}
-    }
-  os << std::endl;
-
-  // followed by the inline datafile.
-
-  for (Datasets::const_iterator i = m_datasets.begin (); i != m_datasets.end (); i++)
-    {
-      i->m_data->PrintDatafile(os);
-    }
-}
-
-// ------------------------------------------------------------------------- //
-
-GnuplotCollection::GnuplotCollection (const std::string& outputFilename)
-  : m_outputFilename(outputFilename),
-    m_terminal( Gnuplot::DetectTerminal(outputFilename) )
-{
-}
-
-void
-GnuplotCollection::SetTerminal (const std::string& terminal)
-{
-  m_terminal = terminal;
-}
-
-void
-GnuplotCollection::AddPlot (const Gnuplot& plot)
-{
-  m_plots.push_back (plot);
-}
-
-Gnuplot&
-GnuplotCollection::GetPlot(unsigned int id)
-{
-  if (id >= m_plots.size())
-    throw(std::range_error("Gnuplot id is out of range"));
-  else
-    return m_plots[id];
-}
-
-void
-GnuplotCollection::GenerateOutput (std::ostream &os) const
-{
-  if (m_terminal.size())
-    os << "set terminal " << m_terminal << std::endl;
-
-  if (m_outputFilename.size())
-    os << "set output '" << m_outputFilename << "'" << std::endl;
-
-  for (Plots::const_iterator i = m_plots.begin (); i != m_plots.end (); ++i)
-    {
-      i->GenerateOutput (os);
-    }
-}
-
-// ------------------------------------------------------------------------- //
-
-} // namespace ns3
--- a/src/contrib/gnuplot.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,460 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2007 INRIA, 2008 Timo Bingmann
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Original Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- * Enhancements: Timo Bingmann <timo.bingmann@student.kit.edu>
- */
-#ifndef GNUPLOT_H
-#define GNUPLOT_H
-
-#include <string>
-#include <vector>
-#include <utility>
-
-namespace ns3 {
-
-/**
- * \brief Abstract class to store a plot line to be used by ns3::Gnuplot.
- *
- * This class contains a reference counted data object in m_data. The data
- * object contains different structs derived from struct Data by subclasses.
- */
-class GnuplotDataset
-{
-public:
-
-  /**
-   * Reference-counting copy constructor.
-   */
-  GnuplotDataset (const GnuplotDataset& original);
-
-  /**
-   * Reference-counting destructor.
-   */
-  ~GnuplotDataset();
-
-  /**
-   * Reference-counting assignment operator.
-   */
-  GnuplotDataset& operator= (const GnuplotDataset& original);
-
-  /**
-   * \brief Change line title.
-   * \param title the new title string to use for this dataset.
-   */
-  void SetTitle (const std::string& title);
-
-  /**
-   * \brief Change extra formatting style parameters for newly created objects.
-   * \param extra       extra formatting
-   */
-  static void SetDefaultExtra (const std::string& extra);
-
-  /**
-   * \brief Add extra formatting parameters to this dataset.
-   * \param extra       extra formatting
-   */
-  void SetExtra (const std::string& extra);
-
-protected:
-
-  /// Friend because it accesses m_data and it's virtual functions directly in
-  /// GenerateOutput().
-  friend class Gnuplot;
-
-  /**
-   * \brief Extra gnuplot parameters set on every newly created dataset.
-   */
-  static std::string m_defaultExtra;
-
-  /**
-   * \brief Derived classes subclass this struct and add their own data fields.
-   */
-  struct Data;
-
-  /**
-   * Called by constructors of derived classes.
-   * \param data the reference counted data object representing this dataset.
-   */
-  GnuplotDataset (struct Data* data);
-
-  /**
-   * Reference counted data object.
-   */
-  struct Data*  m_data;
-};
-
-/**
- * \brief Class to represent a 2D points plot. Set the line or points style
- * using SetStyle() and set points using Add().
- */
-class Gnuplot2dDataset : public GnuplotDataset
-{
-public:
-  /**
-   * The plotting style to use for this dataset.
-   */
-  enum Style {
-    LINES,
-    POINTS,
-    LINES_POINTS,
-    DOTS,
-    IMPULSES,
-    STEPS,
-    FSTEPS,
-    HISTEPS,
-  };
-
-  /**
-   * Whether errorbars should be used for this dataset.
-   */
-  enum ErrorBars {
-    NONE,
-    X,
-    Y,
-    XY
-  };
-
-  /**
-   * \param title the title to be associated to this dataset.
-   *
-   * Create an empty dataset. Usually, the dataset's title is 
-   * displayed in the legend box.
-   */
-  Gnuplot2dDataset (const std::string& title = "Untitled");
-
-  /**
-   * Change default style for all newly created objects.
-   * \param style the style of plotting to use for newly created datasets.
-   */
-  static void SetDefaultStyle (enum Style style);
-
-  /**
-   * \param style the style of plotting to use for this dataset.
-   */
-  void SetStyle (enum Style style);
-
-  /**
-   * Change default errorbars style for all newly created objects.
-   * \param errorBars the style of errorbars to use for newly created datasets.
-   */
-  static void SetDefaultErrorBars (enum ErrorBars errorBars);
-
-  /**
-   * \param errorBars the style of errorbars to display.
-   *
-   * If you use any style other than none, you need
-   * to make sure you store the delta information in 
-   * this dataset with the right GnuplotDataset::Add 
-   * method.
-   */
-  void SetErrorBars (enum ErrorBars errorBars);
-
-  /**
-   * \param x x coord to new data point
-   * \param y y coord to new data point
-   *
-   * Use this method with error bar style NONE.
-   */
-  void Add (double x, double y);
-
-  /**
-   * \param x x coord to new data point
-   * \param y y coord to new data point
-   * \param errorDelta data point error range.
-   *
-   * Use this method with error bar style X or Y.
-   */
-  void Add (double x, double y, double errorDelta);
-
-  /**
-   * \param x x coord to new data point
-   * \param y y coord to new data point
-   * \param minY minimum error data point
-   * \param maxY maximum error data point
-   *
-   * Use this method with error bar style X or Y.
-   */
-  void Add (double x, double y, double minY, double maxY);
-
-  /**
-   * Add an empty line in the data output sequence. Empty lines in the plot
-   * data break continuous lines and do other things in the output.
-   */
-  void AddEmptyLine();
-
-private:
-
-  struct Point {
-    bool empty;
-    double x;
-    double y;
-    double dx;
-    double dy;
-  };
-
-  typedef std::vector<struct Point> PointSet;
-
-  static enum Style m_defaultStyle;
-  static enum ErrorBars m_defaultErrorBars;
-
-  /// Forward declaration of the internal data class.
-  struct Data2d;
-};
-
-/**
- * \brief Class to represent a 2D function expression plot.
- *
- * Since the function expression is not escaped, styles and extras could just
- * as well be included in the expression string.
- */
-class Gnuplot2dFunction : public GnuplotDataset
-{
-public:
-  /**
-   * \param title the title to be associated to this dataset.
-   * \param function function to plot
-   *
-   * Create an function dataset. Usually, the dataset's title is displayed in
-   * the legend box.
-   */
-  Gnuplot2dFunction (const std::string& title = "Untitled", const std::string& function = "");
-
-  /**
-   * \param function new function string to set
-   */
-  void SetFunction (const std::string& function);
-
-private:
-
-  /// Forward declaration of the internal data class.
-  struct Function2d;
-};
-
-/**
- * \brief Class to represent a 3D points plot. Set the line or points style
- * using SetStyle() and set points using Add().
- */
-class Gnuplot3dDataset : public GnuplotDataset
-{
-public:
-  /**
-   * \param title the title to be associated to this dataset.
-   *
-   * Create an empty dataset. Usually, the dataset's title is 
-   * displayed in the legend box.
-   */
-  Gnuplot3dDataset (const std::string& title = "Untitled");
-
-  /**
-   * Change default style for all newly created objects.
-   * \param style the style of plotting to use for newly created datasets.
-   */
-  static void SetDefaultStyle (const std::string& style);
-
-  /**
-   * \param style the style of plotting to use for this dataset.
-   */
-  void SetStyle (const std::string& style);
-
-  /**
-   * \param x x coord to new data point
-   * \param y y coord to new data point
-   * \param z z coord to new data point
-   *
-   * Use this method to add a new 3D point
-   */
-  void Add (double x, double y, double z);
-
-  /**
-   * Add an empty line in the data output sequence. Empty lines in the plot
-   * data break continuous lines and do other things in the output.
-   */
-  void AddEmptyLine();
-
-private:
-
-  struct Point {
-    bool empty;
-    double x, y, z;
-  };
-
-  typedef std::vector<struct Point> PointSet;
-
-  static std::string m_defaultStyle;
-
-  /// Forward declaration of the internal data class.
-  struct Data3d;
-};
-
-/**
- * \brief Class to represent a 3D function expression plot.
- *
- * Since the function expression is not escaped, styles and extras could just as
- * well be included in the expression string. The only difference to
- * Gnuplot2dFunction is the splot command string.
- */
-class Gnuplot3dFunction : public GnuplotDataset
-{
-public:
-  /**
-   * \param title the title to be associated to this dataset.
-   * \param function function to plot
-   *
-   * Create an function dataset. Usually, the dataset's title is displayed in
-   * the legend box.
-   */
-  Gnuplot3dFunction (const std::string& title = "Untitled", const std::string& function = "");
-
-  /**
-   * \param function new function string to set
-   */
-  void SetFunction (const std::string& function);
-
-private:
-
-  /// Forward declaration of the internal data class.
-  struct Function3d;
-};
-
-/**
- * \brief a simple class to generate gnuplot-ready plotting commands
- *        from a set of datasets.
- *
- * This class really represents a single graph on which multiple datasets
- * can be plotted.
- */
-class Gnuplot
-{
-public:
-  /**
-   * \param outputFilename the name of the file where the rendering of the
-   *        graph will be generated if you feed the command stream output by
-   *        Gnuplot::GenerateOutput to the gnuplot program.
-   * \param title title line of the plot page 
-   */
-  Gnuplot (const std::string& outputFilename="", const std::string& title = "");
-
-  /**
-   * Crude attempt to auto-detect the correct terminal setting by inspecting
-   * the filename's extension.
-   * \param filename output file name
-   */
-  static std::string DetectTerminal(const std::string& filename);
-
-  /**
-   * \param terminal terminal setting string for output. The default terminal
-   * string is "png"
-   */
-  void SetTerminal (const std::string& terminal);
-
-  /**
-   * \param title set new plot title string to use for this plot.
-   */
-  void SetTitle (const std::string& title);
-
-  /**
-   * \param xLegend the legend for the x horizontal axis
-   * \param yLegend the legend for the y vertical axis
-   */
-  void SetLegend (const std::string& xLegend, const std::string& yLegend);
-
-  /**
-   * \param extra set extra gnuplot directive for output.
-   */
-  void SetExtra (const std::string& extra);
-
-  /**
-   * \param extra append extra gnuplot directive for output.
-   */
-  void AppendExtra (const std::string& extra);
-
-  /**
-   * \param dataset add a dataset to the graph to be plotted.
-   */
-  void AddDataset (const GnuplotDataset& dataset);
-
-  /**
-   * \param os the output stream on which the relevant gnuplot commands should
-   * be generated. Including output file and terminal headers.
-   */
-  void GenerateOutput (std::ostream &os) const;
-
-private:
-  typedef std::vector<GnuplotDataset> Datasets;
-
-  std::string m_outputFilename;
-  std::string m_terminal;
-
-  Datasets m_datasets;
-
-  std::string m_title;
-  std::string m_xLegend;
-  std::string m_yLegend;
-  std::string m_extra;
-};
-
-/**
- * \brief a simple class to group together multiple gnuplots into one file,
- * e.g. for PDF multi-page output terminals.
- */
-class GnuplotCollection
-{
-public:
-  /**
-   * \param outputFilename the name of the file where the rendering of the
-   *        graph will be generated if you feed the command stream output by
-   *        GnuplotCollection::GenerateOutput to the gnuplot program.
-   */
-  GnuplotCollection (const std::string& outputFilename);
-
-  /**
-   * \param terminal terminal setting string for output. The default terminal
-   * string is guessed from the output filename's extension.
-   */
-  void SetTerminal (const std::string& terminal);
-
-  /**
-   * \param plot add a plot to the collection to be plotted.
-   */
-  void AddPlot (const Gnuplot& plot);
-
-  /**
-   * Return a pointer to one of the added plots.
-   * \param id  index of plot to return
-   * \return    reference to plot, throws std::range_error if it does not exist.
-   */
-  Gnuplot& GetPlot(unsigned int id);
-
-  /**
-   * \param os the output stream on which the relevant gnuplot commands should
-   * be generated.
-   */
-  void GenerateOutput (std::ostream &os) const;
- 
-private:
-  typedef std::vector<Gnuplot> Plots;
-
-  std::string m_outputFilename;
-  std::string m_terminal;
-
-  Plots       m_plots;
-};
-
-} // namespace ns3
-
-#endif /* GNUPLOT_H */
--- a/src/contrib/gtk-config-store.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#include "gtk-config-store.h"
-#include "raw-text-config.h"
-#include "display-functions.h"
-#include "ns3/log.h"
-#include <fstream>
-
-
-namespace ns3 {
-
-NS_LOG_COMPONENT_DEFINE ("GtkconfigStore");
-
-
-GtkConfigStore::GtkConfigStore ()
-{
-}
-
-void
-GtkConfigStore::ConfigureDefaults (void)
-{
-  //this function should be called before running the script to enable the user
-  //to configure the default values for the objects he wants to use
-  GtkWidget *window;
-  GtkWidget *view;
-  GtkWidget *scroll;
-
-  gtk_init (0, 0);
-  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_title (GTK_WINDOW (window), "ns-3 Default attributes.");
-  gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
-
-  g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
-  GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
-  ModelTypeidCreator creator;
-  creator.Build (model);
-
-  view = create_view_config_default (model);
-  scroll = gtk_scrolled_window_new (0, 0);
-  gtk_container_add (GTK_CONTAINER (scroll), view);
-
-  GtkWidget *vbox = gtk_vbox_new (FALSE, 5);
-  gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
-  gtk_box_pack_end (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
-  GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
-  gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-  GtkWidget *save = gtk_button_new_with_label ("Save");
-  g_signal_connect (save, "clicked",  (GCallback) save_clicked_default, window);
-  gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
-  GtkWidget *load = gtk_button_new_with_label ("Load");
-  g_signal_connect (load, "clicked",  (GCallback) load_clicked_default, window);
-  gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
-  GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
-  g_signal_connect (exit, "clicked",  (GCallback) exit_clicked_callback, window);
-  gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
-
-  gtk_container_add (GTK_CONTAINER (window), vbox);
-
-  gtk_widget_show_all (window);
-
-  gtk_main ();
-
-  gtk_tree_model_foreach (GTK_TREE_MODEL (model), 
-                          clean_model_callback_config_default,
-                          0);
-
-  gtk_widget_destroy (window); 
-}
-
-void 
-GtkConfigStore::ConfigureAttributes (void)
-{
-  GtkWidget *window;
-  GtkWidget *view;
-  GtkWidget *scroll;
-
-  gtk_init (0, 0);
-
-  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_title (GTK_WINDOW (window), "ns-3 Object attributes.");
-  gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
-
-  g_signal_connect (window, "delete_event", (GCallback)delete_event_callback, window);
-
-
-  GtkTreeStore *model = gtk_tree_store_new (COL_LAST, G_TYPE_POINTER);
-  ModelCreator creator;
-  creator.Build (model);
-
-  view = create_view (model);
-  scroll = gtk_scrolled_window_new (0, 0);
-  gtk_container_add (GTK_CONTAINER (scroll), view);
-
-  GtkWidget *vbox = gtk_vbox_new (FALSE, 5);
-  gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
-  gtk_box_pack_end (GTK_BOX (vbox), gtk_hseparator_new (), FALSE, FALSE, 0);
-  GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
-  gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-  GtkWidget *save = gtk_button_new_with_label ("Save");
-  g_signal_connect (save, "clicked",  (GCallback) save_clicked, window);
-  gtk_box_pack_end (GTK_BOX (hbox), save, FALSE, FALSE, 0);
-  GtkWidget *load = gtk_button_new_with_label ("Load");
-  g_signal_connect (load, "clicked",  (GCallback) load_clicked, window);
-  gtk_box_pack_end (GTK_BOX (hbox), load, FALSE, FALSE, 0);
-  GtkWidget *exit = gtk_button_new_with_label ("Run Simulation");
-  g_signal_connect (exit, "clicked",  (GCallback) exit_clicked_callback, window);
-  gtk_box_pack_end (GTK_BOX (hbox), exit, FALSE, FALSE, 0);
-
-  gtk_container_add (GTK_CONTAINER (window), vbox);
-
-  gtk_widget_show_all (window);
-
-  gtk_main ();
-
-  gtk_tree_model_foreach (GTK_TREE_MODEL (model), 
-                          clean_model_callback,
-                          0);
-
-  gtk_widget_destroy (window);
-}
-
-} // namespace ns3
--- a/src/contrib/gtk-config-store.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#ifndef GTK_CONFIG_STORE_H
-#define GTK_CONFIG_STORE_H
-
-namespace ns3 {
-
-/**
- * \brief A class that provides a GTK-based front end to ns3::ConfigStore 
- */
-class GtkConfigStore
-{
-public:
-  GtkConfigStore ();
-
-  void ConfigureDefaults (void);
-  void ConfigureAttributes (void);
-};
-
-
-} // namespace ns3
-
-#endif /* GTK_CONFIG_STORE_H */
--- a/src/contrib/model-node-creator.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
- 
-#include "model-node-creator.h"
-namespace ns3 {
-
-ModelCreator::ModelCreator ()
-{
-}
-void
-
-ModelCreator::Build (GtkTreeStore *treestore)
-{
-  m_treestore = treestore;
-  m_iters.push_back (0);
-  //this function will go through all the objects and call on them
-  //DoStartVisitObject, DoIterate and DoEndVisitObject
-  Iterate ();
-  NS_ASSERT (m_iters.size () == 1);
-}
-
-
-void
-ModelCreator::Add (ModelNode *node)
-{
-  GtkTreeIter *parent = m_iters.back ();
-  GtkTreeIter *current = g_new (GtkTreeIter, 1);
-  gtk_tree_store_append (m_treestore, current, parent);
-  gtk_tree_store_set (m_treestore, current,
-                      COL_NODE, node, -1);
-  m_iters.push_back (current);
-}
-void
-ModelCreator::Remove (void)
-{
-  GtkTreeIter *iter = m_iters.back ();
-  g_free (iter);
-  m_iters.pop_back ();
-}
-
-void 
-ModelCreator::DoVisitAttribute (Ptr<Object> object, std::string name)
-{
-  ModelNode *node = new ModelNode ();
-  node->type = ModelNode::NODE_ATTRIBUTE;
-  node->object = object;
-  node->name = name;
-  Add (node);
-  Remove ();
-}
-void 
-ModelCreator::DoStartVisitObject (Ptr<Object> object)
-{
-  ModelNode *node = new ModelNode ();
-  node->type = ModelNode::NODE_OBJECT;
-  node->object = object;
-  Add (node);
-}
-void 
-ModelCreator::DoEndVisitObject (void)
-{
-  Remove ();
-}
-void 
-ModelCreator::DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value)
-{
-  ModelNode *node = new ModelNode ();
-  node->type = ModelNode::NODE_POINTER;
-  node->object = object;
-  node->name = name;
-  Add (node);
-}
-void 
-ModelCreator::DoEndVisitPointerAttribute (void)
-{
-  Remove ();
-}
-void 
-ModelCreator::DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector)
-{
-  ModelNode *node = new ModelNode ();
-  node->type = ModelNode::NODE_VECTOR;
-  node->object = object;
-  node->name = name;
-  Add (node);
-}
-void 
-ModelCreator::DoEndVisitArrayAttribute (void)
-{
-  Remove ();
-}
-void 
-ModelCreator::DoStartVisitArrayItem (const ObjectVectorValue &vector, uint32_t index, Ptr<Object> item)
-{
-  GtkTreeIter *parent = m_iters.back ();
-  GtkTreeIter *current = g_new (GtkTreeIter, 1);
-  ModelNode *node = new ModelNode ();
-  node->type = ModelNode::NODE_VECTOR_ITEM;
-  node->object = item;
-  node->index = index;
-  gtk_tree_store_append (m_treestore, current, parent);
-  gtk_tree_store_set (m_treestore, current,
-              COL_NODE, node,
-                     -1);
-  m_iters.push_back (current);
-}
-void 
-ModelCreator::DoEndVisitArrayItem (void)
-{
-  GtkTreeIter *iter = m_iters.back ();
-  g_free (iter);
-  m_iters.pop_back ();  
-}
-}//end namespace ns3
--- a/src/contrib/model-node-creator.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Authors: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- *          Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
- */
-
-#include "attribute-iterator.h"
-#include <gtk/gtk.h>
-
-namespace ns3
-{
-
-enum
-{
-  COL_NODE = 0, COL_LAST
-};
-
-struct ModelNode
-{
-  enum
-  {
-    // store object + attribute name
-    NODE_ATTRIBUTE,
-    // store object + attribute name
-    NODE_POINTER,
-    // store object + attribute name
-    NODE_VECTOR,
-    // store index + value (object)
-    NODE_VECTOR_ITEM,
-    // store object
-    NODE_OBJECT
-  } type;
-  std::string name;
-  Ptr<Object> object;
-  uint32_t index;
-};
-class ModelCreator : public AttributeIterator
-{
-public:
-  ModelCreator ();
-
-  void Build (GtkTreeStore *treestore);
-private:
-  virtual void DoVisitAttribute (Ptr<Object> object, std::string name);
-  virtual void DoStartVisitObject (Ptr<Object> object);
-  virtual void DoEndVisitObject (void);
-  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
-  virtual void DoEndVisitPointerAttribute (void);
-  virtual void DoStartVisitArrayAttribute (Ptr<Object> object, std::string name, const ObjectVectorValue &vector);
-  virtual void DoEndVisitArrayAttribute (void);
-  virtual void DoStartVisitArrayItem (const ObjectVectorValue &vector,
-                                      uint32_t index, Ptr<Object> item);
-  virtual void DoEndVisitArrayItem (void);
-  void Add (ModelNode *node);
-  void Remove (void);
-
-  GtkTreeStore *m_treestore;
-  std::vector<GtkTreeIter *> m_iters;
-};
-}
--- a/src/contrib/model-typeid-creator.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Author: Faker Moatamri <faker.moatamri@sophia.inria.fr>
- */
-
-#include "model-typeid-creator.h"
-
-namespace ns3 {
-
-ModelTypeidCreator::ModelTypeidCreator ()
-{
-}
-void
-
-ModelTypeidCreator::Build (GtkTreeStore *treestore)
-{
-  m_treestore = treestore;
-  m_iters.push_back (0);
-  Iterate ();
-  NS_ASSERT (m_iters.size () == 1);
-}
-
-void
-ModelTypeidCreator::Add (ModelTypeid *node)
-{
-  GtkTreeIter *parent = m_iters.back ();
-  GtkTreeIter *current = g_new (GtkTreeIter, 1);
-  gtk_tree_store_append (m_treestore, current, parent);
-  gtk_tree_store_set (m_treestore, current, COL_TYPEID, node, -1);
-  m_iters.push_back (current);
-}
-
-void
-ModelTypeidCreator::Remove (void)
-{
-  GtkTreeIter *iter = m_iters.back ();
-  g_free (iter);
-  m_iters.pop_back ();
-}
-
-void 
-ModelTypeidCreator::VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index)
-{
-  ModelTypeid *node = new ModelTypeid ();
-  node->type = ModelTypeid::NODE_ATTRIBUTE;
-  node->tid = tid;
-  node->name = name;
-  node->defaultValue = defaultValue;
-  node->index = index;
-  Add (node);
-  Remove ();
-}
-
-void 
-ModelTypeidCreator::StartVisitTypeId (std::string name)
-{
-  ModelTypeid *node = new ModelTypeid ();
-  node->type = ModelTypeid::NODE_TYPEID;
-  node->tid = TypeId::LookupByName (name);
-  Add (node);
-}
-
-void 
-ModelTypeidCreator::EndVisitTypeId (void)
-{
-  Remove ();
-}
-}//end namespace ns3
--- a/src/contrib/model-typeid-creator.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- *  This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- * 
- * Author: Moatamri Faker <faker.moatamri@sophia.inria.fr>
- */
-
-#include "attribute-default-iterator.h"
-#include "ns3/type-id.h"
-#include <gtk/gtk.h>
-#include <vector>
-
-namespace ns3 {
-
-enum
-{
-  COL_TYPEID = 0, COL_LASTID
-};
-
-struct ModelTypeid
-{
-  enum
-  {
-    // store TypeId + attribute name +defaultValue and index
-    NODE_ATTRIBUTE,
-    // store TypeId
-    NODE_TYPEID
-  } type;
-  std::string name;
-  std::string defaultValue;
-  //The TypeId object and if it is an attribute, it's the TypeId object of the attribute
-  TypeId tid;
-  //stores the index of the attribute in list of attributes for a given TypeId
-  uint32_t index;
-};
-class ModelTypeidCreator : public AttributeDefaultIterator
-{
-public:
-  ModelTypeidCreator ();
-  /**
-   * \brief This method will iterate on typeIds having default attributes and create a model
-   * for them, this model will be used by the view.
-   */
-  void Build (GtkTreeStore *treestore);
-private:
-  /**
-   * \brief This method will add a ModelTypeid to the GtkTreeIterator
-   */
-  virtual void VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index);
-  /**
-   * \brief Add a node for the new TypeId object
-   */
-  virtual void StartVisitTypeId (std::string name);
-  /**
-   * \brief Remove the last gtk tree iterator
-   */
-  virtual void EndVisitTypeId (void);
-  /**
-   * \brief Adds a treestore iterator to m_treestore model
-   */
-  void Add (ModelTypeid *node);
-  /**
-   * Removes the last GtkTreeIterator from m_iters
-   */
-  void Remove (void);
-  //this is the TreeStore model corresponding to the view
-  GtkTreeStore *m_treestore;
-  //This contains a vector of iterators used to build the TreeStore
-  std::vector<GtkTreeIter *> m_iters;
-};
-}
--- a/src/contrib/raw-text-config.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-#include "raw-text-config.h"
-#include "attribute-iterator.h"
-#include "attribute-default-iterator.h"
-#include "ns3/global-value.h"
-#include "ns3/string.h"
-#include "ns3/log.h"
-#include "ns3/config.h"
-
-NS_LOG_COMPONENT_DEFINE ("RawTextConfig");
-
-namespace ns3 {
-
-RawTextConfigSave::RawTextConfigSave ()
-  : m_os (0)
-{}
-RawTextConfigSave::~RawTextConfigSave ()
-{
-  if (m_os != 0)
-    {
-      m_os->close ();
-    }
-  delete m_os;
-  m_os = 0;
-}
-void 
-RawTextConfigSave::SetFilename (std::string filename)
-{
-  m_os = new std::ofstream ();
-  m_os->open (filename.c_str (), std::ios::out);
-}
-void 
-RawTextConfigSave::Default (void)
-{
-  class RawTextDefaultIterator : public AttributeDefaultIterator
-  {
-  public:
-    RawTextDefaultIterator (std::ostream *os) {
-      m_os = os;
-    }
-  private:
-    virtual void StartVisitTypeId (std::string name) {
-      m_typeId = name;
-    }
-    virtual void DoVisitAttribute (std::string name, std::string defaultValue) {
-      *m_os << "default " << m_typeId << "::" << name << " \"" << defaultValue << "\"" << std::endl;
-    }
-    std::string m_typeId;
-    std::ostream *m_os;
-  };
-
-  RawTextDefaultIterator iterator = RawTextDefaultIterator (m_os);
-  iterator.Iterate ();
-}
-void 
-RawTextConfigSave::Global (void)
-{
-  for (GlobalValue::Iterator i = GlobalValue::Begin (); i != GlobalValue::End (); ++i)
-    {
-      StringValue value;
-      (*i)->GetValue (value);
-      *m_os << "global " << (*i)->GetName () << " \"" << value.Get () << "\"" << std::endl;
-    }
-}
-void 
-RawTextConfigSave::Attributes (void)
-{
-  class RawTextAttributeIterator : public AttributeIterator
-  {
-  public:
-    RawTextAttributeIterator (std::ostream *os)
-      : m_os (os) {}
-  private:
-    virtual void DoVisitAttribute (Ptr<Object> object, std::string name) {
-      StringValue str;
-      object->GetAttribute (name, str);
-      *m_os << "value " << GetCurrentPath () << " \"" << str.Get () << "\"" << std::endl;
-    }
-    std::ostream *m_os;
-  };
-
-  RawTextAttributeIterator iter = RawTextAttributeIterator (m_os);
-  iter.Iterate ();
-}
-
-RawTextConfigLoad::RawTextConfigLoad ()
-  : m_is (0)
-{}
-RawTextConfigLoad::~RawTextConfigLoad ()
-{
-  if (m_is != 0)
-    {
-      m_is->close ();
-      delete m_is;
-      m_is = 0;
-    }
-}
-void 
-RawTextConfigLoad::SetFilename (std::string filename)
-{
-  m_is = new std::ifstream ();
-  m_is->open (filename.c_str (), std::ios::in);
-}
-std::string
-RawTextConfigLoad::Strip (std::string value)
-{
-  std::string::size_type start = value.find ("\"");
-  std::string::size_type end = value.find ("\"", 1);
-  NS_ASSERT (start == 0);
-  NS_ASSERT (end == value.size () - 1);
-  return value.substr (start+1, end-start-1);
-}
-
-void 
-RawTextConfigLoad::Default (void)
-{
-  m_is->seekg (0);
-  std::string type, name, value;
-  *m_is >> type >> name >> value;
-  while (m_is->good())
-    {
-      NS_LOG_DEBUG ("type=" << type << ", name=" << name << ", value=" << value);
-      value = Strip (value);
-      if (type == "default")
-	{
-	  Config::SetDefault (name, StringValue (value));
-	}
-      *m_is >> type >> name >> value;
-    }
-}
-void 
-RawTextConfigLoad::Global (void)
-{
-  m_is->seekg (0);
-  std::string type, name, value;
-  *m_is >> type >> name >> value;
-  while (m_is->good())
-    {
-      NS_LOG_DEBUG ("type=" << type << ", name=" << name << ", value=" << value);
-      value = Strip (value);
-      if (type == "global")
-	{
-	  Config::SetGlobal (name, StringValue (value));
-	}
-      *m_is >> type >> name >> value;
-    }
-}
-void 
-RawTextConfigLoad::Attributes (void)
-{
-  m_is->seekg (0);
-  std::string type, path, value;
-  *m_is >> type >> path >> value;
-  while (m_is->good())
-    {
-      NS_LOG_DEBUG ("type=" << type << ", path=" << path << ", value=" << value);
-      value = Strip (value);
-      if (type == "value")
-	{
-	  Config::Set (path, StringValue (value));
-	}
-      *m_is >> type >> path >> value;
-    }
-}
-
-
-} // namespace ns3
--- a/src/contrib/raw-text-config.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#ifndef RAW_TEXT_CONFIG_H
-#define RAW_TEXT_CONFIG_H
-
-#include <string>
-#include <fstream>
-#include "file-config.h"
-
-namespace ns3 {
-
-class RawTextConfigSave : public FileConfig
-{
-public:
-  RawTextConfigSave ();
-  virtual ~RawTextConfigSave ();
-  virtual void SetFilename (std::string filename);
-  virtual void Default (void);
-  virtual void Global (void);
-  virtual void Attributes (void);
-private:
-  std::ofstream *m_os;
-};
-
-class RawTextConfigLoad : public FileConfig
-{
-public:
-  RawTextConfigLoad ();
-  virtual ~RawTextConfigLoad ();
-  virtual void SetFilename (std::string filename);
-  virtual void Default (void);
-  virtual void Global (void);
-  virtual void Attributes (void);
-private:
-  std::string Strip (std::string value);
-  std::ifstream *m_is;
-};
-
-} // namespace ns3
-
-#endif /* RAW_TEXT_CONFIG_H */
--- a/src/contrib/test/examples-to-run.py	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#! /usr/bin/env python
-## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
-
-# A list of C++ examples to run in order to ensure that they remain
-# buildable and runnable over time.  Each tuple in the list contains
-#
-#     (example_name, do_run, do_valgrind_run).
-#
-# See test.py for more information.
-cpp_examples = [
-]
-
-# A list of Python examples to run in order to ensure that they remain
-# runnable over time.  Each tuple in the list contains
-#
-#     (example_name, do_run).
-#
-# See test.py for more information.
-python_examples = []
--- a/src/contrib/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
-
-def configure(conf):
-    have_gtk = conf.pkg_check_modules('GTK_CONFIG_STORE', 'gtk+-2.0 >= 2.12', mandatory=False)
-    conf.env['ENABLE_GTK_CONFIG_STORE'] = have_gtk
-    conf.report_optional_feature("GtkConfigStore", "GtkConfigStore",
-                                 conf.env['ENABLE_GTK_CONFIG_STORE'],
-                                 "library 'gtk+-2.0 >= 2.12' not found")
-    have_libxml2 = conf.pkg_check_modules('LIBXML2', 'libxml-2.0 >= 2.6', mandatory=False)
-    if have_libxml2:
-        conf.define('HAVE_LIBXML2', 1)
-
-    conf.env['ENABLE_LIBXML2'] = have_libxml2
-    conf.report_optional_feature("XmlIo", "XmlIo",
-                                 conf.env['ENABLE_LIBXML2'],
-                                 "library 'libxml-2.0 >= 2.7' not found")
-    conf.write_config_header('ns3/contrib-config.h', top=True)
-
-
-def build(bld):
-    module = bld.create_ns3_module('contrib', ['core', 'network'])
-    module.source = [
-        'event-garbage-collector.cc',
-        'gnuplot.cc',
-        'delay-jitter-estimation.cc',
-        'attribute-iterator.cc',
-        'config-store.cc',
-        'flow-id-tag.cc',
-        'attribute-default-iterator.cc',
-        'file-config.cc',
-        'raw-text-config.cc',
-        ]
-
-    headers = bld.new_task_gen('ns3header')
-    headers.module = 'contrib'
-    headers.source = [
-        'event-garbage-collector.h',
-        'gnuplot.h',
-        'delay-jitter-estimation.h',
-        'file-config.h',
-        'config-store.h',
-        'flow-id-tag.h',
-        'average.h',
-        ]
-
-    if bld.env['ENABLE_GTK_CONFIG_STORE']:
-        headers.source.append ('gtk-config-store.h')
-        module.source.extend (['gtk-config-store.cc',
-                               'model-node-creator.cc',
-                               'model-typeid-creator.cc',
-                               'display-functions.cc',
-                               ])
-        module.uselib = 'GTK_CONFIG_STORE'
-
-    if bld.env['ENABLE_LIBXML2']:
-        module.source.append ('xml-config.cc')
-        if bld.env['ENABLE_GTK_CONFIG_STORE']:
-            module.uselib = module.uselib + ' LIBXML2'
-        else:
-            module.uselib = 'LIBXML2'
-
-    bld.ns3_python_bindings()
--- a/src/contrib/xml-config.cc	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +0,0 @@
-#include "xml-config.h"
-#include "attribute-default-iterator.h"
-#include "attribute-iterator.h"
-#include "ns3/fatal-error.h"
-#include "ns3/log.h"
-#include "ns3/global-value.h"
-#include "ns3/string.h"
-#include "ns3/config.h"
-#include <libxml/encoding.h>
-#include <libxml/xmlwriter.h>
-
-NS_LOG_COMPONENT_DEFINE ("XmlConfig");
-
-namespace ns3 {
-
-XmlConfigSave::XmlConfigSave ()
-  : m_writer (0)
-{
-  NS_LOG_FUNCTION (this);
-}
-void
-XmlConfigSave::SetFilename (std::string filename)
-{
-  NS_LOG_FUNCTION (filename);
-  if (filename == "")
-    {
-      return;
-    }
-  int rc;
-
-  /* Create a new XmlWriter for uri, with no compression. */
-  m_writer = xmlNewTextWriterFilename(filename.c_str (), 0);
-  if (m_writer == NULL) 
-    {
-      NS_FATAL_ERROR ("Error creating the xml writer");
-    }
-  rc = xmlTextWriterSetIndent (m_writer, 1);
-  if (rc < 0)
-    {
-      NS_FATAL_ERROR ("Error at xmlTextWriterSetIndent");
-    }
-  /* Start the document with the xml default for the version,
-   * encoding utf-8 and the default for the standalone
-   * declaration. */
-  rc = xmlTextWriterStartDocument(m_writer, NULL, "utf-8", NULL);
-  if (rc < 0) 
-    {
-      NS_FATAL_ERROR ("Error at xmlTextWriterStartDocument");
-    }
-
-  /* Start an element named "ns3". Since thist is the first
-   * element, this will be the root element of the document. */
-  rc = xmlTextWriterStartElement(m_writer, BAD_CAST "ns3");
-  if (rc < 0) 
-    {
-      NS_FATAL_ERROR ("Error at xmlTextWriterStartElement\n");
-    }
-}
-XmlConfigSave::~XmlConfigSave ()
-{
-  NS_LOG_FUNCTION (this);
-  if (m_writer == 0)
-    {
-      return;
-    }
-  int rc;
-  /* Here we could close the remaining elements using the
-   * function xmlTextWriterEndElement, but since we do not want to
-   * write any other elements, we simply call xmlTextWriterEndDocument,
-   * which will do all the work. */
-  rc = xmlTextWriterEndDocument(m_writer);
-  if (rc < 0) 
-    {
-      NS_FATAL_ERROR ("Error at xmlTextWriterEndDocument\n");
-    }
-
-  xmlFreeTextWriter(m_writer);
-  m_writer = 0;
-}
-void 
-XmlConfigSave::Default (void)
-{
-  class XmlDefaultIterator : public AttributeDefaultIterator
-  {
-  public:
-    XmlDefaultIterator (xmlTextWriterPtr writer) {
-      m_writer = writer;
-    }
-  private:
-    virtual void StartVisitTypeId (std::string name) {
-      m_typeid = name;
-    }
-    virtual void DoVisitAttribute (std::string name, std::string defaultValue) {
-      int rc;
-      rc = xmlTextWriterStartElement(m_writer, BAD_CAST "default");
-       if (rc < 0) 
-	 {
-	   NS_FATAL_ERROR ("Error at xmlTextWriterStartElement");
-	 }
-       std::string fullname = m_typeid + "::" + name;
-       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "name",
-					BAD_CAST fullname.c_str ());
-       if (rc < 0) 
-	 {
-	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
-	 }
-       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "value",
-					BAD_CAST defaultValue.c_str ());
-       if (rc < 0) 
-	 {
-	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
-	 }
-      rc = xmlTextWriterEndElement(m_writer);
-      if (rc < 0) 
-	{
-	  NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
-	}
-    }
-    xmlTextWriterPtr m_writer;
-    std::string m_typeid;
-  };
-  XmlDefaultIterator iterator = XmlDefaultIterator (m_writer);
-  iterator.Iterate ();
-}
-
-void
-XmlConfigSave::Attributes (void)
-{
-  class XmlTextAttributeIterator : public AttributeIterator
-  {
-  public:
-    XmlTextAttributeIterator (xmlTextWriterPtr writer)
-      : m_writer (writer) {}
-  private:
-    virtual void DoVisitAttribute (Ptr<Object> object, std::string name) {
-      StringValue str;
-      object->GetAttribute (name, str);
-      int rc;
-      rc = xmlTextWriterStartElement(m_writer, BAD_CAST "value");
-      if (rc < 0) 
-	{
-	  NS_FATAL_ERROR ("Error at xmlTextWriterStartElement");
-	}
-      rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "path",
-				       BAD_CAST GetCurrentPath ().c_str ());
-      if (rc < 0) 
-	{
-	  NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
-	}
-      rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "value",
-				       BAD_CAST str.Get ().c_str ());
-      if (rc < 0) 
-	{
-	  NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
-	}
-      rc = xmlTextWriterEndElement(m_writer);
-      if (rc < 0) 
-	{
-	  NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
-	}
-    }
-    xmlTextWriterPtr m_writer;
-  };
-
-  XmlTextAttributeIterator iter = XmlTextAttributeIterator (m_writer);
-  iter.Iterate ();
-}
-
-void
-XmlConfigSave::Global (void)
-{
-  int rc;
-  for (GlobalValue::Iterator i = GlobalValue::Begin (); i != GlobalValue::End (); ++i)
-    {
-      StringValue value;
-      (*i)->GetValue (value);
-
-      rc = xmlTextWriterStartElement(m_writer, BAD_CAST "global");
-       if (rc < 0) 
-	 {
-	   NS_FATAL_ERROR ("Error at xmlTextWriterStartElement");
-	 }
-       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "name",
-					BAD_CAST (*i)->GetName ().c_str ());
-       if (rc < 0) 
-	 {
-	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
-	 }
-       rc = xmlTextWriterWriteAttribute(m_writer, BAD_CAST "value",
-					BAD_CAST value.Get ().c_str ());
-       if (rc < 0) 
-	 {
-	   NS_FATAL_ERROR ("Error at xmlTextWriterWriteAttribute");
-	 }
-      rc = xmlTextWriterEndElement(m_writer);
-       if (rc < 0) 
-	 {
-	   NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
-	 }
-    }
-}
-
-XmlConfigLoad::XmlConfigLoad ()
-{
-  NS_LOG_FUNCTION (this);
-}
-XmlConfigLoad::~XmlConfigLoad ()
-{
-  NS_LOG_FUNCTION (this);
-}
-
-void
-XmlConfigLoad::SetFilename (std::string filename)
-{
-  NS_LOG_FUNCTION (filename);
-  m_filename = filename;
-}
-void 
-XmlConfigLoad::Default (void)
-{
-  xmlTextReaderPtr reader = xmlNewTextReaderFilename(m_filename.c_str ());
-  if (reader == NULL)
-    {
-      NS_FATAL_ERROR ("Error at xmlReaderForFile");
-    }
-  int rc;
-  rc = xmlTextReaderRead (reader);
-  while (rc > 0)
-    {
-      const xmlChar *type = xmlTextReaderConstName(reader);
-      if (type == 0)
-	{
-	  NS_FATAL_ERROR ("Invalid value");
-	}
-      if (std::string ((char*)type) == "default")
-	{
-	  xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST "name");
-	  if (name == 0)
-	    {
-	      NS_FATAL_ERROR ("Error getting attribute 'name'");
-	    }
-	  xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST "value");
-	  if (value == 0)
-	    {
-	      NS_FATAL_ERROR ("Error getting attribute 'value'");
-	    }
-	  NS_LOG_DEBUG ("default="<<(char*)name<<", value=" <<value);
-	  Config::SetDefault ((char*)name, StringValue ((char*)value));
-	  xmlFree (name);
-	  xmlFree (value);
-	}
-      rc = xmlTextReaderRead (reader);
-    }
-  xmlFreeTextReader (reader);
-}
-void 
-XmlConfigLoad::Global (void)
-{
-  xmlTextReaderPtr reader = xmlNewTextReaderFilename(m_filename.c_str ());
-  if (reader == NULL)
-    {
-      NS_FATAL_ERROR ("Error at xmlReaderForFile");
-    }
-  int rc;
-  rc = xmlTextReaderRead (reader);
-  while (rc > 0)
-    {
-      const xmlChar *type = xmlTextReaderConstName(reader);
-      if (type == 0)
-	{
-	  NS_FATAL_ERROR ("Invalid value");
-	}
-      if (std::string ((char*)type) == "global")
-	{
-	  xmlChar *name = xmlTextReaderGetAttribute (reader, BAD_CAST "name");
-	  if (name == 0)
-	    {
-	      NS_FATAL_ERROR ("Error getting attribute 'name'");
-	    }
-	  xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST "value");
-	  if (value == 0)
-	    {
-	      NS_FATAL_ERROR ("Error getting attribute 'value'");
-	    }
-	  NS_LOG_DEBUG ("global="<<(char*)name<<", value=" <<value);
-	  Config::SetGlobal ((char*)name, StringValue ((char*)value));
-	  xmlFree (name);
-	  xmlFree (value);
-	}
-      rc = xmlTextReaderRead (reader);
-    }
-  xmlFreeTextReader (reader);
-}
-void 
-XmlConfigLoad::Attributes (void)
-{
-  xmlTextReaderPtr reader = xmlNewTextReaderFilename(m_filename.c_str ());
-  if (reader == NULL)
-    {
-      NS_FATAL_ERROR ("Error at xmlReaderForFile");
-    }
-  int rc;
-  rc = xmlTextReaderRead (reader);
-  while (rc > 0)
-    {
-      const xmlChar *type = xmlTextReaderConstName(reader);
-      if (type == 0)
-	{
-	  NS_FATAL_ERROR ("Invalid value");
-	}
-      if (std::string ((char*)type) == "value")
-	{
-	  xmlChar *path = xmlTextReaderGetAttribute (reader, BAD_CAST "path");
-	  if (path == 0)
-	    {
-	      NS_FATAL_ERROR ("Error getting attribute 'path'");
-	    }
-	  xmlChar *value = xmlTextReaderGetAttribute (reader, BAD_CAST "value");
-	  if (value == 0)
-	    {
-	      NS_FATAL_ERROR ("Error getting attribute 'value'");
-	    }
-	  NS_LOG_DEBUG ("path="<<(char*)path << ", value=" << (char*)value);
-	  Config::Set ((char*)path, StringValue ((char*)value));
-	  xmlFree (path);
-	  xmlFree (value);
-	}
-      rc = xmlTextReaderRead (reader);
-    }
-  xmlFreeTextReader (reader);
-}
-
-
-
-} // namespace ns3
--- a/src/contrib/xml-config.h	Thu Mar 24 15:11:56 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#ifndef XML_CONFIG_STORE_H
-#define XML_CONFIG_STORE_H
-
-#include <string>
-#include <libxml/xmlwriter.h>
-#include <libxml/xmlreader.h>
-#include "file-config.h"
-
-namespace ns3 {
-
-class XmlConfigSave : public FileConfig
-{
-public:
-  XmlConfigSave ();
-  virtual ~XmlConfigSave ();
-
-  virtual void SetFilename (std::string filename);
-  virtual void Default (void);
-  virtual void Global (void);
-  virtual void Attributes (void);
-private:
-  xmlTextWriterPtr m_writer;
-};
-
-class XmlConfigLoad : public FileConfig
-{
-public:
-  XmlConfigLoad ();
-  virtual ~XmlConfigLoad ();
-
-  virtual void SetFilename (std::string filename);
-  virtual void Default (void);
-  virtual void Global (void);
-  virtual void Attributes (void);
-private:
-  std::string m_filename;
-};
-
-} // namespace ns3
-
-#endif /* XML_CONFIG_STORE_H */
--- a/src/dsdv/examples/dsdv-manet.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/dsdv/examples/dsdv-manet.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -32,7 +32,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/internet-module.h"
 #include "ns3/dsdv-helper.h"
--- a/src/flow-monitor/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/flow-monitor/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_module('flow-monitor', ['internet', 'contrib'])
+    obj = bld.create_ns3_module('flow-monitor', ['network', 'config-store', 'tools'])
     obj.source = ["model/%s" % s for s in [
        'flow-monitor.cc',
        'flow-classifier.cc',
--- a/src/lte/examples/lte-device.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/lte/examples/lte-device.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -14,7 +14,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/internet-module.h"
 #include "ns3/lte-module.h"
 #include <iostream>
--- a/src/lte/examples/lte-multiple-flows.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/lte/examples/lte-multiple-flows.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -14,7 +14,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/internet-module.h"
 #include "ns3/lte-module.h"
 #include <iostream>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/network/utils/flow-id-tag.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,90 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2008 INRIA
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+#include "flow-id-tag.h"
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (FlowIdTag);
+
+TypeId 
+FlowIdTag::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::FlowIdTag")
+    .SetParent<Tag> ()
+    .AddConstructor<FlowIdTag> ()
+    ;
+  return tid;
+}
+TypeId 
+FlowIdTag::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+uint32_t 
+FlowIdTag::GetSerializedSize (void) const
+{
+  return 4;
+}
+void 
+FlowIdTag::Serialize (TagBuffer buf) const
+{
+  buf.WriteU32 (m_flowId);
+}
+void 
+FlowIdTag::Deserialize (TagBuffer buf)
+{
+  m_flowId = buf.ReadU32 ();
+}
+void 
+FlowIdTag::Print (std::ostream &os) const
+{
+  os << "FlowId=" << m_flowId;
+}
+FlowIdTag::FlowIdTag ()
+  : Tag () 
+{}
+
+FlowIdTag::FlowIdTag (uint32_t id)
+  : Tag (),
+    m_flowId (id)
+{}
+
+void
+FlowIdTag::SetFlowId (uint32_t id)
+{
+  m_flowId = id;
+}
+uint32_t
+FlowIdTag::GetFlowId (void) const
+{
+  return m_flowId;
+}
+
+uint32_t 
+FlowIdTag::AllocateFlowId (void)
+{
+  static uint32_t nextFlowId = 1;
+  uint32_t flowId = nextFlowId;
+  nextFlowId++;
+  return flowId;
+}
+
+} // namespace ns3
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/network/utils/flow-id-tag.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,47 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2008 INRIA
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ */
+#ifndef FLOW_ID_TAG_H
+#define FLOW_ID_TAG_H
+
+#include "ns3/tag.h"
+
+namespace ns3 {
+
+class FlowIdTag : public Tag
+{
+public:
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+  virtual uint32_t GetSerializedSize (void) const;
+  virtual void Serialize (TagBuffer buf) const;
+  virtual void Deserialize (TagBuffer buf);
+  virtual void Print (std::ostream &os) const;
+  FlowIdTag ();
+  FlowIdTag (uint32_t flowId);
+  void SetFlowId (uint32_t flowId);
+  uint32_t GetFlowId (void) const;
+  static uint32_t AllocateFlowId (void);
+private:
+  uint32_t m_flowId;
+};
+
+} // namespace ns3
+
+#endif /* FLOW_ID_TAG_H */
--- a/src/network/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/network/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -29,6 +29,7 @@
         'utils/error-model.cc',
         'utils/ethernet-header.cc',
         'utils/ethernet-trailer.cc',
+        'utils/flow-id-tag.cc',
         'utils/inet-socket-address.cc',
         'utils/inet6-socket-address.cc',
         'utils/ipv4-address.cc',
@@ -93,6 +94,7 @@
         'utils/error-model.h',
         'utils/ethernet-header.h',
         'utils/ethernet-trailer.h',
+        'utils/flow-id-tag.h',
         'utils/inet-socket-address.h',
         'utils/inet6-socket-address.h',
         'utils/ipv4-address.h',
--- a/src/olsr/examples/olsr-hna.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/olsr/examples/olsr-hna.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -53,7 +53,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wifi-module.h"
 #include "ns3/csma-module.h"
 #include "ns3/ipv4-list-routing.h"
--- a/src/olsr/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/olsr/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -1,7 +1,7 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    module = bld.create_ns3_module('olsr', ['internet', 'contrib', 'point-to-point', 'wifi', 'mobility', 'applications', 'csma'])
+    module = bld.create_ns3_module('olsr', ['internet', 'config-store', 'tools', 'point-to-point', 'wifi', 'mobility', 'applications', 'csma'])
     module.includes = '.'
     module.source = [
         'model/olsr-header.cc',
--- a/src/test/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/test/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -4,7 +4,7 @@
     conf.sub_config('perf')
 
 def build(bld):
-    test = bld.create_ns3_module('test', ['internet', 'mobility', 'applications', 'csma', 'bridge', 'contrib', 'point-to-point'])
+    test = bld.create_ns3_module('test', ['internet', 'mobility', 'applications', 'csma', 'bridge', 'config-store', 'tools', 'point-to-point'])
     test.source = [
         'csma-system-test-suite.cc',
         'global-routing-test-suite.cc',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/model/average.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,113 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2009 IITP RAS
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Authors: Pavel Boyko <boyko@iitp.ru>
+ * Corrections and extensions: Timo Bingmann <tbns@idlebox.net>
+ */
+
+#ifndef AVERAGE_H
+#define AVERAGE_H
+#include <cmath>
+#include <ostream>
+#include <limits>
+#include <stdint.h>
+
+namespace ns3 {
+
+/// Simple average, min, max and std. deviation calculator
+template <typename T = double>
+class Average
+{
+public:
+  Average ()
+    : m_size (0), m_min (std::numeric_limits<T>::max ()), m_max (0),
+      m_avg (0), m_avg2 (0) 
+  {
+  }
+
+  /// Add new sample
+  void Update (T const & x)
+  {
+    m_min = std::min (x, m_min);
+    m_max = std::max (x, m_max);
+    m_avg = (m_size * m_avg + x) / (m_size + 1);
+    m_avg2 = (m_size * m_avg2 + x * x) / (m_size + 1);
+    m_size++;
+  }
+  /// Reset statistics
+  void Reset ()
+  {
+    m_size = 0;
+    m_min = std::numeric_limits<T>::max ();
+    m_max = 0;
+    m_avg = 0;
+    m_avg2 = 0;
+  }
+
+  ///\name Sample statistics
+  //\{
+  /// Sample size
+  uint32_t Count   () const { return m_size; }
+  /// Minimum
+  T        Min     () const { return m_min; }
+  /// Maximum
+  T        Max     () const { return m_max; }
+  /// Sample average
+  double   Avg     () const { return m_avg; }
+  /// Estimate of mean, alias to Avg
+  double   Mean    () const { return Avg (); }
+  /// Unbiased estimate of variance
+  double   Var     () const { return Count() / (double)(Count() - 1) * (m_avg2 - m_avg*m_avg); }
+  /// Standard deviation
+  double   Stddev  () const { return sqrt (Var ());}
+  //\}
+  
+  /** 
+   * \name Error of the mean estimates
+   *  
+   * Note that estimates are valid for 
+   *   - uncorrelated measurements, 
+   *   - normal distribution and
+   *   - large enough sample size.
+   */
+  //\{
+  /// Margin of error of the mean for 90% confidence level 
+  double   Error90() const { return 1.645 * sqrt (Var () / Count ()); }
+  /// Margin of error of the mean for 95% confidence level 
+  double   Error95() const { return 1.960 * sqrt (Var () / Count ()); }
+  /// Margin of error of the mean for 99% confidence level 
+  double   Error99() const { return 2.576 * sqrt (Var () / Count ()); }
+  //\}
+
+private:
+  uint32_t m_size;
+  T      m_min, m_max;
+  double m_avg, m_avg2;
+};
+
+/// Print avg (err) [min, max]
+template <typename T>
+std::ostream & operator<< (std::ostream & os, Average<T> const & x)
+{
+  if (x.Count () != 0)
+    os << x.Avg () << " (" << x.Stddev () << ") [" << x.Min () << ", " << x.Max () << "]";
+  else
+    os << "NA"; // not available
+  return os;
+}
+}
+#endif /* AVERAGE_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/model/delay-jitter-estimation.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,118 @@
+
+#include "delay-jitter-estimation.h"
+#include "ns3/tag.h"
+#include "ns3/simulator.h"
+#include "ns3/string.h"
+
+namespace ns3 {
+
+class DelayJitterEstimationTimestampTag : public Tag
+{
+public:
+  DelayJitterEstimationTimestampTag ();
+  static TypeId GetTypeId (void);
+  virtual TypeId GetInstanceTypeId (void) const;
+
+  virtual uint32_t GetSerializedSize (void) const;
+  virtual void Serialize (TagBuffer i) const;
+  virtual void Deserialize (TagBuffer i);
+  virtual void Print (std::ostream &os) const;
+
+  Time GetTxTime (void) const;
+private:
+  uint64_t m_creationTime;
+};
+
+DelayJitterEstimationTimestampTag::DelayJitterEstimationTimestampTag ()
+  : m_creationTime (Simulator::Now ().GetTimeStep ())
+{}
+
+TypeId 
+DelayJitterEstimationTimestampTag::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("anon::DelayJitterEstimationTimestampTag")
+    .SetParent<Tag> ()
+    .AddConstructor<DelayJitterEstimationTimestampTag> ()
+    .AddAttribute ("CreationTime",
+		   "The time at which the timestamp was created",
+		   StringValue ("0.0s"),
+		   MakeTimeAccessor (&DelayJitterEstimationTimestampTag::GetTxTime),
+		   MakeTimeChecker ())
+    ;
+  return tid;
+}
+TypeId 
+DelayJitterEstimationTimestampTag::GetInstanceTypeId (void) const
+{
+  return GetTypeId ();
+}
+
+uint32_t 
+DelayJitterEstimationTimestampTag::GetSerializedSize (void) const
+{
+  return 8;
+}
+void 
+DelayJitterEstimationTimestampTag::Serialize (TagBuffer i) const
+{
+  i.WriteU64 (m_creationTime);
+}
+void 
+DelayJitterEstimationTimestampTag::Deserialize (TagBuffer i)
+{
+  m_creationTime = i.ReadU64 ();
+}
+void 
+DelayJitterEstimationTimestampTag::Print (std::ostream &os) const
+{
+  os << "CreationTime=" << m_creationTime;
+}
+Time 
+DelayJitterEstimationTimestampTag::GetTxTime (void) const
+{
+  return TimeStep (m_creationTime);
+}
+
+DelayJitterEstimation::DelayJitterEstimation ()
+  : m_previousRx (Simulator::Now ()),
+    m_previousRxTx (Simulator::Now ()),
+    m_jitter (Seconds (0.0)),
+    m_delay (Seconds (0.0))
+{}
+void 
+DelayJitterEstimation::PrepareTx (Ptr<const Packet> packet)
+{
+  DelayJitterEstimationTimestampTag tag;
+  packet->AddByteTag (tag);
+}
+void 
+DelayJitterEstimation::RecordRx (Ptr<const Packet> packet)
+{
+  DelayJitterEstimationTimestampTag tag;
+  bool found;
+  found = packet->FindFirstMatchingByteTag (tag);
+  if (!found)
+    {
+      return;
+    }
+  tag.GetTxTime ();
+
+  Time delta = (Simulator::Now () - m_previousRx) - (tag.GetTxTime () - m_previousRxTx);
+  m_jitter += (Abs (delta) - m_jitter ) / Scalar (16.0);
+  m_previousRx = Simulator::Now ();
+  m_previousRxTx = tag.GetTxTime ();
+  m_delay = Simulator::Now () - tag.GetTxTime ();
+}
+
+Time 
+DelayJitterEstimation::GetLastDelay (void) const
+{
+  return m_delay;
+}
+Time
+DelayJitterEstimation::GetLastJitter (void) const
+{
+  return m_jitter;
+}
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/model/delay-jitter-estimation.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,59 @@
+#ifndef DELAY_JITTER_ESTIMATION_H
+#define DELAY_JITTER_ESTIMATION_H
+
+#include "ns3/nstime.h"
+#include "ns3/packet.h"
+
+namespace ns3 {
+
+/**
+ * \brief quick and dirty delay and jitter estimation
+ *
+ */
+class DelayJitterEstimation
+{
+public:
+  DelayJitterEstimation ();
+
+  /**
+   * \param packet the packet to send over a wire
+   *
+   * This method should be invoked once on each packet to
+   * record within the packet the tx time which is used upon
+   * packet reception to calculate the delay and jitter. The
+   * tx time is stored in the packet as an ns3::Tag which means
+   * that it does not use any network resources and is not
+   * taken into account in transmission delay calculations.
+   */
+  static void PrepareTx (Ptr<const Packet> packet);
+  /**
+   * \param packet the packet received
+   *
+   * Invoke this method to update the delay and jitter calculations
+   * After a call to this method, \ref GetLastDelay and \ref GetLastJitter
+   * will return an updated delay and jitter.
+   */
+  void RecordRx (Ptr<const Packet> packet);
+
+  /**
+   * \returns the updated delay.
+   */
+  Time GetLastDelay (void) const;
+  /**
+   * The jitter is calculated using the RFC 1889 (RTP) jitter
+   * definition.
+   *
+   * \returns the updated jitter.
+   */
+  Time GetLastJitter (void) const;
+
+private:
+  Time m_previousRx;
+  Time m_previousRxTx;
+  Time m_jitter;
+  Time m_delay;
+};
+
+} // namespace ns3
+
+#endif /* DELAY_JITTER_ESTIMATION_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/model/event-garbage-collector.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,155 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 INESC Porto
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+ */
+#include "event-garbage-collector.h"
+
+#define CLEANUP_CHUNK_MIN_SIZE 8
+#define CLEANUP_CHUNK_MAX_SIZE 128
+
+
+namespace ns3 {
+
+
+EventGarbageCollector::EventGarbageCollector () :
+  m_nextCleanupSize (CLEANUP_CHUNK_MIN_SIZE)
+{}
+
+void
+EventGarbageCollector::Track (EventId event)
+{
+  m_events.insert (event);
+  if (m_events.size () >= m_nextCleanupSize)
+    Cleanup ();
+}
+
+void
+EventGarbageCollector::Grow ()
+{
+  m_nextCleanupSize += (m_nextCleanupSize < CLEANUP_CHUNK_MAX_SIZE?
+                        m_nextCleanupSize : CLEANUP_CHUNK_MAX_SIZE);
+}
+
+void
+EventGarbageCollector::Shrink ()
+{
+  while (m_nextCleanupSize > m_events.size ())
+    m_nextCleanupSize >>= 1;
+  Grow ();
+}
+
+// Called when a new event was added and the cleanup limit was exceeded in consequence.
+void
+EventGarbageCollector::Cleanup ()
+{
+  for (EventList::iterator iter = m_events.begin (); iter != m_events.end ();)
+    {
+      if ((*iter).IsExpired ())
+        {
+          m_events.erase (iter++);
+        }
+      else
+        break; // EventIds are sorted by timestamp => further events are not expired for sure
+    }
+
+  // If after cleanup we are still over the limit, increase the limit.
+  if (m_events.size () >= m_nextCleanupSize)
+    Grow ();
+  else
+    Shrink ();
+}
+
+
+EventGarbageCollector::~EventGarbageCollector ()
+{
+  for (EventList::iterator event = m_events.begin ();
+       event != m_events.end (); event++)
+    {
+      Simulator::Cancel (*event);
+    }
+}
+
+} // namespace ns3
+
+
+#include "ns3/test.h"
+
+namespace ns3 {
+
+class EventGarbageCollectorTestCase : public TestCase
+{
+  int m_counter;
+  EventGarbageCollector *m_events;
+
+  void EventGarbageCollectorCallback ();
+
+public:
+
+  EventGarbageCollectorTestCase ();
+  virtual ~EventGarbageCollectorTestCase ();
+  virtual void DoRun (void);
+};
+
+EventGarbageCollectorTestCase::EventGarbageCollectorTestCase ()
+  : TestCase ("EventGarbageCollector"), m_counter (0), m_events (0)
+{}
+
+EventGarbageCollectorTestCase::~EventGarbageCollectorTestCase ()
+{}
+
+void
+EventGarbageCollectorTestCase::EventGarbageCollectorCallback ()
+{
+  m_counter++;
+  if (m_counter == 50)
+    {
+      // this should cause the remaining (50) events to be cancelled
+      delete m_events;
+      m_events = 0;
+    }
+}
+
+void EventGarbageCollectorTestCase::DoRun (void)
+{
+  m_events = new EventGarbageCollector ();
+
+  for (int n = 0; n < 100; n++)
+    {
+      m_events->Track (Simulator::Schedule
+                       (Simulator::Now (),
+                        &EventGarbageCollectorTestCase::EventGarbageCollectorCallback,
+                        this));
+    }
+  Simulator::Run ();
+  NS_TEST_EXPECT_MSG_EQ (m_events, 0, "");
+  NS_TEST_EXPECT_MSG_EQ (m_counter, 50, "");
+  Simulator::Destroy ();
+}
+
+static class EventGarbageCollectorTestSuite : public TestSuite
+{
+public:
+  EventGarbageCollectorTestSuite ()
+    : TestSuite ("event-garbage-collector", UNIT) 
+  {
+    AddTestCase (new EventGarbageCollectorTestCase ());
+  }
+} g_eventGarbageCollectorTests;
+    
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/model/event-garbage-collector.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,71 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 INESC Porto
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+ */
+#ifndef EVENT_GARBAGE_COLLECTOR_H
+#define EVENT_GARBAGE_COLLECTOR_H
+
+#include <set>
+#include "ns3/event-id.h"
+#include "ns3/simulator.h"
+
+namespace ns3 {
+
+/**
+ * \brief An object that tracks scheduled events and automatically
+ * cancels them when it is destroyed.  It is useful in situations
+ * where multiple instances of the same type of event can
+ * simultaneously be scheduled, and when the events should be limited
+ * to the lifetime of a container object.
+ */
+class EventGarbageCollector
+{
+public:
+
+  EventGarbageCollector ();
+
+  /**
+   * \brief Tracks a new event
+   */
+  void Track (EventId event);
+
+  ~EventGarbageCollector ();
+
+private:
+
+  struct EventIdLessThanTs
+  {
+    bool operator () (const EventId &a, const EventId &b) const
+    {
+      return (a.GetTs () < b.GetTs ());
+    }
+  };
+
+  typedef std::multiset<EventId, EventIdLessThanTs> EventList;
+
+  EventList::size_type m_nextCleanupSize;
+  EventList m_events;
+
+  void Cleanup ();
+  void Grow ();
+  void Shrink ();
+};
+
+}; // namespace ns3
+
+#endif /* EVENT_GARBAGE_COLLECTOR_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/model/gnuplot.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,733 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 INRIA, 2008 Timo Bingmann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Original Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ * Enhancements: Timo Bingmann <timo.bingmann@student.kit.edu>
+ */
+#include "gnuplot.h"
+#include "ns3/assert.h"
+#include <ostream>
+#include <stdexcept>
+
+namespace ns3 {
+
+// --- GnuplotDataset::Data ------------------------------------------------ //
+
+struct GnuplotDataset::Data
+{
+  // *** Data Variables ***
+
+  unsigned int m_references;
+
+  std::string m_title;
+  std::string m_extra;
+
+  /**
+   * Initializes the reference counter to 1 and sets m_title and m_extra.
+   */
+  Data(const std::string& title);
+
+  /// Required.
+  virtual ~Data();
+
+  /**
+   * Returns "plot" or "splot".
+   */
+  virtual std::string GetCommand() const = 0;
+
+  /**
+   * Prints the plot description used as argument to (s)plot. Either the
+   * function expression or a datafile description. Should include m_title and
+   * m_extra in the output.
+   */
+  virtual void PrintExpression(std::ostream &os) const = 0;
+    
+  /**
+   * Print the inline data file contents trailing the plot command. Empty for
+   * functions.
+   */
+  virtual void PrintDatafile(std::ostream &os) const = 0;
+};
+
+GnuplotDataset::Data::Data(const std::string& title)
+  : m_references(1),
+    m_title(title),
+    m_extra(m_defaultExtra)
+{
+}
+
+GnuplotDataset::Data::~Data()
+{
+}
+
+// --- GnuplotDataset ------------------------------------------------------ //
+
+std::string GnuplotDataset::m_defaultExtra = "";
+
+GnuplotDataset::GnuplotDataset (struct Data* data)
+  : m_data(data)
+{
+}
+
+GnuplotDataset::GnuplotDataset (const GnuplotDataset& original)
+  : m_data(original.m_data)
+{
+  ++m_data->m_references;
+}
+
+GnuplotDataset::~GnuplotDataset()
+{
+  if (--m_data->m_references == 0)
+    delete m_data;
+}
+
+GnuplotDataset& GnuplotDataset::operator= (const GnuplotDataset& original)
+{
+  if (this != &original)
+    {
+      if (--m_data->m_references == 0)
+        delete m_data;
+
+      m_data = original.m_data;
+      ++m_data->m_references;
+    }
+  return *this;
+}
+
+void
+GnuplotDataset::SetTitle (const std::string& title)
+{
+  m_data->m_title = title;
+}
+
+void
+GnuplotDataset::SetDefaultExtra (const std::string& extra)
+{
+  m_defaultExtra = extra;
+}
+void
+GnuplotDataset::SetExtra (const std::string& extra)
+{
+  m_data->m_extra = extra;
+}
+
+// --- Gnuplot2dDataset::Data2d -------------------------------------------- //
+
+struct Gnuplot2dDataset::Data2d : public GnuplotDataset::Data
+{
+  // *** Data Variables ***
+    
+  enum Style  m_style;
+  enum ErrorBars m_errorBars;
+
+  PointSet    m_pointset;
+
+  /**
+   * Initializes with the values from m_defaultStyle and m_defaultErrorBars.
+   */
+  Data2d(const std::string& title);
+
+  virtual std::string GetCommand() const;
+  virtual void PrintExpression(std::ostream &os) const;
+  virtual void PrintDatafile(std::ostream &os) const;
+};
+
+Gnuplot2dDataset::Data2d::Data2d(const std::string& title)
+  : Data(title),
+    m_style(m_defaultStyle),
+    m_errorBars(m_defaultErrorBars)
+{
+}
+
+std::string
+Gnuplot2dDataset::Data2d::GetCommand() const
+{
+  return "plot";
+}
+
+void
+Gnuplot2dDataset::Data2d::PrintExpression(std::ostream &os) const
+{
+  os << "'-' ";
+
+  if (m_title.size())
+    os << " title '" << m_title << "'";
+
+  switch (m_style) {
+  case LINES:
+    os << " with lines";
+    break;
+  case POINTS:
+    switch (m_errorBars)
+      {
+      case NONE:
+        os << " with points";
+        break;
+      case X:
+        os << " with xerrorbars";
+        break;
+      case Y:
+        os << " with yerrorbars";
+        break;
+      case XY:
+        os << " with xyerrorbars";
+        break;
+      }
+    break;
+  case LINES_POINTS:
+    switch (m_errorBars)
+      {
+      case NONE:
+        os << " with linespoints";
+        break;
+      case X:
+        os << " with errorlines";
+        break;
+      case Y:
+        os << " with yerrorlines";
+        break;
+      case XY:
+        os << " with xyerrorlines";
+        break;
+      }
+    break;
+  case DOTS:
+    os << " with dots";
+    break;
+  case IMPULSES:
+    os << " with impulses";
+    break;
+  case STEPS:
+    os << " with steps";
+    break;
+  case FSTEPS:
+    os << " with fsteps";
+    break;
+  case HISTEPS:
+    os << " with histeps";
+    break;
+  }
+
+  if (m_extra.size())
+    os << " " << m_extra;
+}
+
+void
+Gnuplot2dDataset::Data2d::PrintDatafile(std::ostream &os) const
+{
+  for (PointSet::const_iterator i = m_pointset.begin ();
+       i != m_pointset.end (); ++i)
+    {
+      if (i->empty) {
+        os << std::endl;
+        continue;
+      }
+
+      switch (m_errorBars) {
+      case NONE:
+        os << i->x << " " << i->y << std::endl;
+        break;
+      case X:
+        os << i->x << " " << i->y << " " << i->dx << std::endl;
+        break;
+      case Y:
+        os << i->x << " " << i->y << " " << i->dy << std::endl;
+        break;
+      case XY:
+        os << i->x << " " << i->y << " " << i->dx << " " << i->dy << std::endl;
+        break;
+      }
+    }
+  os << "e" << std::endl;
+}
+
+// --- Gnuplot2dDataset ---------------------------------------------------- //
+
+enum Gnuplot2dDataset::Style Gnuplot2dDataset::m_defaultStyle = LINES;
+enum Gnuplot2dDataset::ErrorBars Gnuplot2dDataset::m_defaultErrorBars = NONE;
+
+Gnuplot2dDataset::Gnuplot2dDataset (const std::string& title)
+  : GnuplotDataset( new Data2d(title) )
+{
+}
+
+void
+Gnuplot2dDataset::SetDefaultStyle (enum Style style)
+{
+  m_defaultStyle = style;
+}
+void
+Gnuplot2dDataset::SetStyle (enum Style style)
+{
+  reinterpret_cast<Data2d*>(m_data)->m_style = style;
+}
+
+void
+Gnuplot2dDataset::SetDefaultErrorBars (enum ErrorBars errorBars)
+{
+  m_defaultErrorBars = errorBars;
+}
+void
+Gnuplot2dDataset::SetErrorBars (enum ErrorBars errorBars)
+{
+  reinterpret_cast<Data2d*>(m_data)->m_errorBars = errorBars;
+}
+
+void 
+Gnuplot2dDataset::Add (double x, double y)
+{
+  NS_ASSERT (reinterpret_cast<Data2d*>(m_data)->m_errorBars == NONE);
+
+  struct Point data;
+  data.empty = false;
+  data.x = x;
+  data.y = y;
+  data.dx = 0.0;
+  data.dy = 0.0;
+  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
+}
+
+void 
+Gnuplot2dDataset::Add (double x, double y, double errorDelta)
+{
+  NS_ASSERT ( reinterpret_cast<Data2d*>(m_data)->m_errorBars == X ||
+              reinterpret_cast<Data2d*>(m_data)->m_errorBars == Y );
+
+  struct Point data;
+  data.empty = false;
+  data.x = x;
+  data.y = y;
+  data.dx = errorDelta;
+  data.dy = errorDelta;
+  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
+}
+
+void 
+Gnuplot2dDataset::Add (double x, double y, double minY, double maxY)
+{
+  NS_ASSERT ( reinterpret_cast<Data2d*>(m_data)->m_errorBars == X ||
+              reinterpret_cast<Data2d*>(m_data)->m_errorBars == Y );
+
+  struct Point data;
+  data.empty = false;
+  data.x = x;
+  data.y = y;
+  data.dx = minY;
+  data.dy = maxY;
+  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
+}
+
+void
+Gnuplot2dDataset::AddEmptyLine()
+{
+  struct Point data;
+  data.empty = true;
+  reinterpret_cast<Data2d*>(m_data)->m_pointset.push_back (data);
+}
+
+// --- Gnuplot2dFunction::Function2d --------------------------------------- //
+
+struct Gnuplot2dFunction::Function2d : public GnuplotDataset::Data
+{
+  // *** Data Variables ***
+
+  std::string m_function;
+
+  /**
+   * Initializes with the function and title.
+   */
+  Function2d(const std::string& title, const std::string& function);
+
+  virtual std::string GetCommand() const;
+  virtual void PrintExpression(std::ostream &os) const;
+  virtual void PrintDatafile(std::ostream &os) const;
+};
+
+Gnuplot2dFunction::Function2d::Function2d(const std::string& title, const std::string& function)
+  : Data(title),
+    m_function(function)
+{
+}
+
+std::string
+Gnuplot2dFunction::Function2d::GetCommand() const
+{
+  return "plot";
+}
+
+void
+Gnuplot2dFunction::Function2d::PrintExpression(std::ostream &os) const
+{
+  os << m_function;
+
+  if (m_title.size())
+    os << " title '" << m_title << "'";
+
+  if (m_extra.size())
+    os << " " << m_extra;
+}
+
+void
+Gnuplot2dFunction::Function2d::PrintDatafile(std::ostream &os) const
+{
+}
+
+// --- Gnuplot2dFunction --------------------------------------------------- //
+
+Gnuplot2dFunction::Gnuplot2dFunction (const std::string& title, const std::string& function)
+  : GnuplotDataset( new Function2d(title, function) )
+{
+}
+
+void
+Gnuplot2dFunction::SetFunction (const std::string& function)
+{
+  reinterpret_cast<Function2d*>(m_data)->m_function = function;
+}
+
+// --- Gnuplot3dDataset::Data3d -------------------------------------------- //
+
+struct Gnuplot3dDataset::Data3d : public GnuplotDataset::Data
+{
+  // *** Data Variables ***
+    
+  std::string   m_style;
+
+  PointSet      m_pointset;
+
+  /**
+   * Initializes with value from m_defaultStyle.
+   */
+  Data3d(const std::string& title);
+
+  virtual std::string GetCommand() const;
+  virtual void PrintExpression(std::ostream &os) const;
+  virtual void PrintDatafile(std::ostream &os) const;
+};
+
+Gnuplot3dDataset::Data3d::Data3d(const std::string& title)
+  : Data(title),
+    m_style(m_defaultStyle)
+{
+}
+
+std::string
+Gnuplot3dDataset::Data3d::GetCommand() const
+{
+  return "splot";
+}
+
+void
+Gnuplot3dDataset::Data3d::PrintExpression(std::ostream &os) const
+{
+  os << "'-' ";
+
+  if (m_style.size())
+    os << " " << m_style;
+
+  if (m_title.size())
+    os << " title '" << m_title << "'";
+
+  if (m_extra.size())
+    os << " " << m_extra;
+}
+
+void
+Gnuplot3dDataset::Data3d::PrintDatafile(std::ostream &os) const
+{
+  for (PointSet::const_iterator i = m_pointset.begin ();
+       i != m_pointset.end (); ++i)
+    {
+      if (i->empty) {
+        os << std::endl;
+        continue;
+      }
+
+      os << i->x << " " << i->y << " " << i->z << std::endl;
+    }
+  os << "e" << std::endl;
+}
+
+// --- Gnuplot3dDataset ---------------------------------------------------- //
+
+std::string Gnuplot3dDataset::m_defaultStyle = "";
+
+Gnuplot3dDataset::Gnuplot3dDataset (const std::string& title)
+  : GnuplotDataset( new Data3d(title) )
+{
+}
+
+void
+Gnuplot3dDataset::SetDefaultStyle (const std::string& style)
+{
+  m_defaultStyle = style;
+}
+void
+Gnuplot3dDataset::SetStyle (const std::string& style)
+{
+  reinterpret_cast<Data3d*>(m_data)->m_style = style;
+}
+
+void 
+Gnuplot3dDataset::Add (double x, double y, double z)
+{
+  struct Point data;
+  data.empty = false;
+  data.x = x;
+  data.y = y;
+  data.z = z;
+  reinterpret_cast<Data3d*>(m_data)->m_pointset.push_back (data);
+}
+
+void
+Gnuplot3dDataset::AddEmptyLine()
+{
+  struct Point data;
+  data.empty = true;
+  reinterpret_cast<Data3d*>(m_data)->m_pointset.push_back (data);
+}
+
+// --- Gnuplot3dFunction::Function3d --------------------------------------- //
+
+struct Gnuplot3dFunction::Function3d : public GnuplotDataset::Data
+{
+  // *** Data Variables ***
+
+  std::string m_function;
+
+  /**
+   * Initializes with the function and title.
+   */
+  Function3d(const std::string& title, const std::string& function);
+
+  virtual std::string GetCommand() const;
+  virtual void PrintExpression(std::ostream &os) const;
+  virtual void PrintDatafile(std::ostream &os) const;
+};
+
+Gnuplot3dFunction::Function3d::Function3d(const std::string& title, const std::string& function)
+  : Data(title),
+    m_function(function)
+{
+}
+
+std::string
+Gnuplot3dFunction::Function3d::GetCommand() const
+{
+  return "splot";
+}
+
+void
+Gnuplot3dFunction::Function3d::PrintExpression(std::ostream &os) const
+{
+  os << m_function;
+
+  if (m_title.size())
+    os << " title '" << m_title << "'";
+
+  if (m_extra.size())
+    os << " " << m_extra;
+}
+
+void
+Gnuplot3dFunction::Function3d::PrintDatafile(std::ostream &os) const
+{
+}
+
+// --- Gnuplot3dFunction --------------------------------------------------- //
+
+Gnuplot3dFunction::Gnuplot3dFunction (const std::string& title, const std::string& function)
+  : GnuplotDataset( new Function3d(title, function) )
+{
+}
+
+void
+Gnuplot3dFunction::SetFunction (const std::string& function)
+{
+  reinterpret_cast<Function3d*>(m_data)->m_function = function;
+}
+
+// ------------------------------------------------------------------------- //
+
+Gnuplot::Gnuplot (const std::string& outputFilename, const std::string& title)
+  : m_outputFilename(outputFilename),
+    m_terminal( DetectTerminal(outputFilename) ),
+    m_title(title)
+{
+}
+
+std::string Gnuplot::DetectTerminal (const std::string& filename)
+{
+  std::string::size_type dotpos = filename.rfind('.');
+  if (dotpos == std::string::npos) return "";
+
+  if (filename.substr(dotpos) == ".png") {
+    return "png";
+  }
+  else if (filename.substr(dotpos) == ".pdf") {
+    return "pdf";
+  }
+
+  return "";
+}
+
+void
+Gnuplot::SetTerminal (const std::string& terminal)
+{
+  m_terminal = terminal;
+}
+
+void
+Gnuplot::SetTitle (const std::string& title)
+{
+  m_title = title;
+}
+
+void 
+Gnuplot::SetLegend (const std::string& xLegend, const std::string& yLegend)
+{
+  m_xLegend = xLegend;
+  m_yLegend = yLegend;
+}
+
+void
+Gnuplot::SetExtra (const std::string& extra)
+{
+  m_extra = extra;
+}
+
+void
+Gnuplot::AppendExtra (const std::string& extra)
+{
+  m_extra += "\n";
+  m_extra += extra;
+}
+
+void 
+Gnuplot::AddDataset (const GnuplotDataset& dataset)
+{
+  m_datasets.push_back (dataset);
+}
+
+void
+Gnuplot::GenerateOutput (std::ostream &os) const
+{
+  if (m_terminal.size())
+    os << "set terminal " << m_terminal << std::endl;
+
+  if (m_outputFilename.size())
+    os << "set output '" << m_outputFilename << "'" << std::endl;
+
+  if (m_title.size())
+    os << "set title '" << m_title << "'" << std::endl;
+  
+  if (m_xLegend.size())
+    os << "set xlabel '" << m_xLegend << "'" << std::endl;
+
+  if (m_yLegend.size())
+    os << "set ylabel '" << m_yLegend << "'" << std::endl;
+
+  if (m_extra.size())
+    os << m_extra << std::endl;
+
+  if (m_datasets.empty())
+    return;
+
+  // Determine the GetCommand() values of all datasets included. Check that all
+  // are equal and print the command.
+
+  std::string command = m_datasets.begin()->m_data->GetCommand();
+
+  for (Datasets::const_iterator i = m_datasets.begin () + 1;
+       i != m_datasets.end (); ++i)
+    {
+      NS_ASSERT_MSG(command == i->m_data->GetCommand(),
+                    "Cannot mix 'plot' and 'splot' GnuplotDatasets.");
+    }
+
+  os << command << " ";
+
+  // Print all dataset expressions
+
+  for (Datasets::const_iterator i = m_datasets.begin (); i != m_datasets.end ();)
+    {
+      i->m_data->PrintExpression(os);
+
+      i++;
+
+      if (i != m_datasets.end ())
+	{
+	  os << ", ";
+	}
+    }
+  os << std::endl;
+
+  // followed by the inline datafile.
+
+  for (Datasets::const_iterator i = m_datasets.begin (); i != m_datasets.end (); i++)
+    {
+      i->m_data->PrintDatafile(os);
+    }
+}
+
+// ------------------------------------------------------------------------- //
+
+GnuplotCollection::GnuplotCollection (const std::string& outputFilename)
+  : m_outputFilename(outputFilename),
+    m_terminal( Gnuplot::DetectTerminal(outputFilename) )
+{
+}
+
+void
+GnuplotCollection::SetTerminal (const std::string& terminal)
+{
+  m_terminal = terminal;
+}
+
+void
+GnuplotCollection::AddPlot (const Gnuplot& plot)
+{
+  m_plots.push_back (plot);
+}
+
+Gnuplot&
+GnuplotCollection::GetPlot(unsigned int id)
+{
+  if (id >= m_plots.size())
+    throw(std::range_error("Gnuplot id is out of range"));
+  else
+    return m_plots[id];
+}
+
+void
+GnuplotCollection::GenerateOutput (std::ostream &os) const
+{
+  if (m_terminal.size())
+    os << "set terminal " << m_terminal << std::endl;
+
+  if (m_outputFilename.size())
+    os << "set output '" << m_outputFilename << "'" << std::endl;
+
+  for (Plots::const_iterator i = m_plots.begin (); i != m_plots.end (); ++i)
+    {
+      i->GenerateOutput (os);
+    }
+}
+
+// ------------------------------------------------------------------------- //
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/model/gnuplot.h	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,460 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 INRIA, 2008 Timo Bingmann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Original Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
+ * Enhancements: Timo Bingmann <timo.bingmann@student.kit.edu>
+ */
+#ifndef GNUPLOT_H
+#define GNUPLOT_H
+
+#include <string>
+#include <vector>
+#include <utility>
+
+namespace ns3 {
+
+/**
+ * \brief Abstract class to store a plot line to be used by ns3::Gnuplot.
+ *
+ * This class contains a reference counted data object in m_data. The data
+ * object contains different structs derived from struct Data by subclasses.
+ */
+class GnuplotDataset
+{
+public:
+
+  /**
+   * Reference-counting copy constructor.
+   */
+  GnuplotDataset (const GnuplotDataset& original);
+
+  /**
+   * Reference-counting destructor.
+   */
+  ~GnuplotDataset();
+
+  /**
+   * Reference-counting assignment operator.
+   */
+  GnuplotDataset& operator= (const GnuplotDataset& original);
+
+  /**
+   * \brief Change line title.
+   * \param title the new title string to use for this dataset.
+   */
+  void SetTitle (const std::string& title);
+
+  /**
+   * \brief Change extra formatting style parameters for newly created objects.
+   * \param extra       extra formatting
+   */
+  static void SetDefaultExtra (const std::string& extra);
+
+  /**
+   * \brief Add extra formatting parameters to this dataset.
+   * \param extra       extra formatting
+   */
+  void SetExtra (const std::string& extra);
+
+protected:
+
+  /// Friend because it accesses m_data and it's virtual functions directly in
+  /// GenerateOutput().
+  friend class Gnuplot;
+
+  /**
+   * \brief Extra gnuplot parameters set on every newly created dataset.
+   */
+  static std::string m_defaultExtra;
+
+  /**
+   * \brief Derived classes subclass this struct and add their own data fields.
+   */
+  struct Data;
+
+  /**
+   * Called by constructors of derived classes.
+   * \param data the reference counted data object representing this dataset.
+   */
+  GnuplotDataset (struct Data* data);
+
+  /**
+   * Reference counted data object.
+   */
+  struct Data*  m_data;
+};
+
+/**
+ * \brief Class to represent a 2D points plot. Set the line or points style
+ * using SetStyle() and set points using Add().
+ */
+class Gnuplot2dDataset : public GnuplotDataset
+{
+public:
+  /**
+   * The plotting style to use for this dataset.
+   */
+  enum Style {
+    LINES,
+    POINTS,
+    LINES_POINTS,
+    DOTS,
+    IMPULSES,
+    STEPS,
+    FSTEPS,
+    HISTEPS,
+  };
+
+  /**
+   * Whether errorbars should be used for this dataset.
+   */
+  enum ErrorBars {
+    NONE,
+    X,
+    Y,
+    XY
+  };
+
+  /**
+   * \param title the title to be associated to this dataset.
+   *
+   * Create an empty dataset. Usually, the dataset's title is 
+   * displayed in the legend box.
+   */
+  Gnuplot2dDataset (const std::string& title = "Untitled");
+
+  /**
+   * Change default style for all newly created objects.
+   * \param style the style of plotting to use for newly created datasets.
+   */
+  static void SetDefaultStyle (enum Style style);
+
+  /**
+   * \param style the style of plotting to use for this dataset.
+   */
+  void SetStyle (enum Style style);
+
+  /**
+   * Change default errorbars style for all newly created objects.
+   * \param errorBars the style of errorbars to use for newly created datasets.
+   */
+  static void SetDefaultErrorBars (enum ErrorBars errorBars);
+
+  /**
+   * \param errorBars the style of errorbars to display.
+   *
+   * If you use any style other than none, you need
+   * to make sure you store the delta information in 
+   * this dataset with the right GnuplotDataset::Add 
+   * method.
+   */
+  void SetErrorBars (enum ErrorBars errorBars);
+
+  /**
+   * \param x x coord to new data point
+   * \param y y coord to new data point
+   *
+   * Use this method with error bar style NONE.
+   */
+  void Add (double x, double y);
+
+  /**
+   * \param x x coord to new data point
+   * \param y y coord to new data point
+   * \param errorDelta data point error range.
+   *
+   * Use this method with error bar style X or Y.
+   */
+  void Add (double x, double y, double errorDelta);
+
+  /**
+   * \param x x coord to new data point
+   * \param y y coord to new data point
+   * \param minY minimum error data point
+   * \param maxY maximum error data point
+   *
+   * Use this method with error bar style X or Y.
+   */
+  void Add (double x, double y, double minY, double maxY);
+
+  /**
+   * Add an empty line in the data output sequence. Empty lines in the plot
+   * data break continuous lines and do other things in the output.
+   */
+  void AddEmptyLine();
+
+private:
+
+  struct Point {
+    bool empty;
+    double x;
+    double y;
+    double dx;
+    double dy;
+  };
+
+  typedef std::vector<struct Point> PointSet;
+
+  static enum Style m_defaultStyle;
+  static enum ErrorBars m_defaultErrorBars;
+
+  /// Forward declaration of the internal data class.
+  struct Data2d;
+};
+
+/**
+ * \brief Class to represent a 2D function expression plot.
+ *
+ * Since the function expression is not escaped, styles and extras could just
+ * as well be included in the expression string.
+ */
+class Gnuplot2dFunction : public GnuplotDataset
+{
+public:
+  /**
+   * \param title the title to be associated to this dataset.
+   * \param function function to plot
+   *
+   * Create an function dataset. Usually, the dataset's title is displayed in
+   * the legend box.
+   */
+  Gnuplot2dFunction (const std::string& title = "Untitled", const std::string& function = "");
+
+  /**
+   * \param function new function string to set
+   */
+  void SetFunction (const std::string& function);
+
+private:
+
+  /// Forward declaration of the internal data class.
+  struct Function2d;
+};
+
+/**
+ * \brief Class to represent a 3D points plot. Set the line or points style
+ * using SetStyle() and set points using Add().
+ */
+class Gnuplot3dDataset : public GnuplotDataset
+{
+public:
+  /**
+   * \param title the title to be associated to this dataset.
+   *
+   * Create an empty dataset. Usually, the dataset's title is 
+   * displayed in the legend box.
+   */
+  Gnuplot3dDataset (const std::string& title = "Untitled");
+
+  /**
+   * Change default style for all newly created objects.
+   * \param style the style of plotting to use for newly created datasets.
+   */
+  static void SetDefaultStyle (const std::string& style);
+
+  /**
+   * \param style the style of plotting to use for this dataset.
+   */
+  void SetStyle (const std::string& style);
+
+  /**
+   * \param x x coord to new data point
+   * \param y y coord to new data point
+   * \param z z coord to new data point
+   *
+   * Use this method to add a new 3D point
+   */
+  void Add (double x, double y, double z);
+
+  /**
+   * Add an empty line in the data output sequence. Empty lines in the plot
+   * data break continuous lines and do other things in the output.
+   */
+  void AddEmptyLine();
+
+private:
+
+  struct Point {
+    bool empty;
+    double x, y, z;
+  };
+
+  typedef std::vector<struct Point> PointSet;
+
+  static std::string m_defaultStyle;
+
+  /// Forward declaration of the internal data class.
+  struct Data3d;
+};
+
+/**
+ * \brief Class to represent a 3D function expression plot.
+ *
+ * Since the function expression is not escaped, styles and extras could just as
+ * well be included in the expression string. The only difference to
+ * Gnuplot2dFunction is the splot command string.
+ */
+class Gnuplot3dFunction : public GnuplotDataset
+{
+public:
+  /**
+   * \param title the title to be associated to this dataset.
+   * \param function function to plot
+   *
+   * Create an function dataset. Usually, the dataset's title is displayed in
+   * the legend box.
+   */
+  Gnuplot3dFunction (const std::string& title = "Untitled", const std::string& function = "");
+
+  /**
+   * \param function new function string to set
+   */
+  void SetFunction (const std::string& function);
+
+private:
+
+  /// Forward declaration of the internal data class.
+  struct Function3d;
+};
+
+/**
+ * \brief a simple class to generate gnuplot-ready plotting commands
+ *        from a set of datasets.
+ *
+ * This class really represents a single graph on which multiple datasets
+ * can be plotted.
+ */
+class Gnuplot
+{
+public:
+  /**
+   * \param outputFilename the name of the file where the rendering of the
+   *        graph will be generated if you feed the command stream output by
+   *        Gnuplot::GenerateOutput to the gnuplot program.
+   * \param title title line of the plot page 
+   */
+  Gnuplot (const std::string& outputFilename="", const std::string& title = "");
+
+  /**
+   * Crude attempt to auto-detect the correct terminal setting by inspecting
+   * the filename's extension.
+   * \param filename output file name
+   */
+  static std::string DetectTerminal(const std::string& filename);
+
+  /**
+   * \param terminal terminal setting string for output. The default terminal
+   * string is "png"
+   */
+  void SetTerminal (const std::string& terminal);
+
+  /**
+   * \param title set new plot title string to use for this plot.
+   */
+  void SetTitle (const std::string& title);
+
+  /**
+   * \param xLegend the legend for the x horizontal axis
+   * \param yLegend the legend for the y vertical axis
+   */
+  void SetLegend (const std::string& xLegend, const std::string& yLegend);
+
+  /**
+   * \param extra set extra gnuplot directive for output.
+   */
+  void SetExtra (const std::string& extra);
+
+  /**
+   * \param extra append extra gnuplot directive for output.
+   */
+  void AppendExtra (const std::string& extra);
+
+  /**
+   * \param dataset add a dataset to the graph to be plotted.
+   */
+  void AddDataset (const GnuplotDataset& dataset);
+
+  /**
+   * \param os the output stream on which the relevant gnuplot commands should
+   * be generated. Including output file and terminal headers.
+   */
+  void GenerateOutput (std::ostream &os) const;
+
+private:
+  typedef std::vector<GnuplotDataset> Datasets;
+
+  std::string m_outputFilename;
+  std::string m_terminal;
+
+  Datasets m_datasets;
+
+  std::string m_title;
+  std::string m_xLegend;
+  std::string m_yLegend;
+  std::string m_extra;
+};
+
+/**
+ * \brief a simple class to group together multiple gnuplots into one file,
+ * e.g. for PDF multi-page output terminals.
+ */
+class GnuplotCollection
+{
+public:
+  /**
+   * \param outputFilename the name of the file where the rendering of the
+   *        graph will be generated if you feed the command stream output by
+   *        GnuplotCollection::GenerateOutput to the gnuplot program.
+   */
+  GnuplotCollection (const std::string& outputFilename);
+
+  /**
+   * \param terminal terminal setting string for output. The default terminal
+   * string is guessed from the output filename's extension.
+   */
+  void SetTerminal (const std::string& terminal);
+
+  /**
+   * \param plot add a plot to the collection to be plotted.
+   */
+  void AddPlot (const Gnuplot& plot);
+
+  /**
+   * Return a pointer to one of the added plots.
+   * \param id  index of plot to return
+   * \return    reference to plot, throws std::range_error if it does not exist.
+   */
+  Gnuplot& GetPlot(unsigned int id);
+
+  /**
+   * \param os the output stream on which the relevant gnuplot commands should
+   * be generated.
+   */
+  void GenerateOutput (std::ostream &os) const;
+ 
+private:
+  typedef std::vector<Gnuplot> Plots;
+
+  std::string m_outputFilename;
+  std::string m_terminal;
+
+  Plots       m_plots;
+};
+
+} // namespace ns3
+
+#endif /* GNUPLOT_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -0,0 +1,21 @@
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+def build(bld):
+
+    module = bld.create_ns3_module('tools', ['network'])
+    module.source = [
+        'model/event-garbage-collector.cc',
+        'model/gnuplot.cc',
+        'model/delay-jitter-estimation.cc',
+        ]
+    
+    headers = bld.new_task_gen('ns3header')
+    headers.module = 'tools'
+    headers.source = [
+        'model/average.h',
+        'model/event-garbage-collector.h',
+        'model/gnuplot.h',
+        'model/delay-jitter-estimation.h',
+        ]
+
+    bld.ns3_python_bindings()
--- a/src/uan/examples/uan-cw-example.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/uan/examples/uan-cw-example.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -40,7 +40,7 @@
 #include "ns3/core-module.h"
 #include "ns3/network-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/tools-module.h"
 #include "ns3/applications-module.h"
 
 #include <fstream>
--- a/src/uan/examples/uan-cw-example.h	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/uan/examples/uan-cw-example.h	Thu Mar 24 09:23:44 2011 -0700
@@ -22,7 +22,7 @@
 #define UANCWEXAMPLE_H
 
 #include "ns3/network-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/tools-module.h"
 #include "ns3/uan-module.h"
 
 using namespace ns3;
--- a/src/uan/examples/uan-rc-example.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/uan/examples/uan-rc-example.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -59,7 +59,7 @@
 #include "ns3/log.h"
 #include "ns3/config.h"
 #include "ns3/callback.h"
-#include "ns3/contrib-module.h"
+#include "ns3/tools-module.h"
 
 #include <fstream>
 
--- a/src/uan/examples/uan-rc-example.h	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/uan/examples/uan-rc-example.h	Thu Mar 24 09:23:44 2011 -0700
@@ -22,7 +22,7 @@
 #define UANRCEXAMPLE_H
 
 #include "ns3/network-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/tools-module.h"
 #include "ns3/uan-module.h"
 
 using namespace ns3;
--- a/src/uan/examples/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/uan/examples/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -1,8 +1,8 @@
 ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
 
 def build(bld):
-    obj = bld.create_ns3_program('uan-cw-example', ['internet', 'mobility', 'contrib', 'applications', 'uan'])
+    obj = bld.create_ns3_program('uan-cw-example', ['internet', 'mobility', 'tools', 'applications', 'uan'])
     obj.source = 'uan-cw-example.cc'
 
-    obj = bld.create_ns3_program('uan-rc-example', ['internet', 'mobility', 'contrib', 'applications', 'uan'])
+    obj = bld.create_ns3_program('uan-rc-example', ['internet', 'mobility', 'tools', 'applications', 'uan'])
     obj.source = 'uan-rc-example.cc'
--- a/src/uan/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/uan/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -7,7 +7,7 @@
         'model/uan-phy-gen.cc',
         'model/uan-transducer-hd.cc',
         'model/uan-address.cc',
-	    'model/uan-net-device.cc',
+        'model/uan-net-device.cc',
         'model/uan-tx-mode.cc',
         'model/uan-prop-model.cc',
         'model/uan-prop-model-ideal.cc',
@@ -34,12 +34,12 @@
         'model/uan-channel.h',
         'model/uan-phy.h',
         'model/uan-mac.h',
-	      'model/uan-net-device.h',
-	      'model/uan-prop-model.h',
-	      'model/uan-tx-mode.h',
-	      'model/uan-transducer.h',
+        'model/uan-net-device.h',
+        'model/uan-prop-model.h',
+        'model/uan-tx-mode.h',
+        'model/uan-transducer.h',
         'model/uan-phy-gen.h',
-	      'model/uan-transducer-hd.h',
+        'model/uan-transducer-hd.h',
         'model/uan-address.h',
         'model/uan-prop-model-ideal.h',
         'model/uan-mac-aloha.h',
--- a/src/wimax/examples/wimax-ipv4.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/wimax/examples/wimax-ipv4.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -54,7 +54,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wimax-module.h"
 #include "ns3/internet-module.h"
 #include "ns3/global-route-manager.h"
--- a/src/wimax/examples/wimax-multicast.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/wimax/examples/wimax-multicast.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -54,7 +54,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wimax-module.h"
 #include "ns3/csma-module.h"
 #include <iostream>
--- a/src/wimax/examples/wimax-simple.cc	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/wimax/examples/wimax-simple.cc	Thu Mar 24 09:23:44 2011 -0700
@@ -46,7 +46,7 @@
 #include "ns3/network-module.h"
 #include "ns3/applications-module.h"
 #include "ns3/mobility-module.h"
-#include "ns3/contrib-module.h"
+#include "ns3/config-store-module.h"
 #include "ns3/wimax-module.h"
 #include "ns3/internet-module.h"
 #include "ns3/global-route-manager.h"
--- a/src/wscript	Thu Mar 24 15:11:56 2011 +0100
+++ b/src/wscript	Thu Mar 24 09:23:44 2011 -0700
@@ -23,7 +23,7 @@
 all_modules = (
     'core',
     'network',
-    'contrib',
+    'config-store',
     'internet',
     'propagation',
     'point-to-point',
@@ -55,6 +55,7 @@
     'mpi',
     'topology-read',
     'energy',
+    'tools',
     'tools/visualizer',
     )
 
@@ -78,7 +79,7 @@
     conf.sub_config('core')
     conf.sub_config('emu')
     conf.sub_config('tap-bridge')
-    conf.sub_config('contrib')
+    conf.sub_config('config-store')
     conf.sub_config('internet')
     conf.sub_config('netanim')
     conf.sub_config('test')