| Index: swig/Lib/typemaps/swigtypemaps.swg
|
| ===================================================================
|
| --- swig/Lib/typemaps/swigtypemaps.swg (revision 0)
|
| +++ swig/Lib/typemaps/swigtypemaps.swg (revision 0)
|
| @@ -0,0 +1,170 @@
|
| +/* -----------------------------------------------------------------------------
|
| + * See the LICENSE file for information on copyright, usage and redistribution
|
| + * of SWIG, and the README file for authors - http://www.swig.org/release.html.
|
| + *
|
| + * swigtypemaps.swg
|
| + *
|
| + * Unified Typemap Library frontend
|
| + * ----------------------------------------------------------------------------- */
|
| +
|
| +/*
|
| + This file provides the frontend to the Unified Typemap Library.
|
| +
|
| + When using this library in a SWIG target language, you need to
|
| + define a minimum set of fragments, specialize a couple of macros,
|
| + and then include this file.
|
| +
|
| + Typically you will create a 'mytypemaps.swg' file in each target
|
| + languge, where you will have the following sections:
|
| +
|
| + === mytypemaps.swg ===
|
| +
|
| + // Fragment section
|
| + %include <typemaps/fragments.swg>
|
| + <include target language fragments>
|
| +
|
| + // Unified typemap section
|
| + <specialized the typemap library macros>
|
| + %include <typemaps/swigtypemaps.swg>
|
| +
|
| + // Local typemap section
|
| + <add/replace extra target language typemaps>
|
| +
|
| + === mytypemaps.swg ===
|
| +
|
| + While we add more docs, please take a look at the following cases
|
| + to see how you specialized the unified typemap library for a new
|
| + target language:
|
| +
|
| + Lib/python/pytypemaps.swg
|
| + Lib/tcl/tcltypemaps.swg
|
| + Lib/ruby/rubytypemaps.swg
|
| + Lib/perl5/perltypemaps.swg
|
| +
|
| +*/
|
| +
|
| +#define SWIGUTL SWIGUTL
|
| +
|
| +/* -----------------------------------------------------------------------------
|
| + * Language specialization section.
|
| + *
|
| + * Tune these macros for each language as needed.
|
| + * ----------------------------------------------------------------------------- */
|
| +
|
| +/*
|
| + The SWIG target language object must be provided.
|
| + For example in python you define:
|
| +
|
| + #define SWIG_Object PyObject *
|
| +*/
|
| +
|
| +#if !defined(SWIG_Object)
|
| +#error "SWIG_Object must be defined as the SWIG target language object"
|
| +#endif
|
| +
|
| +/*==== flags for new/convert methods ====*/
|
| +
|
| +
|
| +#ifndef %convertptr_flags
|
| +%define %convertptr_flags 0 %enddef
|
| +#endif
|
| +
|
| +#ifndef %newpointer_flags
|
| +%define %newpointer_flags 0 %enddef
|
| +#endif
|
| +
|
| +#ifndef %newinstance_flags
|
| +%define %newinstance_flags 0 %enddef
|
| +#endif
|
| +
|
| +/*==== set output ====*/
|
| +
|
| +#ifndef %set_output
|
| +/* simple set output operation */
|
| +#define %set_output(obj) $result = obj
|
| +#endif
|
| +
|
| +/*==== set variable output ====*/
|
| +
|
| +#ifndef %set_varoutput
|
| +/* simple set varoutput operation */
|
| +#define %set_varoutput(obj) $result = obj
|
| +#endif
|
| +
|
| +/*==== append output ====*/
|
| +
|
| +#ifndef %append_output
|
| +#if defined(SWIG_AppendOutput)
|
| +/* simple append operation */
|
| +#define %append_output(obj) $result = SWIG_AppendOutput($result,obj)
|
| +#else
|
| +#error "Language must define SWIG_AppendOutput or %append_output"
|
| +#endif
|
| +#endif
|
| +
|
| +/*==== set constant ====*/
|
| +
|
| +#ifndef %set_constant
|
| +#if defined(SWIG_SetConstant)
|
| +/* simple set constant operation */
|
| +#define %set_constant(name,value) SWIG_SetConstant(name,value)
|
| +#else
|
| +#error "Language must define SWIG_SetConstant or %set_constant"
|
| +#endif
|
| +#endif
|
| +
|
| +/*==== raise an exception ====*/
|
| +
|
| +#ifndef %raise
|
| +#if defined(SWIG_Raise)
|
| +/* simple raise operation */
|
| +#define %raise(obj, type, desc) SWIG_Raise(obj, type, desc); SWIG_fail
|
| +#else
|
| +#error "Language must define SWIG_Raise or %raise"
|
| +#endif
|
| +#endif
|
| +
|
| +/*==== director output exception ====*/
|
| +
|
| +#if defined(SWIG_DIRECTOR_TYPEMAPS)
|
| +#ifndef SWIG_DirOutFail
|
| +#define SWIG_DirOutFail(code, msg) Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(code), msg)
|
| +#endif
|
| +#endif
|
| +
|
| +
|
| +/* -----------------------------------------------------------------------------
|
| + * Language independent definitions
|
| + * ----------------------------------------------------------------------------- */
|
| +
|
| +#define %error_block(Block...) %block(Block)
|
| +#define %default_code(code) SWIG_ArgError(code)
|
| +#define %argument_fail(code, type, name, argn) SWIG_exception_fail(%default_code(code), %argfail_fmt(type, name, argn))
|
| +#define %argument_nullref(type, name, argn) SWIG_exception_fail(SWIG_ValueError, %argnullref_fmt(type, name, argn))
|
| +#define %variable_fail(code, type, name) SWIG_exception_fail(%default_code(code), %varfail_fmt(type, name))
|
| +#define %variable_nullref(type, name) SWIG_exception_fail(SWIG_ValueError, %varnullref_fmt(type, name))
|
| +
|
| +#if defined(SWIG_DIRECTOR_TYPEMAPS)
|
| +#define %dirout_fail(code, type) SWIG_DirOutFail(%default_code(code), %outfail_fmt(type))
|
| +#define %dirout_nullref(type) SWIG_DirOutFail(SWIG_ValueError, %outnullref_fmt(type))
|
| +#endif
|
| +
|
| +/* -----------------------------------------------------------------------------
|
| + * All the typemaps
|
| + * ----------------------------------------------------------------------------- */
|
| +
|
| +
|
| +%include <typemaps/fragments.swg>
|
| +%include <typemaps/exception.swg>
|
| +%include <typemaps/swigtype.swg>
|
| +%include <typemaps/void.swg>
|
| +%include <typemaps/swigobject.swg>
|
| +%include <typemaps/valtypes.swg>
|
| +%include <typemaps/ptrtypes.swg>
|
| +%include <typemaps/inoutlist.swg>
|
| +%include <typemaps/primtypes.swg>
|
| +%include <typemaps/string.swg>
|
| +%include <typemaps/misctypes.swg>
|
| +%include <typemaps/enumint.swg>
|
| +
|
| +
|
|
|