diff options
Diffstat (limited to 'share/swig/2.0.11/d/dswigtype.swg')
-rw-r--r-- | share/swig/2.0.11/d/dswigtype.swg | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/share/swig/2.0.11/d/dswigtype.swg b/share/swig/2.0.11/d/dswigtype.swg new file mode 100644 index 0000000..41336dc --- /dev/null +++ b/share/swig/2.0.11/d/dswigtype.swg @@ -0,0 +1,184 @@ +/* ----------------------------------------------------------------------------- + * dswigtype.swg + * + * Typemaps for non-primitive types (C/C++ classes and structs). + * ----------------------------------------------------------------------------- */ + +%typemap(ctype) SWIGTYPE "void *" +%typemap(imtype) SWIGTYPE "void*" +%typemap(dtype) SWIGTYPE "$&dclassname" + +%typemap(ctype) SWIGTYPE [] "void *" +%typemap(imtype) SWIGTYPE [] "void*" +%typemap(dtype) SWIGTYPE [] "$dclassname" + +%typemap(ctype) SWIGTYPE * "void *" +%typemap(imtype) SWIGTYPE * "void*" +%typemap(dtype, nativepointer="$dtype") SWIGTYPE * "$dclassname" + +%typemap(ctype) SWIGTYPE & "void *" +%typemap(imtype) SWIGTYPE & "void*" +%typemap(dtype, nativepointer="$dtype") SWIGTYPE & "$dclassname" + +%typemap(ctype) SWIGTYPE *const& "void *" +%typemap(imtype) SWIGTYPE *const& "void*" +%typemap(dtype) SWIGTYPE *const& "$*dclassname" + +%typecheck(SWIG_TYPECHECK_POINTER) + SWIGTYPE, + SWIGTYPE *, + SWIGTYPE &, + SWIGTYPE [], + SWIGTYPE *const& + "" + + +/* + * By-value conversion typemaps (parameter is converted to a pointer). + */ + +%typemap(in, canthrow=1) SWIGTYPE ($&1_type argp) +%{ argp = ($&1_ltype)$input; + if (!argp) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Attempt to dereference null $1_type"); + return $null; + } + $1 = *argp; %} + +%typemap(out) SWIGTYPE +#ifdef __cplusplus +%{ $result = new $1_ltype((const $1_ltype &)$1); %} +#else +{ + $&1_ltype $1ptr = ($&1_ltype) malloc(sizeof($1_ltype)); + memmove($1ptr, &$1, sizeof($1_type)); + $result = $1ptr; +} +#endif + +%typemap(directorin) SWIGTYPE + "$input = (void *)&$1;" +%typemap(directorout) SWIGTYPE +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Unexpected null return for type $1_type"); + return $null; + } + $result = *($&1_ltype)$input; %} + +%typemap(ddirectorin) SWIGTYPE "new $&dclassname($winput, false)" +%typemap(ddirectorout) SWIGTYPE "$&dclassname.swigGetCPtr($dcall)" + +%typemap(din) SWIGTYPE "$&dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE) SWIGTYPE { + $&dclassname ret = new $&dclassname($imcall, true);$excode + return ret; +} + + +/* + * Pointer conversion typemaps. + */ + +%typemap(in) SWIGTYPE * "$1 = ($1_ltype)$input;" +%typemap(out) SWIGTYPE * "$result = (void *)$1;" + +%typemap(directorin) SWIGTYPE * + "$input = (void *) $1;" +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE * + "$result = ($1_ltype)$input;" + +%typemap(ddirectorin, + nativepointer="cast($dtype)$winput" +) SWIGTYPE * "($winput is null) ? null : new $dclassname($winput, false)" + +%typemap(ddirectorout, + nativepointer="cast(void*)$dcall" +) SWIGTYPE * "$dclassname.swigGetCPtr($dcall)" + +%typemap(din, + nativepointer="cast(void*)$dinput" +) SWIGTYPE * "$dclassname.swigGetCPtr($dinput)" + +%typemap(dout, excode=SWIGEXCODE, + nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}" +) SWIGTYPE * { + void* cPtr = $imcall; + $dclassname ret = (cPtr is null) ? null : new $dclassname(cPtr, $owner);$excode + return ret; +} + +// Use the same typemaps for const pointers. +%apply SWIGTYPE * { SWIGTYPE *const } + + +/* + * Reference conversion typemaps. + */ + +%typemap(in, canthrow=1) SWIGTYPE & %{ $1 = ($1_ltype)$input; + if (!$1) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "$1_type type is null"); + return $null; + } %} +%typemap(out) SWIGTYPE & "$result = (void *)$1;" + +%typemap(directorin) SWIGTYPE & + "$input = ($1_ltype) &$1;" +%typemap(directorout, warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) SWIGTYPE & +%{ if (!$input) { + SWIG_DSetPendingException(SWIG_DIllegalArgumentException, "Unexpected null return for type $1_type"); + return $null; + } + $result = ($1_ltype)$input; %} + +%typemap(ddirectorin, + nativepointer="cast($dtype)$winput" +) SWIGTYPE & "new $dclassname($winput, false)" +%typemap(ddirectorout, + nativepointer="cast(void*)$dcall" +) SWIGTYPE & "$dclassname.swigGetCPtr($dcall)" + +%typemap(din, + nativepointer="cast(void*)$dinput" +) SWIGTYPE & "$dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE, + nativepointer="{\n auto ret = cast($dtype)$imcall;$excode\n return ret;\n}") SWIGTYPE & { + $dclassname ret = new $dclassname($imcall, $owner);$excode + return ret; +} + + +/* + * Array conversion typemaps. + */ + +%typemap(in) SWIGTYPE [] %{ $1 = ($1_ltype)$input; %} +%typemap(out) SWIGTYPE [] %{ $result = $1; %} + +%typemap(din) SWIGTYPE [] "$dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE) SWIGTYPE [] { + void* cPtr = $imcall; + $dclassname ret = (cPtr is null) ? null : new $dclassname(cPtr, $owner);$excode + return ret; +} + +// Treat references to arrays like like references to a single element. +%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } + + +/* + * Pointer reference conversion typemaps. + */ + +%typemap(in) SWIGTYPE *const& ($*1_ltype temp = 0) +%{ temp = ($*1_ltype)$input; + $1 = ($1_ltype)&temp; %} +%typemap(out) SWIGTYPE *const& +%{ $result = (void *)*$1; %} + +%typemap(din) SWIGTYPE *const& "$*dclassname.swigGetCPtr($dinput)" +%typemap(dout, excode=SWIGEXCODE) SWIGTYPE *const& { + void* cPtr = $imcall; + $*dclassname ret = (cPtr is null) ? null : new $*dclassname(cPtr, $owner);$excode + return ret; +} |