/*--------------------------------------------------------------------- * Value typemaps (Type, const Type&) for value types, such as * fundamental types (int, double), that define the AsVal/From * methods. * * To apply them, just use one of the following macros: * * %typemaps_from(FromMeth, FromFrag, Type) * %typemaps_asval(CheckCode, AsValMeth, AsValFrag, Type) * %typemaps_asvalfrom(CheckCode, AsValMeth, FromMeth, AsValFrag, FromFrag, Type) * * or the simpler and normalize form: * * %typemaps_asvalfromn(CheckCode, Type) * * Also, you can use the individual typemap definitions: * * %value_in_typemap(asval_meth,frag,Type) * %value_varin_typemap(asval_meth,frag,Type) * %value_typecheck_typemap(checkcode,asval_meth,frag,Type) * %value_directorout_typemap(asval_meth,frag,Type) * * %value_out_typemap(from_meth,frag,Type) * %value_varout_typemap(from_meth,frag,Type) * %value_constcode_typemap(from_meth,frag,Type) * %value_directorin_typemap(from_meth,frag,Type) * %value_throws_typemap(from_meth,frag,Type) * *---------------------------------------------------------------------*/ /* in */ %define %value_in_typemap(asval_meth,frag,Type...) %typemap(in,noblock=1,fragment=frag) Type (Type val, int ecode = 0) { ecode = asval_meth($input, &val); if (!SWIG_IsOK(ecode)) { %argument_fail(ecode, "$ltype", $symname, $argnum); } $1 = %static_cast(val,$ltype); } %typemap(freearg) Type "" %typemap(in,noblock=1,fragment=frag) const Type & ($*ltype temp, Type val, int ecode = 0) { ecode = asval_meth($input, &val); if (!SWIG_IsOK(ecode)) { %argument_fail(ecode, "$*ltype", $symname, $argnum); } temp = %static_cast(val, $*ltype); $1 = &temp; } %typemap(freearg) const Type& "" %enddef /* out */ %define %value_out_typemap(from_meth,frag,Type...) %typemap(out,noblock=1,fragment=frag) Type, const Type { %set_output(from_meth(%static_cast($1,Type))); } %typemap(out,noblock=1,fragment=frag) const Type& { %set_output(from_meth(%static_cast(*$1,Type))); } %enddef /* varin */ %define %value_varin_typemap(asval_meth,frag,Type...) %typemap(varin,fragment=frag) Type { Type val; int res = asval_meth($input, &val); if (!SWIG_IsOK(res)) { %variable_fail(res, "$type", "$name"); } $1 = %static_cast(val,$ltype); } %enddef /* varout */ %define %value_varout_typemap(from_meth,frag,Type...) %typemap(varout,noblock=1,fragment=frag) Type, const Type& { %set_varoutput(from_meth(%static_cast($1,Type))); } %enddef /* constant installation code */ %define %value_constcode_typemap(from_meth,frag,Type...) %typemap(constcode,noblock=1,fragment=frag) Type { %set_constant("$symname", from_meth(%static_cast($value,Type))); } %enddef #if defined(SWIG_DIRECTOR_TYPEMAPS) /* directorin */ %define %value_directorin_typemap(from_meth,frag,Type...) %typemap(directorin,noblock=1,fragment=frag) Type *DIRECTORIN { $input = from_meth(%static_cast(*$1,Type)); } %typemap(directorin,noblock=1,fragment=frag) Type, const Type& { $input = from_meth(%static_cast($1,Type)); } %enddef /* directorout */ %define %value_directorout_typemap(asval_meth,frag,Type...) %typemap(directorargout,noblock=1,fragment=frag) Type *DIRECTOROUT(Type swig_val, int swig_res) { swig_res = asval_meth($result, &swig_val); if (!SWIG_IsOK(swig_res)) { %dirout_fail(swig_res, "$type"); } *$1 = swig_val; } %typemap(directorout,noblock=1,fragment=frag) Type { Type swig_val; int swig_res = asval_meth($input, &swig_val); if (!SWIG_IsOK(swig_res)) { %dirout_fail(swig_res, "$type"); } $result = %static_cast(swig_val,$type); } %typemap(directorout,noblock=1,fragment=frag,warning=SWIGWARN_TYPEMAP_DIRECTOROUT_PTR_MSG) const Type& { Type swig_val; int swig_res = asval_meth($input, &swig_val); if (!SWIG_IsOK(swig_res)) { %dirout_fail(swig_res, "$type"); } $basetype *temp = new $basetype(($basetype)swig_val); swig_acquire_ownership(temp); $result = temp; } %typemap(directorfree,noblock=1) const Type & { if (director) { director->swig_release_ownership(%as_voidptr($input)); } } %typemap(directorout,fragment=frag) Type &DIRECTOROUT = Type %enddef #else #define %value_directorin_typemap(from_meth,frag,Type...) #define %value_directorout_typemap(asval_meth,frag,Type...) #endif /* SWIG_DIRECTOR_TYPEMAPS */ /* throws */ %define %value_throws_typemap(from_meth,frag,Type...) %typemap(throws,noblock=1,fragment=frag) Type { %raise(from_meth(%static_cast($1,Type)), "$type", 0); } %enddef /* typecheck */ %define %value_typecheck_typemap(check,asval_meth,frag,Type...) %typemap(typecheck,precedence=check,fragment=frag) Type, const Type& { int res = asval_meth($input, NULL); $1 = SWIG_CheckState(res); } %enddef /*--------------------------------------------------------------------- * typemap definition for types with AsVal methods *---------------------------------------------------------------------*/ %define %typemaps_asval(CheckCode, AsValMeth, AsValFrag, Type...) %value_in_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); %value_varin_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); %value_directorout_typemap(%arg(AsValMeth), %arg(AsValFrag), Type); %value_typecheck_typemap(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); %value_input_typemap(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); %enddef /*--------------------------------------------------------------------- * typemap definition for types with from method *---------------------------------------------------------------------*/ %define %typemaps_from(FromMeth, FromFrag, Type...) %value_out_typemap(%arg(FromMeth), %arg(FromFrag), Type); %value_varout_typemap(%arg(FromMeth), %arg(FromFrag), Type); %value_constcode_typemap(%arg(FromMeth), %arg(FromFrag), Type); %value_directorin_typemap(%arg(FromMeth), %arg(FromFrag), Type); %value_throws_typemap(%arg(FromMeth), %arg(FromFrag), Type); %value_output_typemap(%arg(FromMeth), %arg(FromFrag), Type); %enddef /*--------------------------------------------------------------------- * typemap definition for types with asval/from method *---------------------------------------------------------------------*/ %define %typemaps_asvalfrom(CheckCode, AsValMeth, FromMeth, AsValFrag, FromFrag, Type...) %typemaps_asval(%arg(CheckCode), %arg(AsValMeth), %arg(AsValFrag), Type); %typemaps_from(%arg(FromMeth), %arg(FromFrag), Type); %value_inout_typemap(Type); %enddef /*--------------------------------------------------------------------- * typemap definition for types with for 'normalized' asval/from methods *---------------------------------------------------------------------*/ %define %typemaps_asvalfromn(CheckCode, Type...) %typemaps_asvalfrom(%arg(CheckCode), SWIG_AsVal(Type), SWIG_From(Type), %arg(SWIG_AsVal_frag(Type)), %arg(SWIG_From_frag(Type)), Type); %enddef