1899
|
1 // This is a helper file for shared_ptr and should not be included directly.
|
|
2
|
|
3 // The main implementation detail in using this smart pointer of a type is to customise the code generated
|
|
4 // to use a pointer to the smart pointer of the type, rather than the usual pointer to the underlying type.
|
|
5 // So for some type T, shared_ptr<T> * is used rather than T *.
|
|
6
|
|
7 // shared_ptr namespaces could be boost or std or std::tr1
|
|
8 // For example for std::tr1, use:
|
|
9 // #define SWIG_SHARED_PTR_NAMESPACE std
|
|
10 // #define SWIG_SHARED_PTR_SUBNAMESPACE tr1
|
|
11
|
|
12 #if !defined(SWIG_SHARED_PTR_NAMESPACE)
|
|
13 # define SWIG_SHARED_PTR_NAMESPACE boost
|
|
14 #endif
|
|
15
|
|
16 #if defined(SWIG_SHARED_PTR_SUBNAMESPACE)
|
|
17 # define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE::SWIG_SHARED_PTR_SUBNAMESPACE
|
|
18 #else
|
|
19 # define SWIG_SHARED_PTR_QNAMESPACE SWIG_SHARED_PTR_NAMESPACE
|
|
20 #endif
|
|
21
|
|
22 namespace SWIG_SHARED_PTR_NAMESPACE {
|
|
23 #if defined(SWIG_SHARED_PTR_SUBNAMESPACE)
|
|
24 namespace SWIG_SHARED_PTR_SUBNAMESPACE {
|
|
25 #endif
|
|
26 template <class T> class shared_ptr {
|
|
27 };
|
|
28 #if defined(SWIG_SHARED_PTR_SUBNAMESPACE)
|
|
29 }
|
|
30 #endif
|
|
31 }
|
|
32
|
|
33 %fragment("SWIG_null_deleter", "header") {
|
|
34 struct SWIG_null_deleter {
|
|
35 void operator() (void const *) const {
|
|
36 }
|
|
37 };
|
|
38 %#define SWIG_NO_NULL_DELETER_0 , SWIG_null_deleter()
|
|
39 %#define SWIG_NO_NULL_DELETER_1
|
|
40 %#define SWIG_NO_NULL_DELETER_SWIG_POINTER_NEW
|
|
41 %#define SWIG_NO_NULL_DELETER_SWIG_POINTER_OWN
|
|
42 }
|
|
43
|
|
44
|
|
45 // Workaround empty first macro argument bug
|
|
46 #define SWIGEMPTYHACK
|
|
47 // Main user macro for defining shared_ptr typemaps for both const and non-const pointer types
|
|
48 %define %shared_ptr(TYPE...)
|
|
49 %feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > }
|
|
50 SWIG_SHARED_PTR_TYPEMAPS(SWIGEMPTYHACK, TYPE)
|
|
51 SWIG_SHARED_PTR_TYPEMAPS(const, TYPE)
|
|
52 %enddef
|
|
53
|
|
54 // Legacy macros
|
|
55 %define SWIG_SHARED_PTR(PROXYCLASS, TYPE...)
|
|
56 #warning "SWIG_SHARED_PTR(PROXYCLASS, TYPE) is deprecated. Please use %shared_ptr(TYPE) instead."
|
|
57 %shared_ptr(TYPE)
|
|
58 %enddef
|
|
59
|
|
60 %define SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...)
|
|
61 #warning "SWIG_SHARED_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %shared_ptr(TYPE) instead."
|
|
62 %shared_ptr(TYPE)
|
|
63 %enddef
|
|
64
|