You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
89 lines
2.6 KiB
/* ------------------------------------------------------------ |
|
* Typemap specializations for Tcl |
|
* ------------------------------------------------------------ */ |
|
|
|
/* ------------------------------------------------------------ |
|
* Fragment section |
|
* ------------------------------------------------------------ */ |
|
|
|
/* |
|
in Tcl we need to pass the interp value, so, we define the decl/call |
|
macros as needed. |
|
*/ |
|
|
|
#define SWIG_AS_DECL_ARGS SWIG_TCL_DECL_ARGS_2 |
|
#define SWIG_AS_CALL_ARGS SWIG_TCL_CALL_ARGS_2 |
|
|
|
|
|
/* Include fundamental fragemt definitions */ |
|
%include <typemaps/fragments.swg> |
|
|
|
/* Look for user fragments file. */ |
|
%include <tclfragments.swg> |
|
|
|
/* Tcl fragments for primitve types */ |
|
%include <tclprimtypes.swg> |
|
|
|
/* Tcl fragments for char* strings */ |
|
%include <tclstrings.swg> |
|
|
|
|
|
/* ------------------------------------------------------------ |
|
* Unified typemap section |
|
* ------------------------------------------------------------ */ |
|
|
|
/* No director supported in Tcl */ |
|
#ifdef SWIG_DIRECTOR_TYPEMAPS |
|
#undef SWIG_DIRECTOR_TYPEMAPS |
|
#endif |
|
|
|
|
|
/* Tcl types */ |
|
#define SWIG_Object Tcl_Obj * |
|
|
|
/* Overload of the output/constant/exception handling */ |
|
|
|
/* output */ |
|
#define %set_output(obj) Tcl_SetObjResult(interp,obj) |
|
|
|
/* append output */ |
|
#define %append_output(obj) Tcl_ListObjAppendElement(interp,Tcl_GetObjResult(interp),obj) |
|
|
|
/* set constant */ |
|
#define SWIG_SetConstant(name, obj) SWIG_Tcl_SetConstantObj(interp, name, obj) |
|
|
|
/* raise */ |
|
#define SWIG_Raise(obj,type,desc) SWIG_Tcl_SetErrorObj(interp,type,obj) |
|
|
|
|
|
/* Include the unified typemap library */ |
|
%include <typemaps/swigtypemaps.swg> |
|
|
|
|
|
/* ------------------------------------------------------------ |
|
* Tcl extra typemaps |
|
* ------------------------------------------------------------ */ |
|
|
|
#if 1 |
|
// Old 1.3.25 typemaps needed to avoid premature object deletion |
|
%typemap(out,noblock=1) SWIGTYPE *INSTANCE, SWIGTYPE &INSTANCE, SWIGTYPE INSTANCE[] { |
|
Tcl_SetObjResult(interp, SWIG_NewInstanceObj( %as_voidptr($1), $1_descriptor,0)); |
|
} |
|
|
|
%typemap(out) SWIGTYPE *DYNAMIC, SWIGTYPE &DYNAMIC { |
|
swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,%as_voidptrptr(&$1)); |
|
Tcl_SetObjResult(interp,SWIG_NewInstanceObj(%as_voidptr($1), ty,0)); |
|
} |
|
|
|
#endif |
|
|
|
%typemap(throws,noblock=1) SWIGTYPE CLASS { |
|
SWIG_set_result(SWIG_NewInstanceObj(%as_voidptr(SWIG_new_copy($1, $1_ltype)), $&1_descriptor, 1)); |
|
SWIG_fail; |
|
} |
|
|
|
%typemap(out) SWIGTYPE = SWIGTYPE INSTANCE; |
|
%typemap(out) SWIGTYPE * = SWIGTYPE *INSTANCE; |
|
%typemap(out) SWIGTYPE & = SWIGTYPE &INSTANCE; |
|
%typemap(out) SWIGTYPE [] = SWIGTYPE INSTANCE[]; |
|
%typemap(varout) SWIGTYPE = SWIGTYPE INSTANCE;
|
|
|