text: /* This file was generated by PyBindGen 0.0.0.0 */
  #define PY_SSIZE_T_CLEAN
  #include <Python.h>
  #include <stddef.h>
  
  
  #if PY_VERSION_HEX < 0x020400F0
  
  #define PyEval_ThreadsInitialized() 1
  
  #define Py_CLEAR(op)				\
          do {                            	\
                  if (op) {			\
                          PyObject *tmp = (PyObject *)(op);	\
                          (op) = NULL;		\
                          Py_DECREF(tmp);		\
                  }				\
          } while (0)
  
  
  #define Py_VISIT(op)							\
          do { 								\
                  if (op) {						\
                          int vret = visit((PyObject *)(op), arg);	\
                          if (vret)					\
                                  return vret;				\
                  }							\
          } while (0)
  
  #endif
  
  
  
  #if PY_VERSION_HEX < 0x020500F0
  
  typedef int Py_ssize_t;
  # define PY_SSIZE_T_MAX INT_MAX
  # define PY_SSIZE_T_MIN INT_MIN
  typedef inquiry lenfunc;
  typedef intargfunc ssizeargfunc;
  typedef intobjargproc ssizeobjargproc;
  
  #endif
  
  
  #ifndef PyVarObject_HEAD_INIT
  #define PyVarObject_HEAD_INIT(type, size) \
          PyObject_HEAD_INIT(type) size,
  #endif
  
  
  #if PY_VERSION_HEX >= 0x03000000
  typedef void* cmpfunc;
  #define PyCObject_FromVoidPtr(a, b) PyCapsule_New(a, NULL, b)
  #define PyCObject_AsVoidPtr(a) PyCapsule_GetPointer(a, NULL)
  #define PyString_FromString(a) PyBytes_FromString(a)
  #define Py_TPFLAGS_CHECKTYPES 0 /* this flag doesn't exist in python 3 */
  #endif
  
  
  #if     __GNUC__ > 2
  # define PYBINDGEN_UNUSED(param) param __attribute__((__unused__))
  #elif     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
  # define PYBINDGEN_UNUSED(param) __attribute__((__unused__)) param
  #else
  # define PYBINDGEN_UNUSED(param) param
  #endif  /* !__GNUC__ */
  
  #ifndef _PyBindGenWrapperFlags_defined_
  #define _PyBindGenWrapperFlags_defined_
  typedef enum _PyBindGenWrapperFlags {
     PYBINDGEN_WRAPPER_FLAG_NONE = 0,
     PYBINDGEN_WRAPPER_FLAG_OBJECT_NOT_OWNED = (1<<0),
  } PyBindGenWrapperFlags;
  #endif
  
  
  #include "ns3/lr-wpan-module.h"
  #include <ostream>
  #include <sstream>
  #include <typeinfo>
  #include <map>
  #include <iostream>
  /* --- forward declarations --- */
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Address *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Address;
  
  
  extern PyTypeObject *_PyNs3Address_Type;
  #define PyNs3Address_Type (*_PyNs3Address_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Address_wrapper_registry;
  #define PyNs3Address_wrapper_registry (*_PyNs3Address_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::AsciiTraceHelper *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AsciiTraceHelper;
  
  
  extern PyTypeObject *_PyNs3AsciiTraceHelper_Type;
  #define PyNs3AsciiTraceHelper_Type (*_PyNs3AsciiTraceHelper_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3AsciiTraceHelper_wrapper_registry;
  #define PyNs3AsciiTraceHelper_wrapper_registry (*_PyNs3AsciiTraceHelper_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::AsciiTraceHelperForDevice *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AsciiTraceHelperForDevice;
  
  
  extern PyTypeObject *_PyNs3AsciiTraceHelperForDevice_Type;
  #define PyNs3AsciiTraceHelperForDevice_Type (*_PyNs3AsciiTraceHelperForDevice_Type)
  
  class PyNs3AsciiTraceHelperForDevice__PythonHelper : public ns3::AsciiTraceHelperForDevice
  {
  public:
      PyObject *m_pyself;
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3AsciiTraceHelperForDevice__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  };
  
  extern std::map<void*, PyObject*> *_PyNs3AsciiTraceHelperForDevice_wrapper_registry;
  #define PyNs3AsciiTraceHelperForDevice_wrapper_registry (*_PyNs3AsciiTraceHelperForDevice_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::AttributeConstructionList *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AttributeConstructionList;
  
  
  extern PyTypeObject *_PyNs3AttributeConstructionList_Type;
  #define PyNs3AttributeConstructionList_Type (*_PyNs3AttributeConstructionList_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3AttributeConstructionList_wrapper_registry;
  #define PyNs3AttributeConstructionList_wrapper_registry (*_PyNs3AttributeConstructionList_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::AttributeConstructionList::Item *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AttributeConstructionListItem;
  
  
  extern PyTypeObject *_PyNs3AttributeConstructionListItem_Type;
  #define PyNs3AttributeConstructionListItem_Type (*_PyNs3AttributeConstructionListItem_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3AttributeConstructionListItem_wrapper_registry;
  #define PyNs3AttributeConstructionListItem_wrapper_registry (*_PyNs3AttributeConstructionListItem_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Buffer *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Buffer;
  
  
  extern PyTypeObject *_PyNs3Buffer_Type;
  #define PyNs3Buffer_Type (*_PyNs3Buffer_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Buffer_wrapper_registry;
  #define PyNs3Buffer_wrapper_registry (*_PyNs3Buffer_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Buffer::Iterator *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3BufferIterator;
  
  
  extern PyTypeObject *_PyNs3BufferIterator_Type;
  #define PyNs3BufferIterator_Type (*_PyNs3BufferIterator_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3BufferIterator_wrapper_registry;
  #define PyNs3BufferIterator_wrapper_registry (*_PyNs3BufferIterator_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ByteTagIterator *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ByteTagIterator;
  
  
  extern PyTypeObject *_PyNs3ByteTagIterator_Type;
  #define PyNs3ByteTagIterator_Type (*_PyNs3ByteTagIterator_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ByteTagIterator_wrapper_registry;
  #define PyNs3ByteTagIterator_wrapper_registry (*_PyNs3ByteTagIterator_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ByteTagIterator::Item *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ByteTagIteratorItem;
  
  
  extern PyTypeObject *_PyNs3ByteTagIteratorItem_Type;
  #define PyNs3ByteTagIteratorItem_Type (*_PyNs3ByteTagIteratorItem_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ByteTagIteratorItem_wrapper_registry;
  #define PyNs3ByteTagIteratorItem_wrapper_registry (*_PyNs3ByteTagIteratorItem_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ByteTagList *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ByteTagList;
  
  
  extern PyTypeObject *_PyNs3ByteTagList_Type;
  #define PyNs3ByteTagList_Type (*_PyNs3ByteTagList_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ByteTagList_wrapper_registry;
  #define PyNs3ByteTagList_wrapper_registry (*_PyNs3ByteTagList_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ByteTagList::Iterator *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ByteTagListIterator;
  
  
  extern PyTypeObject *_PyNs3ByteTagListIterator_Type;
  #define PyNs3ByteTagListIterator_Type (*_PyNs3ByteTagListIterator_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ByteTagListIterator_wrapper_registry;
  #define PyNs3ByteTagListIterator_wrapper_registry (*_PyNs3ByteTagListIterator_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ByteTagList::Iterator::Item *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ByteTagListIteratorItem;
  
  
  extern PyTypeObject *_PyNs3ByteTagListIteratorItem_Type;
  #define PyNs3ByteTagListIteratorItem_Type (*_PyNs3ByteTagListIteratorItem_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ByteTagListIteratorItem_wrapper_registry;
  #define PyNs3ByteTagListIteratorItem_wrapper_registry (*_PyNs3ByteTagListIteratorItem_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackBase *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackBase;
  
  
  extern PyTypeObject *_PyNs3CallbackBase_Type;
  #define PyNs3CallbackBase_Type (*_PyNs3CallbackBase_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3CallbackBase_wrapper_registry;
  #define PyNs3CallbackBase_wrapper_registry (*_PyNs3CallbackBase_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::AttributeAccessor > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3AttributeAccessor;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3AttributeAccessor_Type;
  #define PyNs3DefaultDeleter__Ns3AttributeAccessor_Type (*_PyNs3DefaultDeleter__Ns3AttributeAccessor_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3AttributeAccessor_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3AttributeAccessor_wrapper_registry (*_PyNs3DefaultDeleter__Ns3AttributeAccessor_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::AttributeChecker > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3AttributeChecker;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3AttributeChecker_Type;
  #define PyNs3DefaultDeleter__Ns3AttributeChecker_Type (*_PyNs3DefaultDeleter__Ns3AttributeChecker_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3AttributeChecker_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3AttributeChecker_wrapper_registry (*_PyNs3DefaultDeleter__Ns3AttributeChecker_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::AttributeValue > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3AttributeValue;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3AttributeValue_Type;
  #define PyNs3DefaultDeleter__Ns3AttributeValue_Type (*_PyNs3DefaultDeleter__Ns3AttributeValue_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3AttributeValue_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3AttributeValue_wrapper_registry (*_PyNs3DefaultDeleter__Ns3AttributeValue_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::CallbackImplBase > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3CallbackImplBase;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3CallbackImplBase_Type;
  #define PyNs3DefaultDeleter__Ns3CallbackImplBase_Type (*_PyNs3DefaultDeleter__Ns3CallbackImplBase_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3CallbackImplBase_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3CallbackImplBase_wrapper_registry (*_PyNs3DefaultDeleter__Ns3CallbackImplBase_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::EventImpl > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3EventImpl;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3EventImpl_Type;
  #define PyNs3DefaultDeleter__Ns3EventImpl_Type (*_PyNs3DefaultDeleter__Ns3EventImpl_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3EventImpl_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3EventImpl_wrapper_registry (*_PyNs3DefaultDeleter__Ns3EventImpl_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::Hash::Implementation > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3HashImplementation;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3HashImplementation_Type;
  #define PyNs3DefaultDeleter__Ns3HashImplementation_Type (*_PyNs3DefaultDeleter__Ns3HashImplementation_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3HashImplementation_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3HashImplementation_wrapper_registry (*_PyNs3DefaultDeleter__Ns3HashImplementation_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::NixVector > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3NixVector;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3NixVector_Type;
  #define PyNs3DefaultDeleter__Ns3NixVector_Type (*_PyNs3DefaultDeleter__Ns3NixVector_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3NixVector_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3NixVector_wrapper_registry (*_PyNs3DefaultDeleter__Ns3NixVector_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::OutputStreamWrapper > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3OutputStreamWrapper;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3OutputStreamWrapper_Type;
  #define PyNs3DefaultDeleter__Ns3OutputStreamWrapper_Type (*_PyNs3DefaultDeleter__Ns3OutputStreamWrapper_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3OutputStreamWrapper_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3OutputStreamWrapper_wrapper_registry (*_PyNs3DefaultDeleter__Ns3OutputStreamWrapper_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::Packet > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3Packet;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3Packet_Type;
  #define PyNs3DefaultDeleter__Ns3Packet_Type (*_PyNs3DefaultDeleter__Ns3Packet_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3Packet_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3Packet_wrapper_registry (*_PyNs3DefaultDeleter__Ns3Packet_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::SpectrumSignalParameters > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3SpectrumSignalParameters;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3SpectrumSignalParameters_Type;
  #define PyNs3DefaultDeleter__Ns3SpectrumSignalParameters_Type (*_PyNs3DefaultDeleter__Ns3SpectrumSignalParameters_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3SpectrumSignalParameters_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3SpectrumSignalParameters_wrapper_registry (*_PyNs3DefaultDeleter__Ns3SpectrumSignalParameters_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::TraceSourceAccessor > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3TraceSourceAccessor;
  
  
  extern PyTypeObject *_PyNs3DefaultDeleter__Ns3TraceSourceAccessor_Type;
  #define PyNs3DefaultDeleter__Ns3TraceSourceAccessor_Type (*_PyNs3DefaultDeleter__Ns3TraceSourceAccessor_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3DefaultDeleter__Ns3TraceSourceAccessor_wrapper_registry;
  #define PyNs3DefaultDeleter__Ns3TraceSourceAccessor_wrapper_registry (*_PyNs3DefaultDeleter__Ns3TraceSourceAccessor_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::EventId *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3EventId;
  
  
  extern PyTypeObject *_PyNs3EventId_Type;
  #define PyNs3EventId_Type (*_PyNs3EventId_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3EventId_wrapper_registry;
  #define PyNs3EventId_wrapper_registry (*_PyNs3EventId_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Hasher *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Hasher;
  
  
  extern PyTypeObject *_PyNs3Hasher_Type;
  #define PyNs3Hasher_Type (*_PyNs3Hasher_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Hasher_wrapper_registry;
  #define PyNs3Hasher_wrapper_registry (*_PyNs3Hasher_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv4Address *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv4Address;
  
  
  extern PyTypeObject *_PyNs3Ipv4Address_Type;
  #define PyNs3Ipv4Address_Type (*_PyNs3Ipv4Address_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Ipv4Address_wrapper_registry;
  #define PyNs3Ipv4Address_wrapper_registry (*_PyNs3Ipv4Address_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv4Mask *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv4Mask;
  
  
  extern PyTypeObject *_PyNs3Ipv4Mask_Type;
  #define PyNs3Ipv4Mask_Type (*_PyNs3Ipv4Mask_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Ipv4Mask_wrapper_registry;
  #define PyNs3Ipv4Mask_wrapper_registry (*_PyNs3Ipv4Mask_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv6Address *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv6Address;
  
  
  extern PyTypeObject *_PyNs3Ipv6Address_Type;
  #define PyNs3Ipv6Address_Type (*_PyNs3Ipv6Address_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Ipv6Address_wrapper_registry;
  #define PyNs3Ipv6Address_wrapper_registry (*_PyNs3Ipv6Address_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv6Prefix *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv6Prefix;
  
  
  extern PyTypeObject *_PyNs3Ipv6Prefix_Type;
  #define PyNs3Ipv6Prefix_Type (*_PyNs3Ipv6Prefix_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Ipv6Prefix_wrapper_registry;
  #define PyNs3Ipv6Prefix_wrapper_registry (*_PyNs3Ipv6Prefix_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac16Address *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac16Address;
  
  
  extern PyTypeObject *_PyNs3Mac16Address_Type;
  #define PyNs3Mac16Address_Type (*_PyNs3Mac16Address_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Mac16Address_wrapper_registry;
  #define PyNs3Mac16Address_wrapper_registry (*_PyNs3Mac16Address_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac48Address *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac48Address;
  
  
  extern PyTypeObject *_PyNs3Mac48Address_Type;
  #define PyNs3Mac48Address_Type (*_PyNs3Mac48Address_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Mac48Address_wrapper_registry;
  #define PyNs3Mac48Address_wrapper_registry (*_PyNs3Mac48Address_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac64Address *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac64Address;
  
  
  extern PyTypeObject *_PyNs3Mac64Address_Type;
  #define PyNs3Mac64Address_Type (*_PyNs3Mac64Address_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Mac64Address_wrapper_registry;
  #define PyNs3Mac64Address_wrapper_registry (*_PyNs3Mac64Address_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::NetDeviceContainer *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3NetDeviceContainer;
  
  
  extern PyTypeObject *_PyNs3NetDeviceContainer_Type;
  #define PyNs3NetDeviceContainer_Type (*_PyNs3NetDeviceContainer_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3NetDeviceContainer_wrapper_registry;
  #define PyNs3NetDeviceContainer_wrapper_registry (*_PyNs3NetDeviceContainer_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::NodeContainer *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3NodeContainer;
  
  
  extern PyTypeObject *_PyNs3NodeContainer_Type;
  #define PyNs3NodeContainer_Type (*_PyNs3NodeContainer_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3NodeContainer_wrapper_registry;
  #define PyNs3NodeContainer_wrapper_registry (*_PyNs3NodeContainer_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ObjectBase *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ObjectBase;
  
  
  extern PyTypeObject *_PyNs3ObjectBase_Type;
  #define PyNs3ObjectBase_Type (*_PyNs3ObjectBase_Type)
  
  class PyNs3ObjectBase__PythonHelper : public ns3::ObjectBase
  {
  public:
      PyObject *m_pyself;
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3ObjectBase__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  };
  
  extern std::map<void*, PyObject*> *_PyNs3ObjectBase_wrapper_registry;
  #define PyNs3ObjectBase_wrapper_registry (*_PyNs3ObjectBase_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ObjectDeleter *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ObjectDeleter;
  
  
  extern PyTypeObject *_PyNs3ObjectDeleter_Type;
  #define PyNs3ObjectDeleter_Type (*_PyNs3ObjectDeleter_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ObjectDeleter_wrapper_registry;
  #define PyNs3ObjectDeleter_wrapper_registry (*_PyNs3ObjectDeleter_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::ObjectFactory *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ObjectFactory;
  
  
  extern PyTypeObject *_PyNs3ObjectFactory_Type;
  #define PyNs3ObjectFactory_Type (*_PyNs3ObjectFactory_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ObjectFactory_wrapper_registry;
  #define PyNs3ObjectFactory_wrapper_registry (*_PyNs3ObjectFactory_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PacketMetadata *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PacketMetadata;
  
  
  extern PyTypeObject *_PyNs3PacketMetadata_Type;
  #define PyNs3PacketMetadata_Type (*_PyNs3PacketMetadata_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PacketMetadata_wrapper_registry;
  #define PyNs3PacketMetadata_wrapper_registry (*_PyNs3PacketMetadata_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PacketMetadata::Item *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PacketMetadataItem;
  
  
  extern PyTypeObject *_PyNs3PacketMetadataItem_Type;
  #define PyNs3PacketMetadataItem_Type (*_PyNs3PacketMetadataItem_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PacketMetadataItem_wrapper_registry;
  #define PyNs3PacketMetadataItem_wrapper_registry (*_PyNs3PacketMetadataItem_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PacketMetadata::ItemIterator *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PacketMetadataItemIterator;
  
  
  extern PyTypeObject *_PyNs3PacketMetadataItemIterator_Type;
  #define PyNs3PacketMetadataItemIterator_Type (*_PyNs3PacketMetadataItemIterator_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PacketMetadataItemIterator_wrapper_registry;
  #define PyNs3PacketMetadataItemIterator_wrapper_registry (*_PyNs3PacketMetadataItemIterator_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PacketTagIterator *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PacketTagIterator;
  
  
  extern PyTypeObject *_PyNs3PacketTagIterator_Type;
  #define PyNs3PacketTagIterator_Type (*_PyNs3PacketTagIterator_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PacketTagIterator_wrapper_registry;
  #define PyNs3PacketTagIterator_wrapper_registry (*_PyNs3PacketTagIterator_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PacketTagIterator::Item *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PacketTagIteratorItem;
  
  
  extern PyTypeObject *_PyNs3PacketTagIteratorItem_Type;
  #define PyNs3PacketTagIteratorItem_Type (*_PyNs3PacketTagIteratorItem_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PacketTagIteratorItem_wrapper_registry;
  #define PyNs3PacketTagIteratorItem_wrapper_registry (*_PyNs3PacketTagIteratorItem_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PacketTagList *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PacketTagList;
  
  
  extern PyTypeObject *_PyNs3PacketTagList_Type;
  #define PyNs3PacketTagList_Type (*_PyNs3PacketTagList_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PacketTagList_wrapper_registry;
  #define PyNs3PacketTagList_wrapper_registry (*_PyNs3PacketTagList_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PacketTagList::TagData *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PacketTagListTagData;
  
  
  extern PyTypeObject *_PyNs3PacketTagListTagData_Type;
  #define PyNs3PacketTagListTagData_Type (*_PyNs3PacketTagListTagData_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PacketTagListTagData_wrapper_registry;
  #define PyNs3PacketTagListTagData_wrapper_registry (*_PyNs3PacketTagListTagData_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PcapFile *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PcapFile;
  
  
  extern PyTypeObject *_PyNs3PcapFile_Type;
  #define PyNs3PcapFile_Type (*_PyNs3PcapFile_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PcapFile_wrapper_registry;
  #define PyNs3PcapFile_wrapper_registry (*_PyNs3PcapFile_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PcapHelper *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PcapHelper;
  
  
  extern PyTypeObject *_PyNs3PcapHelper_Type;
  #define PyNs3PcapHelper_Type (*_PyNs3PcapHelper_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3PcapHelper_wrapper_registry;
  #define PyNs3PcapHelper_wrapper_registry (*_PyNs3PcapHelper_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PcapHelperForDevice *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PcapHelperForDevice;
  
  
  extern PyTypeObject *_PyNs3PcapHelperForDevice_Type;
  #define PyNs3PcapHelperForDevice_Type (*_PyNs3PcapHelperForDevice_Type)
  
  class PyNs3PcapHelperForDevice__PythonHelper : public ns3::PcapHelperForDevice
  {
  public:
      PyObject *m_pyself;
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3PcapHelperForDevice__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  };
  
  extern std::map<void*, PyObject*> *_PyNs3PcapHelperForDevice_wrapper_registry;
  #define PyNs3PcapHelperForDevice_wrapper_registry (*_PyNs3PcapHelperForDevice_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::SequenceNumber8 *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SequenceNumber8;
  
  
  extern PyTypeObject *_PyNs3SequenceNumber8_Type;
  #define PyNs3SequenceNumber8_Type (*_PyNs3SequenceNumber8_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3SequenceNumber8_wrapper_registry;
  #define PyNs3SequenceNumber8_wrapper_registry (*_PyNs3SequenceNumber8_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter > *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_Type;
  #define PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_Type (*_PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_Type)
  
  
  
  #include <map>
  #include <string>
  #include <typeinfo>
  #if defined(__GNUC__) && __GNUC__ >= 3 && !defined(__clang__)
  # include <cxxabi.h>
  #endif
  
  #define PBG_TYPEMAP_DEBUG 0
  
  namespace pybindgen {
  
  class TypeMap
  {
     std::map<std::string, PyTypeObject *> m_map;
  
  public:
  
     TypeMap() {}
  
     void register_wrapper(const std::type_info &cpp_type_info, PyTypeObject *python_wrapper)
     {
  
  #if PBG_TYPEMAP_DEBUG
     std::cerr << "register_wrapper(this=" << this << ", type_name=" << cpp_type_info.name()
               << ", python_wrapper=" << python_wrapper->tp_name << ")" << std::endl;
  #endif
  
         m_map[std::string(cpp_type_info.name())] = python_wrapper;
     }
  
  
  
     PyTypeObject * lookup_wrapper(const std::type_info &cpp_type_info, PyTypeObject *fallback_wrapper)
     {
  
  #if PBG_TYPEMAP_DEBUG
     std::cerr << "lookup_wrapper(this=" << this << ", type_name=" << cpp_type_info.name() << ")" << std::endl;
  #endif
  
         PyTypeObject *python_wrapper = m_map[cpp_type_info.name()];
         return python_wrapper? python_wrapper : fallback_wrapper;
     }
  };
  
  }
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter__typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter__typeid_map (*_PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter__typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Simulator *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Simulator;
  
  
  extern PyTypeObject *_PyNs3Simulator_Type;
  #define PyNs3Simulator_Type (*_PyNs3Simulator_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Simulator_wrapper_registry;
  #define PyNs3Simulator_wrapper_registry (*_PyNs3Simulator_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Tag *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Tag;
  
  
  extern PyTypeObject *_PyNs3Tag_Type;
  #define PyNs3Tag_Type (*_PyNs3Tag_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::TagBuffer *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TagBuffer;
  
  
  extern PyTypeObject *_PyNs3TagBuffer_Type;
  #define PyNs3TagBuffer_Type (*_PyNs3TagBuffer_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3TagBuffer_wrapper_registry;
  #define PyNs3TagBuffer_wrapper_registry (*_PyNs3TagBuffer_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::TimeWithUnit *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TimeWithUnit;
  
  
  extern PyTypeObject *_PyNs3TimeWithUnit_Type;
  #define PyNs3TimeWithUnit_Type (*_PyNs3TimeWithUnit_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3TimeWithUnit_wrapper_registry;
  #define PyNs3TimeWithUnit_wrapper_registry (*_PyNs3TimeWithUnit_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::TracedValue< ns3::LrWpanMacState > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TracedValue__Ns3LrWpanMacState;
  
  
  extern PyTypeObject *_PyNs3TracedValue__Ns3LrWpanMacState_Type;
  #define PyNs3TracedValue__Ns3LrWpanMacState_Type (*_PyNs3TracedValue__Ns3LrWpanMacState_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3TracedValue__Ns3LrWpanMacState_wrapper_registry;
  #define PyNs3TracedValue__Ns3LrWpanMacState_wrapper_registry (*_PyNs3TracedValue__Ns3LrWpanMacState_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::TracedValue< ns3::LrWpanPhyEnumeration > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TracedValue__Ns3LrWpanPhyEnumeration;
  
  
  extern PyTypeObject *_PyNs3TracedValue__Ns3LrWpanPhyEnumeration_Type;
  #define PyNs3TracedValue__Ns3LrWpanPhyEnumeration_Type (*_PyNs3TracedValue__Ns3LrWpanPhyEnumeration_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3TracedValue__Ns3LrWpanPhyEnumeration_wrapper_registry;
  #define PyNs3TracedValue__Ns3LrWpanPhyEnumeration_wrapper_registry (*_PyNs3TracedValue__Ns3LrWpanPhyEnumeration_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::TypeId *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TypeId;
  
  
  extern PyTypeObject *_PyNs3TypeId_Type;
  #define PyNs3TypeId_Type (*_PyNs3TypeId_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3TypeId_wrapper_registry;
  #define PyNs3TypeId_wrapper_registry (*_PyNs3TypeId_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::TypeId::AttributeInformation *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TypeIdAttributeInformation;
  
  
  extern PyTypeObject *_PyNs3TypeIdAttributeInformation_Type;
  #define PyNs3TypeIdAttributeInformation_Type (*_PyNs3TypeIdAttributeInformation_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3TypeIdAttributeInformation_wrapper_registry;
  #define PyNs3TypeIdAttributeInformation_wrapper_registry (*_PyNs3TypeIdAttributeInformation_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::TypeId::TraceSourceInformation *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TypeIdTraceSourceInformation;
  
  
  extern PyTypeObject *_PyNs3TypeIdTraceSourceInformation_Type;
  #define PyNs3TypeIdTraceSourceInformation_Type (*_PyNs3TypeIdTraceSourceInformation_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3TypeIdTraceSourceInformation_wrapper_registry;
  #define PyNs3TypeIdTraceSourceInformation_wrapper_registry (*_PyNs3TypeIdTraceSourceInformation_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::empty *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Empty;
  
  
  extern PyTypeObject *_PyNs3Empty_Type;
  #define PyNs3Empty_Type (*_PyNs3Empty_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Empty_wrapper_registry;
  #define PyNs3Empty_wrapper_registry (*_PyNs3Empty_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::int64x64_t *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Int64x64_t;
  
  
  extern PyTypeObject *_PyNs3Int64x64_t_Type;
  #define PyNs3Int64x64_t_Type (*_PyNs3Int64x64_t_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Int64x64_t_wrapper_registry;
  #define PyNs3Int64x64_t_wrapper_registry (*_PyNs3Int64x64_t_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::Chunk *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Chunk;
  
  
  extern PyTypeObject *_PyNs3Chunk_Type;
  #define PyNs3Chunk_Type (*_PyNs3Chunk_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Header *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Header;
  
  
  extern PyTypeObject *_PyNs3Header_Type;
  #define PyNs3Header_Type (*_PyNs3Header_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Object *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Object;
  
  
  extern PyTypeObject *_PyNs3Object_Type;
  #define PyNs3Object_Type (*_PyNs3Object_Type)
  
  class PyNs3Object__PythonHelper : public ns3::Object
  {
  public:
      PyObject *m_pyself;
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3Object__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  };
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Object::AggregateIterator *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ObjectAggregateIterator;
  
  
  extern PyTypeObject *_PyNs3ObjectAggregateIterator_Type;
  #define PyNs3ObjectAggregateIterator_Type (*_PyNs3ObjectAggregateIterator_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3ObjectAggregateIterator_wrapper_registry;
  #define PyNs3ObjectAggregateIterator_wrapper_registry (*_PyNs3ObjectAggregateIterator_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::PcapFileWrapper *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3PcapFileWrapper;
  
  
  extern PyTypeObject *_PyNs3PcapFileWrapper_Type;
  #define PyNs3PcapFileWrapper_Type (*_PyNs3PcapFileWrapper_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::AttributeAccessor, ns3::empty, ns3::DefaultDeleter<ns3::AttributeAccessor> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___Type;
  #define PyNs3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___Type (*_PyNs3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3AttributeAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeAccessor__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::AttributeChecker, ns3::empty, ns3::DefaultDeleter<ns3::AttributeChecker> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___Type;
  #define PyNs3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___Type (*_PyNs3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3AttributeChecker_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeChecker__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::AttributeValue, ns3::empty, ns3::DefaultDeleter<ns3::AttributeValue> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___Type;
  #define PyNs3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___Type (*_PyNs3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3AttributeValue_Ns3Empty_Ns3DefaultDeleter__lt__ns3AttributeValue__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::CallbackImplBase, ns3::empty, ns3::DefaultDeleter<ns3::CallbackImplBase> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___Type;
  #define PyNs3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___Type (*_PyNs3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3CallbackImplBase_Ns3Empty_Ns3DefaultDeleter__lt__ns3CallbackImplBase__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::EventImpl, ns3::empty, ns3::DefaultDeleter<ns3::EventImpl> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___Type;
  #define PyNs3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___Type (*_PyNs3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3EventImpl_Ns3Empty_Ns3DefaultDeleter__lt__ns3EventImpl__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter<ns3::Hash::Implementation> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___Type;
  #define PyNs3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___Type (*_PyNs3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3HashImplementation_Ns3Empty_Ns3DefaultDeleter__lt__ns3HashImplementation__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::NixVector, ns3::empty, ns3::DefaultDeleter<ns3::NixVector> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___Type;
  #define PyNs3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___Type (*_PyNs3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3NixVector_Ns3Empty_Ns3DefaultDeleter__lt__ns3NixVector__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::OutputStreamWrapper, ns3::empty, ns3::DefaultDeleter<ns3::OutputStreamWrapper> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt___Type;
  #define PyNs3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt___Type (*_PyNs3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3OutputStreamWrapper_Ns3Empty_Ns3DefaultDeleter__lt__ns3OutputStreamWrapper__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::Packet, ns3::empty, ns3::DefaultDeleter<ns3::Packet> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___Type;
  #define PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___Type (*_PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::SpectrumSignalParameters, ns3::empty, ns3::DefaultDeleter<ns3::SpectrumSignalParameters> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt___Type;
  #define PyNs3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt___Type (*_PyNs3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3SpectrumSignalParameters_Ns3Empty_Ns3DefaultDeleter__lt__ns3SpectrumSignalParameters__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt__;
  
  
  extern PyTypeObject *_PyNs3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___Type;
  #define PyNs3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___Type (*_PyNs3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___Type)
  
  
  extern pybindgen::TypeMap *_PyNs3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt____typeid_map;
  
  #define PyNs3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt____typeid_map (*_PyNs3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt____typeid_map)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SpectrumPhy *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SpectrumPhy;
  
  
  extern PyTypeObject *_PyNs3SpectrumPhy_Type;
  #define PyNs3SpectrumPhy_Type (*_PyNs3SpectrumPhy_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SpectrumSignalParameters *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SpectrumSignalParameters;
  
  
  extern PyTypeObject *_PyNs3SpectrumSignalParameters_Type;
  #define PyNs3SpectrumSignalParameters_Type (*_PyNs3SpectrumSignalParameters_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Time *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Time;
  
  
  extern PyTypeObject *_PyNs3Time_Type;
  #define PyNs3Time_Type (*_PyNs3Time_Type)
  
  extern std::map<void*, PyObject*> *_PyNs3Time_wrapper_registry;
  #define PyNs3Time_wrapper_registry (*_PyNs3Time_wrapper_registry)
  
  typedef struct {
      PyObject_HEAD
      ns3::TraceSourceAccessor *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TraceSourceAccessor;
  
  
  extern PyTypeObject *_PyNs3TraceSourceAccessor_Type;
  #define PyNs3TraceSourceAccessor_Type (*_PyNs3TraceSourceAccessor_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Trailer *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Trailer;
  
  
  extern PyTypeObject *_PyNs3Trailer_Type;
  #define PyNs3Trailer_Type (*_PyNs3Trailer_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::AttributeAccessor *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AttributeAccessor;
  
  
  extern PyTypeObject *_PyNs3AttributeAccessor_Type;
  #define PyNs3AttributeAccessor_Type (*_PyNs3AttributeAccessor_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::AttributeChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AttributeChecker;
  
  
  extern PyTypeObject *_PyNs3AttributeChecker_Type;
  #define PyNs3AttributeChecker_Type (*_PyNs3AttributeChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::AttributeValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AttributeValue;
  
  
  extern PyTypeObject *_PyNs3AttributeValue_Type;
  #define PyNs3AttributeValue_Type (*_PyNs3AttributeValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::BooleanChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3BooleanChecker;
  
  
  extern PyTypeObject *_PyNs3BooleanChecker_Type;
  #define PyNs3BooleanChecker_Type (*_PyNs3BooleanChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::BooleanValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3BooleanValue;
  
  
  extern PyTypeObject *_PyNs3BooleanValue_Type;
  #define PyNs3BooleanValue_Type (*_PyNs3BooleanValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackChecker;
  
  
  extern PyTypeObject *_PyNs3CallbackChecker_Type;
  #define PyNs3CallbackChecker_Type (*_PyNs3CallbackChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImplBase *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImplBase;
  
  
  extern PyTypeObject *_PyNs3CallbackImplBase_Type;
  #define PyNs3CallbackImplBase_Type (*_PyNs3CallbackImplBase_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackValue;
  
  
  extern PyTypeObject *_PyNs3CallbackValue_Type;
  #define PyNs3CallbackValue_Type (*_PyNs3CallbackValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::DoubleValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DoubleValue;
  
  
  extern PyTypeObject *_PyNs3DoubleValue_Type;
  #define PyNs3DoubleValue_Type (*_PyNs3DoubleValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::EmptyAttributeAccessor *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3EmptyAttributeAccessor;
  
  
  extern PyTypeObject *_PyNs3EmptyAttributeAccessor_Type;
  #define PyNs3EmptyAttributeAccessor_Type (*_PyNs3EmptyAttributeAccessor_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::EmptyAttributeChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3EmptyAttributeChecker;
  
  
  extern PyTypeObject *_PyNs3EmptyAttributeChecker_Type;
  #define PyNs3EmptyAttributeChecker_Type (*_PyNs3EmptyAttributeChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::EmptyAttributeValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3EmptyAttributeValue;
  
  
  extern PyTypeObject *_PyNs3EmptyAttributeValue_Type;
  #define PyNs3EmptyAttributeValue_Type (*_PyNs3EmptyAttributeValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::EnumChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3EnumChecker;
  
  
  extern PyTypeObject *_PyNs3EnumChecker_Type;
  #define PyNs3EnumChecker_Type (*_PyNs3EnumChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::EnumValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3EnumValue;
  
  
  extern PyTypeObject *_PyNs3EnumValue_Type;
  #define PyNs3EnumValue_Type (*_PyNs3EnumValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::EventImpl *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3EventImpl;
  
  
  extern PyTypeObject *_PyNs3EventImpl_Type;
  #define PyNs3EventImpl_Type (*_PyNs3EventImpl_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::IntegerValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3IntegerValue;
  
  
  extern PyTypeObject *_PyNs3IntegerValue_Type;
  #define PyNs3IntegerValue_Type (*_PyNs3IntegerValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv4AddressChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv4AddressChecker;
  
  
  extern PyTypeObject *_PyNs3Ipv4AddressChecker_Type;
  #define PyNs3Ipv4AddressChecker_Type (*_PyNs3Ipv4AddressChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv4AddressValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv4AddressValue;
  
  
  extern PyTypeObject *_PyNs3Ipv4AddressValue_Type;
  #define PyNs3Ipv4AddressValue_Type (*_PyNs3Ipv4AddressValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv4MaskChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv4MaskChecker;
  
  
  extern PyTypeObject *_PyNs3Ipv4MaskChecker_Type;
  #define PyNs3Ipv4MaskChecker_Type (*_PyNs3Ipv4MaskChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv4MaskValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv4MaskValue;
  
  
  extern PyTypeObject *_PyNs3Ipv4MaskValue_Type;
  #define PyNs3Ipv4MaskValue_Type (*_PyNs3Ipv4MaskValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv6AddressChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv6AddressChecker;
  
  
  extern PyTypeObject *_PyNs3Ipv6AddressChecker_Type;
  #define PyNs3Ipv6AddressChecker_Type (*_PyNs3Ipv6AddressChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv6AddressValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv6AddressValue;
  
  
  extern PyTypeObject *_PyNs3Ipv6AddressValue_Type;
  #define PyNs3Ipv6AddressValue_Type (*_PyNs3Ipv6AddressValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv6PrefixChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv6PrefixChecker;
  
  
  extern PyTypeObject *_PyNs3Ipv6PrefixChecker_Type;
  #define PyNs3Ipv6PrefixChecker_Type (*_PyNs3Ipv6PrefixChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Ipv6PrefixValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Ipv6PrefixValue;
  
  
  extern PyTypeObject *_PyNs3Ipv6PrefixValue_Type;
  #define PyNs3Ipv6PrefixValue_Type (*_PyNs3Ipv6PrefixValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac16AddressChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac16AddressChecker;
  
  
  extern PyTypeObject *_PyNs3Mac16AddressChecker_Type;
  #define PyNs3Mac16AddressChecker_Type (*_PyNs3Mac16AddressChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac16AddressValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac16AddressValue;
  
  
  extern PyTypeObject *_PyNs3Mac16AddressValue_Type;
  #define PyNs3Mac16AddressValue_Type (*_PyNs3Mac16AddressValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac48AddressChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac48AddressChecker;
  
  
  extern PyTypeObject *_PyNs3Mac48AddressChecker_Type;
  #define PyNs3Mac48AddressChecker_Type (*_PyNs3Mac48AddressChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac48AddressValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac48AddressValue;
  
  
  extern PyTypeObject *_PyNs3Mac48AddressValue_Type;
  #define PyNs3Mac48AddressValue_Type (*_PyNs3Mac48AddressValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac64AddressChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac64AddressChecker;
  
  
  extern PyTypeObject *_PyNs3Mac64AddressChecker_Type;
  #define PyNs3Mac64AddressChecker_Type (*_PyNs3Mac64AddressChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Mac64AddressValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Mac64AddressValue;
  
  
  extern PyTypeObject *_PyNs3Mac64AddressValue_Type;
  #define PyNs3Mac64AddressValue_Type (*_PyNs3Mac64AddressValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::NetDevice *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3NetDevice;
  
  
  extern PyTypeObject *_PyNs3NetDevice_Type;
  #define PyNs3NetDevice_Type (*_PyNs3NetDevice_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::NixVector *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3NixVector;
  
  
  extern PyTypeObject *_PyNs3NixVector_Type;
  #define PyNs3NixVector_Type (*_PyNs3NixVector_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Node *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Node;
  
  
  extern PyTypeObject *_PyNs3Node_Type;
  #define PyNs3Node_Type (*_PyNs3Node_Type)
  
  class PyNs3Node__PythonHelper : public ns3::Node
  {
  public:
      PyObject *m_pyself;
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3Node__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  };
  
  
  typedef struct {
      PyObject_HEAD
      ns3::ObjectFactoryChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ObjectFactoryChecker;
  
  
  extern PyTypeObject *_PyNs3ObjectFactoryChecker_Type;
  #define PyNs3ObjectFactoryChecker_Type (*_PyNs3ObjectFactoryChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::ObjectFactoryValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3ObjectFactoryValue;
  
  
  extern PyTypeObject *_PyNs3ObjectFactoryValue_Type;
  #define PyNs3ObjectFactoryValue_Type (*_PyNs3ObjectFactoryValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::OutputStreamWrapper *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3OutputStreamWrapper;
  
  
  extern PyTypeObject *_PyNs3OutputStreamWrapper_Type;
  #define PyNs3OutputStreamWrapper_Type (*_PyNs3OutputStreamWrapper_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Packet *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3Packet;
  
  
  extern PyTypeObject *_PyNs3Packet_Type;
  #define PyNs3Packet_Type (*_PyNs3Packet_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::TimeValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TimeValue;
  
  
  extern PyTypeObject *_PyNs3TimeValue_Type;
  #define PyNs3TimeValue_Type (*_PyNs3TimeValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::TypeIdChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TypeIdChecker;
  
  
  extern PyTypeObject *_PyNs3TypeIdChecker_Type;
  #define PyNs3TypeIdChecker_Type (*_PyNs3TypeIdChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::TypeIdValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3TypeIdValue;
  
  
  extern PyTypeObject *_PyNs3TypeIdValue_Type;
  #define PyNs3TypeIdValue_Type (*_PyNs3TypeIdValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::UintegerValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3UintegerValue;
  
  
  extern PyTypeObject *_PyNs3UintegerValue_Type;
  #define PyNs3UintegerValue_Type (*_PyNs3UintegerValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::AddressChecker *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AddressChecker;
  
  
  extern PyTypeObject *_PyNs3AddressChecker_Type;
  #define PyNs3AddressChecker_Type (*_PyNs3AddressChecker_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::AddressValue *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3AddressValue;
  
  
  extern PyTypeObject *_PyNs3AddressValue_Type;
  #define PyNs3AddressValue_Type (*_PyNs3AddressValue_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<const ns3::Packet>, unsigned short, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Bool_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Bool_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Bool_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Bool_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< ns3::ObjectBase *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Ns3ObjectBase___star___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Ns3ObjectBase___star___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Ns3ObjectBase___star___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Ns3ObjectBase___star___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::LrWpanMacState, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3LrWpanMacState_Ns3LrWpanMacState_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3LrWpanMacState_Ns3LrWpanMacState_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3LrWpanMacState_Ns3LrWpanMacState_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3LrWpanMacState_Ns3LrWpanMacState_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::Ptr<const ns3::Packet>, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Double_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Double_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Double_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Double_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::Ptr<const ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::Ptr<const ns3::Packet>, unsigned char, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_char_Unsigned_char_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_char_Unsigned_char_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_char_Unsigned_char_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_char_Unsigned_char_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<const ns3::Packet>, unsigned short, const ns3::Address &, const ns3::Address &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Const_ns3Address___amp___Ns3NetDevicePacketType_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Const_ns3Address___amp___Ns3NetDevicePacketType_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Const_ns3Address___amp___Ns3NetDevicePacketType_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Const_ns3Address___amp___Ns3NetDevicePacketType_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::Ptr<ns3::NetDevice>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::Time, ns3::LrWpanPhyEnumeration, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3Time_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3Time_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3Time_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3Time_Ns3LrWpanPhyEnumeration_Ns3LrWpanPhyEnumeration_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject *_PyNs3CallbackImpl__Void_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  #define PyNs3CallbackImpl__Void_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type (*_PyNs3CallbackImpl__Void_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::DefaultDeleter< ns3::LrWpanInterferenceHelper > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3DefaultDeleter__Ns3LrWpanInterferenceHelper;
  
  
  extern PyTypeObject PyNs3DefaultDeleter__Ns3LrWpanInterferenceHelper_Type;
  
  extern std::map<void*, PyObject*> PyNs3DefaultDeleter__Ns3LrWpanInterferenceHelper_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanEdPower *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanEdPower;
  
  
  extern PyTypeObject PyNs3LrWpanEdPower_Type;
  
  extern std::map<void*, PyObject*> PyNs3LrWpanEdPower_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanPhyDataAndSymbolRates *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanPhyDataAndSymbolRates;
  
  
  extern PyTypeObject PyNs3LrWpanPhyDataAndSymbolRates_Type;
  
  extern std::map<void*, PyObject*> PyNs3LrWpanPhyDataAndSymbolRates_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanPhyPibAttributes *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanPhyPibAttributes;
  
  
  extern PyTypeObject PyNs3LrWpanPhyPibAttributes_Type;
  
  extern std::map<void*, PyObject*> PyNs3LrWpanPhyPibAttributes_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanPhyPpduHeaderSymbolNumber *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanPhyPpduHeaderSymbolNumber;
  
  
  extern PyTypeObject PyNs3LrWpanPhyPpduHeaderSymbolNumber_Type;
  
  extern std::map<void*, PyObject*> PyNs3LrWpanPhyPpduHeaderSymbolNumber_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanSpectrumValueHelper *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanSpectrumValueHelper;
  
  
  extern PyTypeObject PyNs3LrWpanSpectrumValueHelper_Type;
  
  extern std::map<void*, PyObject*> PyNs3LrWpanSpectrumValueHelper_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::McpsDataConfirmParams *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3McpsDataConfirmParams;
  
  
  extern PyTypeObject PyNs3McpsDataConfirmParams_Type;
  
  extern std::map<void*, PyObject*> PyNs3McpsDataConfirmParams_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::McpsDataIndicationParams *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3McpsDataIndicationParams;
  
  
  extern PyTypeObject PyNs3McpsDataIndicationParams_Type;
  
  extern std::map<void*, PyObject*> PyNs3McpsDataIndicationParams_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::McpsDataRequestParams *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3McpsDataRequestParams;
  
  
  extern PyTypeObject PyNs3McpsDataRequestParams_Type;
  
  extern std::map<void*, PyObject*> PyNs3McpsDataRequestParams_wrapper_registry;
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanHelper *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanHelper;
  
  
  extern PyTypeObject PyNs3LrWpanHelper_Type;
  
  class PyNs3LrWpanHelper__PythonHelper : public ns3::LrWpanHelper
  {
  public:
      PyObject *m_pyself;
      PyNs3LrWpanHelper__PythonHelper()
          : ns3::LrWpanHelper(), m_pyself(NULL)
          {}
  
      PyNs3LrWpanHelper__PythonHelper(bool useMultiModelSpectrumChannel)
          : ns3::LrWpanHelper(useMultiModelSpectrumChannel), m_pyself(NULL)
          {}
  
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3LrWpanHelper__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  
      virtual void EnablePcapInternal(std::string prefix, ns3::Ptr< ns3::NetDevice > nd, bool promiscuous, bool explicitFilename);
  
      virtual void EnableAsciiInternal(ns3::Ptr< ns3::OutputStreamWrapper > stream, std::string prefix, ns3::Ptr< ns3::NetDevice > nd, bool explicitFilename);
  };
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanLqiTag *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanLqiTag;
  
  
  extern PyTypeObject PyNs3LrWpanLqiTag_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanMacHeader *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanMacHeader;
  
  
  extern PyTypeObject PyNs3LrWpanMacHeader_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::SimpleRefCount< ns3::LrWpanInterferenceHelper, ns3::empty, ns3::DefaultDeleter<ns3::LrWpanInterferenceHelper> > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3SimpleRefCount__Ns3LrWpanInterferenceHelper_Ns3Empty_Ns3DefaultDeleter__lt__ns3LrWpanInterferenceHelper__gt__;
  
  
  extern PyTypeObject PyNs3SimpleRefCount__Ns3LrWpanInterferenceHelper_Ns3Empty_Ns3DefaultDeleter__lt__ns3LrWpanInterferenceHelper__gt___Type;
  
  
  extern pybindgen::TypeMap PyNs3SimpleRefCount__Ns3LrWpanInterferenceHelper_Ns3Empty_Ns3DefaultDeleter__lt__ns3LrWpanInterferenceHelper__gt____typeid_map;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanCsmaCa *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanCsmaCa;
  
  
  extern PyTypeObject PyNs3LrWpanCsmaCa_Type;
  
  class PyNs3LrWpanCsmaCa__PythonHelper : public ns3::LrWpanCsmaCa
  {
  public:
      PyObject *m_pyself;
      PyNs3LrWpanCsmaCa__PythonHelper()
          : ns3::LrWpanCsmaCa(), m_pyself(NULL)
          {}
  
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3LrWpanCsmaCa__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  
      static PyObject * _wrap_NotifyConstructionCompleted(PyNs3LrWpanCsmaCa *self);
      inline void NotifyConstructionCompleted__parent_caller()
      { ns3::ObjectBase::NotifyConstructionCompleted(); }
  
      static PyObject * _wrap_DoInitialize(PyNs3LrWpanCsmaCa *self);
      inline void DoInitialize__parent_caller()
      { ns3::Object::DoInitialize(); }
  
      static PyObject * _wrap_NotifyNewAggregate(PyNs3LrWpanCsmaCa *self);
      inline void NotifyNewAggregate__parent_caller()
      { ns3::Object::NotifyNewAggregate(); }
  
      virtual void DoDispose();
  
      virtual ns3::TypeId GetInstanceTypeId() const;
  
      virtual void DoInitialize();
  
      virtual void NotifyNewAggregate();
  
      virtual void NotifyConstructionCompleted();
  
      static ns3::TypeId GetTypeId (void)
      {
        static ns3::TypeId tid = ns3::TypeId ("PyNs3LrWpanCsmaCa__PythonHelper")
          .SetParent< ns3::LrWpanCsmaCa > ()
          ;
        return tid;
      }
  };
  
  NS_OBJECT_ENSURE_REGISTERED (PyNs3LrWpanCsmaCa__PythonHelper);
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanErrorModel *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanErrorModel;
  
  
  extern PyTypeObject PyNs3LrWpanErrorModel_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanInterferenceHelper *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanInterferenceHelper;
  
  
  extern PyTypeObject PyNs3LrWpanInterferenceHelper_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanMac *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanMac;
  
  
  extern PyTypeObject PyNs3LrWpanMac_Type;
  extern PyTypeObject PyNs3LrWpanMacMeta_Type;
  
  class PyNs3LrWpanMac__PythonHelper : public ns3::LrWpanMac
  {
  public:
      PyObject *m_pyself;
      PyNs3LrWpanMac__PythonHelper(ns3::LrWpanMac const & arg0)
          : ns3::LrWpanMac(arg0), m_pyself(NULL)
          {}
  
      PyNs3LrWpanMac__PythonHelper()
          : ns3::LrWpanMac(), m_pyself(NULL)
          {}
  
  
      void set_pyobj(PyObject *pyobj)
      {
          Py_XDECREF(m_pyself);
          Py_INCREF(pyobj);
          m_pyself = pyobj;
      }
  
      virtual ~PyNs3LrWpanMac__PythonHelper()
      {
          Py_CLEAR(m_pyself);
      }
  
  
      static PyObject * _wrap_NotifyConstructionCompleted(PyNs3LrWpanMac *self);
      inline void NotifyConstructionCompleted__parent_caller()
      { ns3::ObjectBase::NotifyConstructionCompleted(); }
  
      static PyObject * _wrap_DoInitialize(PyNs3LrWpanMac *self);
      inline void DoInitialize__parent_caller()
      { ns3::LrWpanMac::DoInitialize(); }
  
      static PyObject * _wrap_NotifyNewAggregate(PyNs3LrWpanMac *self);
      inline void NotifyNewAggregate__parent_caller()
      { ns3::Object::NotifyNewAggregate(); }
  
      static PyObject * _wrap_DoDispose(PyNs3LrWpanMac *self);
      inline void DoDispose__parent_caller()
      { ns3::LrWpanMac::DoDispose(); }
  
      virtual void DoDispose();
  
      virtual void DoInitialize();
  
      virtual ns3::TypeId GetInstanceTypeId() const;
  
      virtual void NotifyNewAggregate();
  
      virtual void NotifyConstructionCompleted();
  
      static ns3::TypeId GetTypeId (void)
      {
        static ns3::TypeId tid = ns3::TypeId ("PyNs3LrWpanMac__PythonHelper")
          .SetParent< ns3::LrWpanMac > ()
          ;
        return tid;
      }
  };
  
  NS_OBJECT_ENSURE_REGISTERED (PyNs3LrWpanMac__PythonHelper);
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanMacTrailer *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanMacTrailer;
  
  
  extern PyTypeObject PyNs3LrWpanMacTrailer_Type;
  extern PyTypeObject PyNs3LrWpanMacTrailerMeta_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanPhy *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanPhy;
  
  
  extern PyTypeObject PyNs3LrWpanPhy_Type;
  extern PyTypeObject PyNs3LrWpanPhyMeta_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanSpectrumSignalParameters *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanSpectrumSignalParameters;
  
  
  extern PyTypeObject PyNs3LrWpanSpectrumSignalParameters_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3McpsDataConfirmParams_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject PyNs3CallbackImpl__Void_Ns3McpsDataConfirmParams_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::CallbackImpl< void, ns3::McpsDataIndicationParams, ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty > *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3CallbackImpl__Void_Ns3McpsDataIndicationParams_Ns3Ptr__lt__ns3Packet__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty;
  
  
  extern PyTypeObject PyNs3CallbackImpl__Void_Ns3McpsDataIndicationParams_Ns3Ptr__lt__ns3Packet__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Type;
  
  
  typedef struct {
      PyObject_HEAD
      ns3::LrWpanNetDevice *obj;
      PyObject *inst_dict;
      PyBindGenWrapperFlags flags:8;
  } PyNs3LrWpanNetDevice;
  
  
  extern PyTypeObject PyNs3LrWpanNetDevice_Type;
  
  /* --- forward declarations --- */
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Hash::Implementation *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3HashImplementation;
  
  
  extern PyTypeObject *_PyNs3HashImplementation_Type;
  #define PyNs3HashImplementation_Type (*_PyNs3HashImplementation_Type)
  
  /* --- forward declarations --- */
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Hash::Function::Fnv1a *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3HashFunctionFnv1a;
  
  
  extern PyTypeObject *_PyNs3HashFunctionFnv1a_Type;
  #define PyNs3HashFunctionFnv1a_Type (*_PyNs3HashFunctionFnv1a_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Hash::Function::Hash32 *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3HashFunctionHash32;
  
  
  extern PyTypeObject *_PyNs3HashFunctionHash32_Type;
  #define PyNs3HashFunctionHash32_Type (*_PyNs3HashFunctionHash32_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Hash::Function::Hash64 *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3HashFunctionHash64;
  
  
  extern PyTypeObject *_PyNs3HashFunctionHash64_Type;
  #define PyNs3HashFunctionHash64_Type (*_PyNs3HashFunctionHash64_Type)
  
  
  typedef struct {
      PyObject_HEAD
      ns3::Hash::Function::Murmur3 *obj;
      PyBindGenWrapperFlags flags:8;
  } PyNs3HashFunctionMurmur3;
  
  
  extern PyTypeObject *_PyNs3HashFunctionMurmur3_Type;
  #define PyNs3HashFunctionMurmur3_Type (*_PyNs3HashFunctionMurmur3_Type)
  
  
  class PythonCallbackImpl1 : public ns3::CallbackImpl<void, unsigned int, ns3::Ptr<ns3::Packet>, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl1(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl1()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl1 *other = dynamic_cast<const PythonCallbackImpl1*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(unsigned int arg1, ns3::Ptr< ns3::Packet > arg2, unsigned char arg3)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3Packet *py_Packet;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          wrapper_lookup_iter = PyNs3Empty_wrapper_registry.find((void *) const_cast<ns3::Packet *> (ns3::PeekPointer (arg2)));
          if (wrapper_lookup_iter == PyNs3Empty_wrapper_registry.end()) {
              py_Packet = NULL;
          } else {
              py_Packet = (PyNs3Packet *) wrapper_lookup_iter->second;
              Py_INCREF(py_Packet);
          }
  
          if (py_Packet == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map.lookup_wrapper(typeid(*const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))), &PyNs3Packet_Type);
              py_Packet = PyObject_New(PyNs3Packet, wrapper_type);
  
              py_Packet->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))->Ref();
              py_Packet->obj = const_cast<ns3::Packet *> (ns3::PeekPointer (arg2));
              PyNs3Empty_wrapper_registry[(void *) py_Packet->obj] = (PyObject *) py_Packet;
          }
          args = Py_BuildValue((char *) "(NNi)", PyLong_FromUnsignedLong(arg1), py_Packet, (int) arg3);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl2 : public ns3::CallbackImpl<void, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl2(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl2()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl2 *other = dynamic_cast<const PythonCallbackImpl2*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::LrWpanPhyEnumeration arg1)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          args = Py_BuildValue((char *) "(i)", arg1);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl3 : public ns3::CallbackImpl<void, ns3::LrWpanPhyEnumeration, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl3(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl3()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl3 *other = dynamic_cast<const PythonCallbackImpl3*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::LrWpanPhyEnumeration arg1, unsigned char arg2)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          args = Py_BuildValue((char *) "(ii)", arg1, (int) arg2);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl5 : public ns3::CallbackImpl<void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPibAttributeIdentifier, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl5(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl5()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl5 *other = dynamic_cast<const PythonCallbackImpl5*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::LrWpanPhyEnumeration arg1, ns3::LrWpanPibAttributeIdentifier arg2)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          args = Py_BuildValue((char *) "(ii)", arg1, arg2);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl6 : public ns3::CallbackImpl<void, ns3::Ptr<const ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl6(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl6()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl6 *other = dynamic_cast<const PythonCallbackImpl6*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::Ptr< ns3::Packet const > arg1)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3Packet *py_Packet;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          wrapper_lookup_iter = PyNs3Empty_wrapper_registry.find((void *) const_cast<ns3::Packet *> (ns3::PeekPointer (arg1)));
          if (wrapper_lookup_iter == PyNs3Empty_wrapper_registry.end()) {
              py_Packet = NULL;
          } else {
              py_Packet = (PyNs3Packet *) wrapper_lookup_iter->second;
              Py_INCREF(py_Packet);
          }
  
          if (py_Packet == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map.lookup_wrapper(typeid(*const_cast<ns3::Packet *> (ns3::PeekPointer (arg1))), &PyNs3Packet_Type);
              py_Packet = PyObject_New(PyNs3Packet, wrapper_type);
  
              py_Packet->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::Packet *> (ns3::PeekPointer (arg1))->Ref();
              py_Packet->obj = const_cast<ns3::Packet *> (ns3::PeekPointer (arg1));
              PyNs3Empty_wrapper_registry[(void *) py_Packet->obj] = (PyObject *) py_Packet;
          }
          args = Py_BuildValue((char *) "(N)", py_Packet);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl7 : public ns3::CallbackImpl<void, ns3::Ptr<const ns3::Packet>, double, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl7(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl7()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl7 *other = dynamic_cast<const PythonCallbackImpl7*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::Ptr< ns3::Packet const > arg1, double arg2)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3Packet *py_Packet;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          wrapper_lookup_iter = PyNs3Empty_wrapper_registry.find((void *) const_cast<ns3::Packet *> (ns3::PeekPointer (arg1)));
          if (wrapper_lookup_iter == PyNs3Empty_wrapper_registry.end()) {
              py_Packet = NULL;
          } else {
              py_Packet = (PyNs3Packet *) wrapper_lookup_iter->second;
              Py_INCREF(py_Packet);
          }
  
          if (py_Packet == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map.lookup_wrapper(typeid(*const_cast<ns3::Packet *> (ns3::PeekPointer (arg1))), &PyNs3Packet_Type);
              py_Packet = PyObject_New(PyNs3Packet, wrapper_type);
  
              py_Packet->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::Packet *> (ns3::PeekPointer (arg1))->Ref();
              py_Packet->obj = const_cast<ns3::Packet *> (ns3::PeekPointer (arg1));
              PyNs3Empty_wrapper_registry[(void *) py_Packet->obj] = (PyObject *) py_Packet;
          }
          args = Py_BuildValue((char *) "(Nd)", py_Packet, arg2);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl8 : public ns3::CallbackImpl<void, ns3::Time, ns3::LrWpanPhyEnumeration, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl8(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl8()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl8 *other = dynamic_cast<const PythonCallbackImpl8*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::Time arg1, ns3::LrWpanPhyEnumeration arg2, ns3::LrWpanPhyEnumeration arg3)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3Time *py_Time;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          py_Time = PyObject_New(PyNs3Time, &PyNs3Time_Type);
          py_Time->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
          py_Time->obj = new ns3::Time(arg1);
          PyNs3Time_wrapper_registry[(void *) py_Time->obj] = (PyObject *) py_Time;
          args = Py_BuildValue((char *) "(Nii)", py_Time, arg2, arg3);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl9 : public ns3::CallbackImpl<void, ns3::LrWpanPhyEnumeration, ns3::LrWpanPhyEnumeration, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl9(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl9()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl9 *other = dynamic_cast<const PythonCallbackImpl9*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::LrWpanPhyEnumeration arg1, ns3::LrWpanPhyEnumeration arg2)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          args = Py_BuildValue((char *) "(ii)", arg1, arg2);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl10 : public ns3::CallbackImpl<void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl10(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl10()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl10 *other = dynamic_cast<const PythonCallbackImpl10*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()()
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          args = Py_BuildValue((char *) "()");
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl11 : public ns3::CallbackImpl<void, ns3::McpsDataConfirmParams, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl11(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl11()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl11 *other = dynamic_cast<const PythonCallbackImpl11*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::McpsDataConfirmParams arg1)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3McpsDataConfirmParams *py_McpsDataConfirmParams;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          py_McpsDataConfirmParams = PyObject_New(PyNs3McpsDataConfirmParams, &PyNs3McpsDataConfirmParams_Type);
          py_McpsDataConfirmParams->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
          py_McpsDataConfirmParams->obj = new ns3::McpsDataConfirmParams(arg1);
          PyNs3McpsDataConfirmParams_wrapper_registry[(void *) py_McpsDataConfirmParams->obj] = (PyObject *) py_McpsDataConfirmParams;
          args = Py_BuildValue((char *) "(N)", py_McpsDataConfirmParams);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl12 : public ns3::CallbackImpl<void, ns3::McpsDataIndicationParams, ns3::Ptr<ns3::Packet>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl12(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl12()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl12 *other = dynamic_cast<const PythonCallbackImpl12*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::McpsDataIndicationParams arg1, ns3::Ptr< ns3::Packet > arg2)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3McpsDataIndicationParams *py_McpsDataIndicationParams;
          PyNs3Packet *py_Packet;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          py_McpsDataIndicationParams = PyObject_New(PyNs3McpsDataIndicationParams, &PyNs3McpsDataIndicationParams_Type);
          py_McpsDataIndicationParams->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
          py_McpsDataIndicationParams->obj = new ns3::McpsDataIndicationParams(arg1);
          PyNs3McpsDataIndicationParams_wrapper_registry[(void *) py_McpsDataIndicationParams->obj] = (PyObject *) py_McpsDataIndicationParams;
          wrapper_lookup_iter = PyNs3Empty_wrapper_registry.find((void *) const_cast<ns3::Packet *> (ns3::PeekPointer (arg2)));
          if (wrapper_lookup_iter == PyNs3Empty_wrapper_registry.end()) {
              py_Packet = NULL;
          } else {
              py_Packet = (PyNs3Packet *) wrapper_lookup_iter->second;
              Py_INCREF(py_Packet);
          }
  
          if (py_Packet == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map.lookup_wrapper(typeid(*const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))), &PyNs3Packet_Type);
              py_Packet = PyObject_New(PyNs3Packet, wrapper_type);
  
              py_Packet->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))->Ref();
              py_Packet->obj = const_cast<ns3::Packet *> (ns3::PeekPointer (arg2));
              PyNs3Empty_wrapper_registry[(void *) py_Packet->obj] = (PyObject *) py_Packet;
          }
          args = Py_BuildValue((char *) "(NN)", py_McpsDataIndicationParams, py_Packet);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl13 : public ns3::CallbackImpl<void, ns3::Ptr<const ns3::Packet>, unsigned char, unsigned char, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl13(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl13()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl13 *other = dynamic_cast<const PythonCallbackImpl13*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::Ptr< ns3::Packet const > arg1, unsigned char arg2, unsigned char arg3)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3Packet *py_Packet;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          wrapper_lookup_iter = PyNs3Empty_wrapper_registry.find((void *) const_cast<ns3::Packet *> (ns3::PeekPointer (arg1)));
          if (wrapper_lookup_iter == PyNs3Empty_wrapper_registry.end()) {
              py_Packet = NULL;
          } else {
              py_Packet = (PyNs3Packet *) wrapper_lookup_iter->second;
              Py_INCREF(py_Packet);
          }
  
          if (py_Packet == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map.lookup_wrapper(typeid(*const_cast<ns3::Packet *> (ns3::PeekPointer (arg1))), &PyNs3Packet_Type);
              py_Packet = PyObject_New(PyNs3Packet, wrapper_type);
  
              py_Packet->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::Packet *> (ns3::PeekPointer (arg1))->Ref();
              py_Packet->obj = const_cast<ns3::Packet *> (ns3::PeekPointer (arg1));
              PyNs3Empty_wrapper_registry[(void *) py_Packet->obj] = (PyObject *) py_Packet;
          }
          args = Py_BuildValue((char *) "(Nii)", py_Packet, (int) arg2, (int) arg3);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl14 : public ns3::CallbackImpl<void, ns3::LrWpanMacState, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl14(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl14()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl14 *other = dynamic_cast<const PythonCallbackImpl14*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::LrWpanMacState arg1, ns3::LrWpanMacState arg2)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          args = Py_BuildValue((char *) "(ii)", arg1, arg2);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl15 : public ns3::CallbackImpl<void, ns3::LrWpanMacState, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl15(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl15()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl15 *other = dynamic_cast<const PythonCallbackImpl15*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::LrWpanMacState arg1)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          args = Py_BuildValue((char *) "(i)", arg1);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl16 : public ns3::CallbackImpl<bool, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<const ns3::Packet>, unsigned short, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl16(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl16()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl16 *other = dynamic_cast<const PythonCallbackImpl16*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      bool
      operator()(ns3::Ptr< ns3::NetDevice > arg1, ns3::Ptr< ns3::Packet const > arg2, unsigned short arg3, ns3::Address const & arg4)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          bool retval;
          PyNs3NetDevice *py_NetDevice;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyNs3Packet *py_Packet;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter2;
          PyTypeObject *wrapper_type2 = 0;
          PyNs3Address *py_Address;
          PyObject *args;
          PyObject *py_boolretval;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          wrapper_lookup_iter = PyNs3ObjectBase_wrapper_registry.find((void *) const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1)));
          if (wrapper_lookup_iter == PyNs3ObjectBase_wrapper_registry.end()) {
              py_NetDevice = NULL;
          } else {
              py_NetDevice = (PyNs3NetDevice *) wrapper_lookup_iter->second;
              Py_INCREF(py_NetDevice);
          }
  
          if (py_NetDevice == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter__typeid_map.lookup_wrapper(typeid(*const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1))), &PyNs3NetDevice_Type);
              py_NetDevice = PyObject_GC_New(PyNs3NetDevice, wrapper_type);
              py_NetDevice->inst_dict = NULL;
  
              py_NetDevice->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1))->Ref();
              py_NetDevice->obj = const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1));
              PyNs3ObjectBase_wrapper_registry[(void *) py_NetDevice->obj] = (PyObject *) py_NetDevice;
          }
          wrapper_lookup_iter2 = PyNs3Empty_wrapper_registry.find((void *) const_cast<ns3::Packet *> (ns3::PeekPointer (arg2)));
          if (wrapper_lookup_iter2 == PyNs3Empty_wrapper_registry.end()) {
              py_Packet = NULL;
          } else {
              py_Packet = (PyNs3Packet *) wrapper_lookup_iter2->second;
              Py_INCREF(py_Packet);
          }
  
          if (py_Packet == NULL)
          {
              wrapper_type2 = PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map.lookup_wrapper(typeid(*const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))), &PyNs3Packet_Type);
              py_Packet = PyObject_New(PyNs3Packet, wrapper_type2);
  
              py_Packet->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))->Ref();
              py_Packet->obj = const_cast<ns3::Packet *> (ns3::PeekPointer (arg2));
              PyNs3Empty_wrapper_registry[(void *) py_Packet->obj] = (PyObject *) py_Packet;
          }
          py_Address = PyObject_New(PyNs3Address, &PyNs3Address_Type);
          py_Address->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
          py_Address->obj = new ns3::Address(arg4);
          PyNs3Address_wrapper_registry[(void *) py_Address->obj] = (PyObject *) py_Address;
          args = Py_BuildValue((char *) "(NNiN)", py_NetDevice, py_Packet, (int) arg3, py_Address);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return false;
          }
          py_retval = Py_BuildValue((char*) "(N)", py_retval);
          if (!PyArg_ParseTuple(py_retval, (char *) "O", &py_boolretval)) {
              PyErr_Print();
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return false;
          }
          retval = PyObject_IsTrue(py_boolretval);
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return retval;
      }
  };
  
  
  class PythonCallbackImpl17 : public ns3::CallbackImpl<void, ns3::Ptr<ns3::NetDevice>, ns3::Ptr<const ns3::Packet>, unsigned short, const ns3::Address &, const ns3::Address &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl17(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl17()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl17 *other = dynamic_cast<const PythonCallbackImpl17*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::Ptr< ns3::NetDevice > arg1, ns3::Ptr< ns3::Packet const > arg2, unsigned short arg3, ns3::Address const & arg4, ns3::Address const & arg5, ns3::NetDevice::PacketType arg6)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3NetDevice *py_NetDevice;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyNs3Packet *py_Packet;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter2;
          PyTypeObject *wrapper_type2 = 0;
          PyNs3Address *py_Address;
          PyNs3Address *py_Address2;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          wrapper_lookup_iter = PyNs3ObjectBase_wrapper_registry.find((void *) const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1)));
          if (wrapper_lookup_iter == PyNs3ObjectBase_wrapper_registry.end()) {
              py_NetDevice = NULL;
          } else {
              py_NetDevice = (PyNs3NetDevice *) wrapper_lookup_iter->second;
              Py_INCREF(py_NetDevice);
          }
  
          if (py_NetDevice == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter__typeid_map.lookup_wrapper(typeid(*const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1))), &PyNs3NetDevice_Type);
              py_NetDevice = PyObject_GC_New(PyNs3NetDevice, wrapper_type);
              py_NetDevice->inst_dict = NULL;
  
              py_NetDevice->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1))->Ref();
              py_NetDevice->obj = const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1));
              PyNs3ObjectBase_wrapper_registry[(void *) py_NetDevice->obj] = (PyObject *) py_NetDevice;
          }
          wrapper_lookup_iter2 = PyNs3Empty_wrapper_registry.find((void *) const_cast<ns3::Packet *> (ns3::PeekPointer (arg2)));
          if (wrapper_lookup_iter2 == PyNs3Empty_wrapper_registry.end()) {
              py_Packet = NULL;
          } else {
              py_Packet = (PyNs3Packet *) wrapper_lookup_iter2->second;
              Py_INCREF(py_Packet);
          }
  
          if (py_Packet == NULL)
          {
              wrapper_type2 = PyNs3SimpleRefCount__Ns3Packet_Ns3Empty_Ns3DefaultDeleter__lt__ns3Packet__gt____typeid_map.lookup_wrapper(typeid(*const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))), &PyNs3Packet_Type);
              py_Packet = PyObject_New(PyNs3Packet, wrapper_type2);
  
              py_Packet->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::Packet *> (ns3::PeekPointer (arg2))->Ref();
              py_Packet->obj = const_cast<ns3::Packet *> (ns3::PeekPointer (arg2));
              PyNs3Empty_wrapper_registry[(void *) py_Packet->obj] = (PyObject *) py_Packet;
          }
          py_Address = PyObject_New(PyNs3Address, &PyNs3Address_Type);
          py_Address->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
          py_Address->obj = new ns3::Address(arg4);
          PyNs3Address_wrapper_registry[(void *) py_Address->obj] = (PyObject *) py_Address;
          py_Address2 = PyObject_New(PyNs3Address, &PyNs3Address_Type);
          py_Address2->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
          py_Address2->obj = new ns3::Address(arg5);
          PyNs3Address_wrapper_registry[(void *) py_Address2->obj] = (PyObject *) py_Address2;
          args = Py_BuildValue((char *) "(NNiNNi)", py_NetDevice, py_Packet, (int) arg3, py_Address, py_Address2, arg6);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  
  class PythonCallbackImpl18 : public ns3::CallbackImpl<void, ns3::Ptr<ns3::NetDevice>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty>
  {
  public:
      PyObject *m_callback;
      PythonCallbackImpl18(PyObject *callback)
      {
          Py_INCREF(callback);
          m_callback = callback;
      }
      virtual ~PythonCallbackImpl18()
      {
          PyGILState_STATE __py_gil_state;
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          Py_DECREF(m_callback);
          m_callback = NULL;
          PyGILState_Release(__py_gil_state);
      }
  
      virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
      {
          const PythonCallbackImpl18 *other = dynamic_cast<const PythonCallbackImpl18*> (ns3::PeekPointer (other_base));
          if (other != NULL)
              return (other->m_callback == m_callback);
          else
              return false;
      }
  
  
      void
      operator()(ns3::Ptr< ns3::NetDevice > arg1)
      {
          PyGILState_STATE __py_gil_state;
          PyObject *py_retval;
          PyNs3NetDevice *py_NetDevice;
          std::map<void*, PyObject*>::const_iterator wrapper_lookup_iter;
          PyTypeObject *wrapper_type = 0;
          PyObject *args;
  
          __py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
          wrapper_lookup_iter = PyNs3ObjectBase_wrapper_registry.find((void *) const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1)));
          if (wrapper_lookup_iter == PyNs3ObjectBase_wrapper_registry.end()) {
              py_NetDevice = NULL;
          } else {
              py_NetDevice = (PyNs3NetDevice *) wrapper_lookup_iter->second;
              Py_INCREF(py_NetDevice);
          }
  
          if (py_NetDevice == NULL)
          {
              wrapper_type = PyNs3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter__typeid_map.lookup_wrapper(typeid(*const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1))), &PyNs3NetDevice_Type);
              py_NetDevice = PyObject_GC_New(PyNs3NetDevice, wrapper_type);
              py_NetDevice->inst_dict = NULL;
  
              py_NetDevice->flags = PYBINDGEN_WRAPPER_FLAG_NONE;
              const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1))->Ref();
              py_NetDevice->obj = const_cast<ns3::NetDevice *> (ns3::PeekPointer (arg1));
              PyNs3ObjectBase_wrapper_registry[(void *) py_NetDevice->obj] = (PyObject *) py_NetDevice;
          }
          args = Py_BuildValue((char *) "(N)", py_NetDevice);
          py_retval = PyObject_CallObject(m_callback, args);
          if (py_retval == NULL) {
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          if (py_retval != Py_None) {
              PyErr_SetString(PyExc_TypeError, "function/method should return None");
              Py_DECREF(py_retval);
              Py_DECREF(args);
              if (PyEval_ThreadsInitialized())
                  PyGILState_Release(__py_gil_state);
              return;
          }
          Py_DECREF(py_retval);
          Py_DECREF(args);
          if (PyEval_ThreadsInitialized())
              PyGILState_Release(__py_gil_state);
          return;
      }
  };
  
  