Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Beazley D.M.SWIG users manual.pdf
Скачиваний:
14
Добавлен:
23.08.2013
Размер:
1.53 Mб
Скачать

SWIG Users Guide

Extending SWIG

303

 

 

 

sprintf(_wrap_$target,"%ld",$value);

Tcl_LinkVar(interp,"$target", (char *) &_wrap_$target, TCL_LINK_STRING | TCL_LINK_READ_ONLY);

}

// Unsigned integers

%typemap(const) unsigned SWIG_DEFAULT_TYPE, unsigned short SWIG_DEFAULT_TYPE, unsigned long SWIG_DEFAULT_TYPE, unsigned char SWIG_DEFAULT_TYPE

{

static char *_wrap_$target; _wrap_$target = (char *) malloc(40); sprintf(_wrap_$target,"%lu",$value);

Tcl_LinkVar(interp,"$target", (char *) &_wrap_$target, TCL_LINK_STRING | TCL_LINK_READ_ONLY);

}

// Doubles and floats

%typemap(const) double SWIG_DEFAULT_TYPE, float SWIG_DEFAULT_TYPE

{

static char *_wrap_$target; _wrap_$target = (char *) malloc(40); sprintf(_wrap_$target,"%f",$value);

Tcl_LinkVar(interp,"$target", (char *) &_wrap_$target, TCL_LINK_STRING | TCL_LINK_READ_ONLY);

}

// Strings

%typemap(const) char *SWIG_DEFAULT_TYPE

{

static char *_wrap_$target = "$value";

Tcl_LinkVar(interp,"$target", (char *) &_wrap_$target, TCL_LINK_STRING | TCL_LINK_READ_ONLY);

}

// Pointers

%typemap(const) User *SWIG_DEFAULT_TYPE

{

static char *_wrap_$target;

_wrap_$target = (char *) malloc(20+strlen("$mangle")); SWIG_MakePtr(_wrap_$target, (void *) $value, "$mangle"); Tcl_LinkVar(interp,"$target", (char *) &_wrap_$target, TCL_LINK_STRING |

TCL_LINK_READ_ONLY);

}

Now that we have our typemaps file, we are done and can start producing a variety of interesting Tcl extension modules. Should errors arrise, one will either have to pry into the C++ module or the typemaps file for a correction.

The SWIG library and installation issues

To make a new SWIG module generally usable, you will want to perform the following steps :

Put the new binary in a publicly accessible location (ie. /usr/local/bin).

Make a subdirectory for your language in the SWIG library. The library should match up

Version 1.1, June 24, 1997