123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /* -----------------------------------------------------------------------------
- * dprimitves.swg
- *
- * Typemaps for primitive types.
- * ----------------------------------------------------------------------------- */
- // C long/ulong width depends on the target arch, use stdlib aliases for them.
- #if (SWIG_D_VERSION == 1)
- %pragma(d) imdmoduleimports = "static import tango.stdc.config;"
- %pragma(d) globalproxyimports = "static import tango.stdc.config;"
- #define SWIG_LONG_DTYPE tango.stdc.config.c_long
- #define SWIG_ULONG_DTYPE tango.stdc.config.c_ulong
- #else
- %pragma(d) imdmoduleimports = "static import core.stdc.config;"
- %pragma(d) globalproxyimports = "static import core.stdc.config;"
- #define SWIG_LONG_DTYPE core.stdc.config.c_long
- #define SWIG_ULONG_DTYPE core.stdc.config.c_ulong
- #endif
- /*
- * The SWIG_D_PRIMITIVE macro is used to define the typemaps for the primitive
- * types, because are more or less the same for all of them. The few special
- * cases are handeled below.
- */
- %define SWIG_D_PRIMITIVE(TYPE, DTYPE)
- %typemap(ctype) TYPE, const TYPE & "TYPE"
- %typemap(imtype) TYPE, const TYPE & "DTYPE"
- %typemap(dtype, cprimitive="1") TYPE, const TYPE & "DTYPE"
- %typemap(in) TYPE "$1 = ($1_ltype)$input;"
- %typemap(out) TYPE "$result = $1;"
- %typemap(directorin) TYPE "$input = $1;"
- %typemap(directorout) TYPE "$result = ($1_ltype)$input;"
- %typemap(ddirectorin) TYPE "$winput"
- %typemap(ddirectorout) TYPE "$dcall"
- %typemap(in) const TYPE & ($*1_ltype temp)
- %{ temp = ($*1_ltype)$input;
- $1 = &temp; %}
- %typemap(out) const TYPE & "$result = *$1;"
- %typemap(directorin) const TYPE & "$input = $1;"
- %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const TYPE &
- %{ static $*1_ltype temp;
- temp = ($*1_ltype)$input;
- $result = &temp; %}
- %typemap(ddirectorin) const TYPE & "$winput"
- %typemap(ddirectorout) const TYPE & "$dcall"
- %typemap(din) TYPE, const TYPE & "$dinput"
- %typemap(dout, excode=SWIGEXCODE) TYPE, const TYPE & {
- auto ret = $imcall;$excode
- return ret;
- }
- %enddef
- SWIG_D_PRIMITIVE(bool, bool)
- SWIG_D_PRIMITIVE(char, char)
- SWIG_D_PRIMITIVE(signed char, byte)
- SWIG_D_PRIMITIVE(unsigned char, ubyte)
- SWIG_D_PRIMITIVE(short, short)
- SWIG_D_PRIMITIVE(unsigned short, ushort)
- SWIG_D_PRIMITIVE(int, int)
- SWIG_D_PRIMITIVE(unsigned int, uint)
- SWIG_D_PRIMITIVE(long, SWIG_LONG_DTYPE)
- SWIG_D_PRIMITIVE(unsigned long, SWIG_ULONG_DTYPE)
- SWIG_D_PRIMITIVE(size_t, size_t)
- SWIG_D_PRIMITIVE(long long, long)
- SWIG_D_PRIMITIVE(unsigned long long, ulong)
- SWIG_D_PRIMITIVE(float, float)
- SWIG_D_PRIMITIVE(double, double)
- // The C++ boolean type needs some special casing since it is not part of the
- // C standard and is thus represented as unsigned int in the C wrapper layer.
- %typemap(ctype) bool, const bool & "unsigned int"
- %typemap(imtype) bool, const bool & "uint"
- %typemap(in) bool "$1 = $input ? true : false;"
- %typemap(in) const bool & ($*1_ltype temp)
- %{ temp = $input ? true : false;
- $1 = &temp; %}
- %typemap(directorout) bool
- "$result = $input ? true : false;"
- %typemap(directorout,warning=SWIGWARN_TYPEMAP_THREAD_UNSAFE_MSG) const bool &
- %{ static $*1_ltype temp;
- temp = $input ? true : false;
- $result = &temp; %}
- %typemap(ddirectorin) bool "($winput ? true : false)"
- %typemap(dout, excode=SWIGEXCODE) bool, const bool & {
- bool ret = $imcall ? true : false;$excode
- return ret;
- }
- // Judging from the history of the C# module, the explicit casts are needed for
- // certain versions of VC++.
- %typemap(out) unsigned long "$result = (unsigned long)$1;"
- %typemap(out) const unsigned long & "$result = (unsigned long)*$1;"
- /*
- * Typecheck typemaps.
- */
- %typecheck(SWIG_TYPECHECK_BOOL)
- bool,
- const bool &
- ""
- %typecheck(SWIG_TYPECHECK_CHAR)
- char,
- const char &
- ""
- %typecheck(SWIG_TYPECHECK_INT8)
- signed char,
- const signed char &
- ""
- %typecheck(SWIG_TYPECHECK_UINT8)
- unsigned char,
- const unsigned char &
- ""
- %typecheck(SWIG_TYPECHECK_INT16)
- short,
- const short &
- ""
- %typecheck(SWIG_TYPECHECK_UINT16)
- unsigned short,
- const unsigned short &
- ""
- %typecheck(SWIG_TYPECHECK_INT32)
- int,
- long,
- const int &,
- const long &
- ""
- %typecheck(SWIG_TYPECHECK_UINT32)
- unsigned int,
- unsigned long,
- const unsigned int &,
- const unsigned long &
- ""
- %typecheck(SWIG_TYPECHECK_INT64)
- long long,
- const long long &
- ""
- %typecheck(SWIG_TYPECHECK_UINT64)
- unsigned long long,
- const unsigned long long &
- ""
- %typecheck(SWIG_TYPECHECK_FLOAT)
- float,
- const float &
- ""
- %typecheck(SWIG_TYPECHECK_DOUBLE)
- double,
- const double &
- ""
|