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