1// shared_ptr namespaces could be boost or std or std::tr1 2// For example for std::tr1, use: 3// #define SWIG_SHARED_PTR_NAMESPACE std 4// #define SWIG_SHARED_PTR_SUBNAMESPACE tr1 5 6#if !defined(SWIG_SHARED_PTR_NAMESPACE) 7# define SWIG_SHARED_PTR_NAMESPACE boost 8#endif 9 10#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) 11# define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE::SWIG_SHARED_PTR_SUBNAMESPACE 12#else 13# define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE 14#endif 15 16namespace SWIG_SHARED_PTR_NAMESPACE { 17#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) 18 namespace SWIG_SHARED_PTR_SUBNAMESPACE { 19#endif 20 template <class T> class shared_ptr { 21 }; 22#if defined(SWIG_SHARED_PTR_SUBNAMESPACE) 23 } 24#endif 25} 26 27%fragment("SWIG_null_deleter", "header") { 28struct SWIG_null_deleter { 29 void operator() (void const *) const { 30 } 31}; 32%#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter() 33%#define SWIG_NO_NULL_DELETER_1 34%#define SWIG_NO_NULL_DELETER_SWIG_POINTER_NEW 35%#define SWIG_NO_NULL_DELETER_SWIG_POINTER_OWN 36} 37 38 39// Main user macro for defining shared_ptr typemaps for both const and non-const pointer types 40// For plain classes, do not use for derived classes 41%define SWIG_SHARED_PTR(PROXYCLASS, TYPE...) 42SWIG_SHARED_PTR_TYPEMAPS(PROXYCLASS, , TYPE) 43SWIG_SHARED_PTR_TYPEMAPS(PROXYCLASS, const, TYPE) 44%enddef 45 46// Main user macro for defining shared_ptr typemaps for both const and non-const pointer types 47// For derived classes 48%define SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...) 49SWIG_SHARED_PTR_TYPEMAPS(PROXYCLASS, , TYPE) 50SWIG_SHARED_PTR_TYPEMAPS(PROXYCLASS, const, TYPE) 51%types(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > = SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >) %{ 52 *newmemory = SWIG_CAST_NEW_MEMORY; 53 return (void *) new SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE >(*(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *)$from); 54%} 55%extend TYPE { 56 static SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< BASECLASSTYPE > SWIGSharedPtrUpcast(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > swigSharedPtrUpcast) { 57 return swigSharedPtrUpcast; 58 } 59} 60%enddef 61 62