mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-29 13:20:54 +00:00
768e812e45
* On windows it's strongly desired to be able to compile straight out of a clean checkout or source download. This means anyone can download the source and investigate something quickly, without having to worry about the hassle of figuring out how the project downloads 3rd party dependencies, fetching them, getting them registered in the right place. * This can't be put in a submodule as git submodules don't get downloaded by default so people new to git will get confusing compilation messages, and someone downloading the source from github directly without cloning via git won't get submodules included. * It does add some extra size to a fresh download/checkout which is unfortunate, but absolutely worth the cost. Shallow checkouts still aren't unfeasibly large, and it's only a one-off cost at clone time.
83 lines
2.7 KiB
OpenEdge ABL
83 lines
2.7 KiB
OpenEdge ABL
// 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
|
|
}
|
|
|
|
// Workaround empty first macro argument bug
|
|
#define SWIGEMPTYHACK
|
|
// Main user macro for defining intrusive_ptr typemaps for both const and non-const pointer types
|
|
%define %intrusive_ptr(TYPE...)
|
|
%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > }
|
|
SWIG_INTRUSIVE_PTR_TYPEMAPS(SWIGEMPTYHACK, TYPE)
|
|
SWIG_INTRUSIVE_PTR_TYPEMAPS(const, TYPE)
|
|
%enddef
|
|
|
|
%define %intrusive_ptr_no_wrap(TYPE...)
|
|
%feature("smartptr", noblock=1) TYPE { SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > }
|
|
SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(SWIGEMPTYHACK, TYPE)
|
|
SWIG_INTRUSIVE_PTR_TYPEMAPS_NO_WRAP(const, TYPE)
|
|
%enddef
|
|
|
|
// Legacy macros
|
|
%define SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE...)
|
|
#warning "SWIG_INTRUSIVE_PTR(PROXYCLASS, TYPE) is deprecated. Please use %intrusive_ptr(TYPE) instead."
|
|
%intrusive_ptr(TYPE)
|
|
%enddef
|
|
|
|
%define SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE...)
|
|
#warning "SWIG_INTRUSIVE_PTR_DERIVED(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %intrusive_ptr(TYPE) instead."
|
|
%intrusive_ptr(TYPE)
|
|
%enddef
|
|
|
|
%define SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE...)
|
|
#warning "SWIG_INTRUSIVE_PTR_NO_WRAP(PROXYCLASS, TYPE) is deprecated. Please use %intrusive_ptr_no_wrap(TYPE) instead."
|
|
%intrusive_ptr_no_wrap(TYPE)
|
|
%enddef
|
|
|
|
%define SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE...)
|
|
#warning "SWIG_INTRUSIVE_PTR_DERIVED_NO_WRAP(PROXYCLASS, BASECLASSTYPE, TYPE) is deprecated. Please use %intrusive_ptr_no_wrap(TYPE) instead."
|
|
%intrusive_ptr_no_wrap(TYPE)
|
|
%enddef
|
|
|