| // Allow for different namespaces for shared_ptr / intrusive_ptr - they could be boost or std or std::tr1 | |
| // For example for std::tr1, use: | |
| // #define SWIG_SHARED_PTR_NAMESPACE std | |
| // #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 | |
| // #define SWIG_INTRUSIVE_PTR_NAMESPACE boost | |
| // #define SWIG_INTRUSIVE_PTR_SUBNAMESPACE | |
| #if !defined(SWIG_INTRUSIVE_PTR_NAMESPACE) | |
| # define SWIG_INTRUSIVE_PTR_NAMESPACE boost | |
| #endif | |
| #if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) | |
| # define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE::SWIG_INTRUSIVE_PTR_SUBNAMESPACE | |
| #else | |
| # define SWIG_INTRUSIVE_PTR_QNAMESPACE SWIG_INTRUSIVE_PTR_NAMESPACE | |
| #endif | |
| namespace SWIG_INTRUSIVE_PTR_NAMESPACE { | |
| #if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) | |
| namespace SWIG_INTRUSIVE_PTR_SUBNAMESPACE { | |
| #endif | |
| template <class T> class intrusive_ptr { | |
| }; | |
| #if defined(SWIG_INTRUSIVE_PTR_SUBNAMESPACE) | |
| } | |
| #endif | |
| } | |
| %fragment("SWIG_intrusive_deleter", "header") { | |
| template<class T> struct SWIG_intrusive_deleter { | |
| void operator()(T *p) { | |
| if (p) | |
| intrusive_ptr_release(p); | |
| } | |
| }; | |
| } | |
| %fragment("SWIG_null_deleter", "header") { | |
| struct SWIG_null_deleter { | |
| void operator() (void const *) const { | |
| } | |
| }; | |
| %#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter() | |
| %#define SWIG_NO_NULL_DELETER_1 | |
| } | |
| // Main user macro for defining intrusive_ptr typemaps for both const and non-const pointer types | |
| // For plain classes, do not use for derived classes | |
| %define SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE...) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, , TYPE) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, const, TYPE) | |
| %enddef | |
| // Main user macro for defining intrusive_ptr typemaps for both const and non-const pointer types | |
| // For derived classes | |
| %define SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, , TYPE) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS(PROXYCLASS, const, TYPE) | |
| %types(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > = SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >) %{ | |
| *newmemory = SWIG_CAST_NEW_MEMORY; | |
| return (void *) new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >(*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *)$from); | |
| %} | |
| %extend TYPE { | |
| static SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE > SWIGSharedPtrUpcast(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast) { | |
| return swigSharedPtrUpcast; | |
| } | |
| } | |
| %enddef | |
| // Extra user macro for including classes in intrusive_ptr typemaps for both const and non-const pointer types | |
| // This caters for classes which cannot be wrapped by intrusive_ptrs but are still part of the class hierarchy | |
| // For plain classes, do not use for derived classes | |
| %define SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE...) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, , TYPE) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, const, TYPE) | |
| %enddef | |
| // Extra user macro for including classes in intrusive_ptr typemaps for both const and non-const pointer types | |
| // This caters for classes which cannot be wrapped by intrusive_ptrs but are still part of the class hierarchy | |
| // For derived classes | |
| %define SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE...) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, , TYPE) | |
| SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(PROXYCLASS, const, TYPE) | |
| %types(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > = SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >) %{ | |
| *newmemory = SWIG_CAST_NEW_MEMORY; | |
| return (void *) new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >(*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *)$from); | |
| %} | |
| %extend TYPE { | |
| static SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE > SWIGSharedPtrUpcast(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast) { | |
| return swigSharedPtrUpcast; | |
| } | |
| } | |
| %enddef | |