blob: 4e5bb2b0492cf22ae24dae4f045883071cbd7a5b [file] [log] [blame]
/* -----------------------------------------------------------------------------
* 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
language, 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>