summaryrefslogtreecommitdiff
path: root/share/swig/2.0.11/typemaps/implicit.swg
diff options
context:
space:
mode:
Diffstat (limited to 'share/swig/2.0.11/typemaps/implicit.swg')
-rw-r--r--share/swig/2.0.11/typemaps/implicit.swg208
1 files changed, 0 insertions, 208 deletions
diff --git a/share/swig/2.0.11/typemaps/implicit.swg b/share/swig/2.0.11/typemaps/implicit.swg
deleted file mode 100644
index 702fb52..0000000
--- a/share/swig/2.0.11/typemaps/implicit.swg
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- The %implicit macro allows a SwigType (Class) to be accepted
- as an input parameter and use its implicit constructors when needed.
-
- For example:
-
-
- %implicit(A, int, double, B);
-
- %inline
- {
- struct B { };
- struct A
- {
- int ii;
- A(int i) { ii = 1; }
- A(double d) { ii = 2; }
- A(const B& b) { ii = 3; }
- };
-
- int get(A a) { return a.ii; }
- }
-
- Here, you can call 'get' as
-
- get(1) ==> get(A(1))
- get(2.0) ==> get(A(2.0))
- get(B()) ==> get(A(B()))
-
- and swig will construct an 'A' temporal variable using the
- corresponding implicit constructor.
-
-
- The plain implicit macro takes care of simple type list. If it doesn't
- work because you are passing template types with commas, then use
- the %implicit_{1,2,3} versions and/or the %arg macro.
-
-*/
-
-%define %implicit_type(Type...)
-%traits_swigtype(Type);
-%enddef
-
-%define %implicit_frag(Type...) ,fragment=SWIG_Traits_frag(Type) %enddef
-
-%define %implicit_code(Type...)
-{
- Type _v;
- int res = swig::asval<Type >(obj, &_v);
- if (SWIG_IsOK(res)) {
- if (val) *val = new value_type(static_cast<const Type& >(_v));
- return SWIG_AddNewMask(res);
- }
-}
-%enddef
-
-/* implicit */
-
-%define %implicit(Type, ...)
-
-%formacro_1(%implicit_type,__VA_ARGS__);
-
-%fragment(SWIG_Traits_frag(Type),"header",
- fragment="StdTraits"
- %formacro_1(%implicit_frag,__VA_ARGS__)) %{
-namespace swig {
- template <> struct traits<Type > {
- typedef pointer_category category;
- static const char* type_name() { return "Type"; }
- };
-
- template <> struct traits_asptr< Type > {
- typedef Type value_type;
- static int asptr(SWIG_Object obj, value_type **val) {
- Type *vptr;
- static swig_type_info* desc = SWIG_TypeQuery("Type *");
- int res = SWIG_ConvertPtr(obj, (void **)&vptr, desc, 0);
- if (SWIG_IsOK(res)) {
- if (val) *val = vptr;
- return res;
- } else {
- %formacro_1(%implicit_code,__VA_ARGS__)
- }
- return SWIG_TypeError;
- }
- };
-}
-%}
-
-%typemap_traits_ptr(%checkcode(POINTER),Type);
-%enddef
-
-/* implicit_1 */
-
-
-%define %implicit_1(Type, Imp1)
-%traits_swigtype(Imp1);
-
-%fragment(SWIG_Traits_frag(Type),"header",
- fragment="StdTraits",
- fragment=SWIG_Traits_frag(Imp1)) %{
-namespace swig {
- template <> struct traits< Type > {
- typedef pointer_category category;
- static const char* type_name() { return "Type"; }
- };
-
- template <> struct traits_asptr< Type > {
- typedef Type value_type;
- static int asptr(SWIG_Object obj, value_type **val) {
- Type *vptr;
- static swig_type_info* desc = SWIG_TypeQuery("Type *");
- int res = SWIG_ConvertPtr(obj, (void **)&vptr, desc, 0);
- if (SWIG_IsOK(res)) {
- if (val) *val = vptr;
- return res;
- } else {
- %implicit_code(Imp1);
- }
- return SWIG_TypeError;
- }
- };
-}
-%}
-
-%typemap_traits_ptr(%checkcode(POINTER),Type);
-
-%enddef
-
-/* implicit_2 */
-
-%define %implicit_2(Type, Imp1, Imp2)
-%traits_swigtype(Imp1);
-%traits_swigtype(Imp2);
-
-%fragment(SWIG_Traits_frag(Type),"header",
- fragment="StdTraits",
- fragment=SWIG_Traits_frag(Imp1),
- fragment=SWIG_Traits_frag(Imp2)) %{
-namespace swig {
- template <> struct traits< Type > {
- typedef pointer_category category;
- static const char* type_name() { return "Type"; }
- };
-
- template <> struct traits_asptr< Type > {
- typedef Type value_type;
- static int asptr(SWIG_Object obj, value_type **val) {
- Type *vptr;
- static swig_type_info* desc = SWIG_TypeQuery("Type *");
- int res = SWIG_ConvertPtr(obj, (void **)&vptr, desc, 0);
- if (SWIG_IsOK(res)) {
- if (val) *val = vptr;
- return SWIG_OLDOBJ;
- } else {
- %implicit_code(Imp1);
- %implicit_code(Imp2);
- }
- return SWIG_TypeError;
- }
- };
-}
-%}
-
-%typemap_traits_ptr(%checkcode(POINTER),Type);
-%enddef
-
-
-/* implicit_3 */
-
-%define %implicit_3(Type, Imp1, Imp2, Imp3)
-%traits_swigtype(Imp1);
-%traits_swigtype(Imp2);
-%traits_swigtype(Imp3);
-
-%fragment(SWIG_Traits_frag(Type),"header",
- fragment="StdTraits",
- fragment=SWIG_Traits_frag(Imp1),
- fragment=SWIG_Traits_frag(Imp2),
- fragment=SWIG_Traits_frag(Imp3)) %{
-namespace swig {
- template <> struct traits< Type > {
- typedef pointer_category category;
- static const char* type_name() { return "Type"; }
- };
-
- template <> struct traits_asptr< Type > {
- typedef Type value_type;
- static int asptr(SWIG_Object obj, value_type **val) {
- Type *vptr;
- static swig_type_info* desc = SWIG_TypeQuery("Type *");
- int res = SWIG_ConvertPtr(obj, (void **)&vptr, desc, 0);
- if (SWIG_IsOK(res)) {
- if (val) *val = vptr;
- return res;
- } else {
- %implicit_code(Imp1);
- %implicit_code(Imp2);
- %implicit_code(Imp3);
- }
- return SWIG_TypeError;
- }
- };
-}
-%}
-
-%typemap_traits_ptr(%checkcode(POINTER),Type);
-%enddef