blob: 50a6509ee085741910802c5f5be2fc1890a38a39 [file] [log] [blame]
<swigxml:swig name="namespaces" xmlns:swigxml="http://jniplusplus.sourceforge.net" xmlns:swig="http://swig.sourceforge.net" xmlns:c="http://www.ansi.org" >
<swig:top >
<swigxml:child >
<swig:file name="../../Lib/swig.swg" >
<swigxml:type string="include" />
</swig:file>
<swig:file name="example_apply.i" >
<swigxml:child >
<swig:module name="example" />
<c:function name="add" >
<swigxml:parms >
<swigxml:parm name="x" >
<swigxml:type string="p.int" />
</swigxml:parm>
<swigxml:parm name="y" >
<swigxml:type string="p.int" />
</swigxml:parm>
<swigxml:parm name="result" >
<swigxml:type string="p.int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:storage string="extern" />
<swigxml:type string="void" />
</c:function>
<swig:file name="../../Lib/pointer.i" >
<swigxml:child >
<swig:module name="pointer" />
<swig:insert >
<swigxml:code >
%include pointer.i
The pointer.i library provides run-time support for managing and
manipulating a variety of C/C++ pointer values. In particular,
you can create various kinds of objects and dereference common
pointer types. This is done through a common set of functions:
ptrvalue - Dereferences a pointer
ptrset - Set the value of an object referenced by
a pointer.
ptrcreate - Create a new object and return a pointer.
ptrfree - Free the memory allocated by ptrcreate.
ptradd - Increment/decrement a pointer value.
When creating, dereferencing, or setting the value of pointer
variable, only the common C datatypes of int, short, long, float,
double, char, and char * are currently supported. Other
datatypes may generate an error.
One of the more interesting aspects of this library is that
it operates with a wide range of datatypes. For example,
the "ptrvalue" function can dereference "double *", "int *",
"long *", "char *", and other datatypes. Since SWIG encodes
pointers with type information, this can be done transparently
and in most cases, you can dereference a pointer without
ever knowing what type it actually is.
This library is primarily designed for utility, not high
performance (the dynamic determination of pointer types takes
more work than most normal wrapper functions). As a result,
you may achieve better performance by writing customized
"helper" functions if you're making lots of calls to these
functions in inner loops or other intensive operations.
</swigxml:code>
<swigxml:section string="doc" />
</swig:insert>
<swig:types >
<swigxml:parms >
<swigxml:parm >
<swigxml:type string="p.int" />
</swigxml:parm>
<swigxml:parm >
<swigxml:type string="p.short" />
</swigxml:parm>
<swigxml:parm >
<swigxml:type string="p.long" />
</swigxml:parm>
<swigxml:parm >
<swigxml:type string="p.float" />
</swigxml:parm>
<swigxml:parm >
<swigxml:type string="p.double" />
</swigxml:parm>
<swigxml:parm >
<swigxml:type string="p.char" />
</swigxml:parm>
<swigxml:parm >
<swigxml:type string="p.p.char" />
</swigxml:parm>
<swigxml:parm >
<swigxml:type string="p.void" />
</swigxml:parm>
</swigxml:parms>
</swig:types>
<swig:file name="../../Lib/xml/ptrlang.i" >
<swigxml:child >
<swig:insert >
<swigxml:code >
#include &amp;lt;ctype.h>
/* Types used by the library */
static swig_type_info *SWIG_POINTER_int_p = 0;
static swig_type_info *SWIG_POINTER_short_p =0;
static swig_type_info *SWIG_POINTER_long_p = 0;
static swig_type_info *SWIG_POINTER_float_p = 0;
static swig_type_info *SWIG_POINTER_double_p = 0;
static swig_type_info *SWIG_POINTER_char_p = 0;
static swig_type_info *SWIG_POINTER_char_pp = 0;
static swig_type_info *SWIG_POINTER_void_p = 0;
</swigxml:code>
</swig:insert>
<swig:insert >
<swigxml:code >
SWIG_POINTER_int_p = SWIG_TypeQuery("int *");
SWIG_POINTER_short_p = SWIG_TypeQuery("short *");
SWIG_POINTER_long_p = SWIG_TypeQuery("long *");
SWIG_POINTER_float_p = SWIG_TypeQuery("float *");
SWIG_POINTER_double_p = SWIG_TypeQuery("double *");
SWIG_POINTER_char_p = SWIG_TypeQuery("char *");
SWIG_POINTER_char_pp = SWIG_TypeQuery("char **");
SWIG_POINTER_void_p = SWIG_TypeQuery("void *");
</swigxml:code>
<swigxml:section string="init" />
</swig:insert>
<swig:insert >
<swigxml:code >
/* #ifdef WIN32
#undef isspace
#define isspace(c) (c == ' ')
#endif
*/
/*------------------------------------------------------------------
ptrvalue(ptr,type = 0)
Attempts to dereference a pointer value. If type is given, it
will try to use that type. Otherwise, this function will attempt
to "guess" the proper datatype by checking against all of the
builtin C datatypes.
------------------------------------------------------------------ */
#ifdef PERL_OBJECT
static SV *_ptrvalue(CPerlObj *pPerl,SV *_PTRVALUE, int index, char *type) {
#define ptrvalue(a,b,c) _ptrvalue(pPerl,a,b,c)
#else
static SV *_ptrvalue(SV *_PTRVALUE, int index, char *type) {
#define ptrvalue(a,b,c) _ptrvalue(a,b,c)
#endif
void *ptr;
SV *obj = 0;
if (SWIG_ConvertPtr(_PTRVALUE, &amp;ptr, 0) &amp;lt; 0) {
croak("Type error it ptrvalue. Argument is not a valid pointer value.");
} else {
/* If no datatype was passed, try a few common datatypes first */
if (!type) {
/* No datatype was passed. Type to figure out if it's a common one */
if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_int_p) >= 0) {
type = "int";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_double_p) >= 0) {
type = "double";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_short_p) >= 0) {
type = "short";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_long_p) >= 0) {
type = "long";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_float_p) >= 0) {
type = "float";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_char_p) >= 0) {
type = "char";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_char_pp) >= 0) {
type = "char *";
} else {
type = "unknown";
}
}
if (!ptr) {
croak("Unable to dereference NULL pointer.");
return 0;
}
/* Now we have a datatype. Try to figure out what to do about it */
if (strcmp(type,"int") == 0) {
obj = sv_newmortal();
sv_setiv(obj,(IV) *(((int *) ptr) + index));
} else if (strcmp(type,"double") == 0) {
obj = sv_newmortal();
sv_setnv(obj,(double) *(((double *) ptr)+index));
} else if (strcmp(type,"short") == 0) {
obj = sv_newmortal();
sv_setiv(obj,(IV) *(((short *) ptr) + index));
} else if (strcmp(type,"long") == 0) {
obj = sv_newmortal();
sv_setiv(obj,(IV) *(((long *) ptr) + index));
} else if (strcmp(type,"float") == 0) {
obj = sv_newmortal();
sv_setnv(obj,(double) *(((float *) ptr)+index));
} else if (strcmp(type,"char") == 0) {
obj = sv_newmortal();
sv_setpv(obj,((char *) ptr)+index);
} else if (strcmp(type,"char *") == 0) {
char *c = *(((char **) ptr)+index);
obj = sv_newmortal();
if (c)
sv_setpv(obj,c);
else
sv_setpv(obj,"NULL");
} else {
croak("Unable to dereference unsupported datatype.");
obj = 0;
}
}
return obj;
}
/*------------------------------------------------------------------
ptrcreate(type,value = 0,numelements = 1)
Attempts to create a new object of given type. Type must be
a basic C datatype. Will not create complex objects.
------------------------------------------------------------------ */
#ifdef PERL_OBJECT
static SV *_ptrcreate(CPerlObj *pPerl, char *type, SV *value, int numelements) {
#define ptrcreate(a,b,c) _ptrcreate(pPerl,a,b,c)
#else
static SV *_ptrcreate(char *type, SV *value, int numelements) {
#define ptrcreate(a,b,c) _ptrcreate(a,b,c)
#endif
void *ptr;
SV *obj;
int sz;
swig_type_info *cast = 0;
/* Check the type string against a variety of possibilities */
if (strcmp(type,"int") == 0) {
sz = sizeof(int)*numelements;
cast = SWIG_POINTER_int_p;
} else if (strcmp(type,"short") == 0) {
sz = sizeof(short)*numelements;
cast = SWIG_POINTER_short_p;
} else if (strcmp(type,"long") == 0) {
sz = sizeof(long)*numelements;
cast = SWIG_POINTER_long_p;
} else if (strcmp(type,"double") == 0) {
sz = sizeof(double)*numelements;
cast = SWIG_POINTER_double_p;
} else if (strcmp(type,"float") == 0) {
sz = sizeof(float)*numelements;
cast = SWIG_POINTER_float_p;
} else if (strcmp(type,"char") == 0) {
sz = sizeof(char)*numelements;
cast = SWIG_POINTER_char_p;
} else if (strcmp(type,"char *") == 0) {
sz = sizeof(char *)*(numelements+1);
cast = SWIG_POINTER_char_pp;
} else if (strcmp(type,"void") == 0) {
sz = numelements;
cast = SWIG_POINTER_void_p;
} else {
croak("Unable to create unknown datatype.");
return 0;
}
/* Create the new object */
ptr = (void *) malloc(sz);
if (!ptr) {
croak("Out of memory in ptrcreate.");
return 0;
}
/* Now try to set its default value */
if (value) {
if (strcmp(type,"int") == 0) {
int *ip,i,ivalue;
ivalue = (int) SvIV(value);
ip = (int *) ptr;
for (i = 0; i &amp;lt; numelements; i++)
ip[i] = ivalue;
} else if (strcmp(type,"short") == 0) {
short *ip,ivalue;
int i;
ivalue = (short) SvIV(value);
ip = (short *) ptr;
for (i = 0; i &amp;lt; numelements; i++)
ip[i] = ivalue;
} else if (strcmp(type,"long") == 0) {
long *ip,ivalue;
int i;
ivalue = (long) SvIV(value);
ip = (long *) ptr;
for (i = 0; i &amp;lt; numelements; i++)
ip[i] = ivalue;
} else if (strcmp(type,"double") == 0) {
double *ip,ivalue;
int i;
ivalue = (double) SvNV(value);
ip = (double *) ptr;
for (i = 0; i &amp;lt; numelements; i++)
ip[i] = ivalue;
} else if (strcmp(type,"float") == 0) {
float *ip,ivalue;
int i;
ivalue = (float) SvNV(value);
ip = (float *) ptr;
for (i = 0; i &amp;lt; numelements; i++)
ip[i] = ivalue;
} else if (strcmp(type,"char") == 0) {
char *ip,*ivalue;
ivalue = (char *) SvPV(value,PL_na);
ip = (char *) ptr;
strncpy(ip,ivalue,numelements-1);
} else if (strcmp(type,"char *") == 0) {
char **ip, *ivalue;
int i;
ivalue = (char *) SvPV(value,PL_na);
ip = (char **) ptr;
for (i = 0; i &amp;lt; numelements; i++) {
if (ivalue) {
ip[i] = (char *) malloc(strlen(ivalue)+1);
strcpy(ip[i],ivalue);
} else {
ip[i] = 0;
}
}
ip[numelements] = 0;
}
}
/* Create the pointer value */
obj = sv_newmortal();
SWIG_MakePtr(obj,ptr,cast);
return obj;
}
/*------------------------------------------------------------------
ptrset(ptr,value,index = 0,type = 0)
Attempts to set the value of a pointer variable. If type is
given, we will use that type. Otherwise, we'll guess the datatype.
------------------------------------------------------------------ */
#ifdef PERL_OBJECT
static void _ptrset(CPerlObj *pPerl,SV *_PTRVALUE, SV *value, int index, char *type) {
#define ptrset(a,b,c,d) _ptrset(pPerl,a,b,c,d)
#else
static void _ptrset(SV *_PTRVALUE, SV *value, int index, char *type) {
#define ptrset(a,b,c,d) _ptrset(a,b,c,d)
#endif
void *ptr;
SV *obj;
if (SWIG_ConvertPtr(_PTRVALUE, &amp;ptr, 0) &amp;lt; 0) {
croak("Type error it ptrvalue. Argument is not a valid pointer value.");
} else {
/* If no datatype was passed, try a few common datatypes first */
if (!type) {
/* No datatype was passed. Type to figure out if it's a common one */
if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_int_p) >= 0) {
type = "int";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_double_p) >= 0) {
type = "double";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_short_p) >= 0) {
type = "short";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_long_p) >= 0) {
type = "long";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_float_p) >= 0) {
type = "float";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_char_p) >= 0) {
type = "char";
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_char_pp) >= 0) {
type = "char *";
} else {
type = "unknown";
}
}
}
if (!ptr) {
croak("Unable to set NULL pointer.");
return;
}
/* Now we have a datatype. Try to figure out what to do about it */
if (strcmp(type,"int") == 0) {
*(((int *) ptr)+index) = (int) SvIV(value);
} else if (strcmp(type,"double") == 0) {
*(((double *) ptr)+index) = (double) SvNV(value);
} else if (strcmp(type,"short") == 0) {
*(((short *) ptr)+index) = (short) SvIV(value);
} else if (strcmp(type,"long") == 0) {
*(((long *) ptr)+index) = (long) SvIV(value);
} else if (strcmp(type,"float") == 0) {
*(((float *) ptr)+index) = (float) SvNV(value);
} else if (strcmp(type,"char") == 0) {
char *c = SvPV(value,PL_na);
strcpy(((char *) ptr)+index, c);
} else if (strcmp(type,"char *") == 0) {
char *c = SvPV(value,PL_na);
char **ca = (char **) ptr;
if (ca[index]) free(ca[index]);
if (strcmp(c,"NULL") == 0) {
ca[index] = 0;
} else {
ca[index] = (char *) malloc(strlen(c)+1);
strcpy(ca[index],c);
}
} else {
croak("Unable to set unsupported datatype.");
return;
}
}
/*------------------------------------------------------------------
ptradd(ptr,offset)
Adds a value to an existing pointer value. Will do a type-dependent
add for basic datatypes. For other datatypes, will do a byte-add.
------------------------------------------------------------------ */
#ifdef PERL_OBJECT
static SV *_ptradd(CPerlObj *pPerl, SV *_PTRVALUE, int offset) {
#define ptradd(a,b) _ptradd(pPerl,a,b)
#else
static SV *_ptradd(SV *_PTRVALUE, int offset) {
#define ptradd(a,b) _ptradd(a,b)
#endif
void *ptr,*junk;
SV *obj;
swig_type_info *type;
char *tname;
/* Try to handle a few common datatypes first */
if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_int_p) >= 0) {
ptr = (void *) (((int *) ptr) + offset);
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_double_p) >= 0) {
ptr = (void *) (((double *) ptr) + offset);
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_short_p) >= 0) {
ptr = (void *) (((short *) ptr) + offset);
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_long_p) >= 0) {
ptr = (void *) (((long *) ptr) + offset);
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_float_p) >= 0) {
ptr = (void *) (((float *) ptr) + offset);
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,SWIG_POINTER_char_p) >= 0) {
ptr = (void *) (((char *) ptr) + offset);
} else if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,0) >= 0) {
ptr = (void *) (((char *) ptr) + offset);
} else {
croak("Type error in ptradd. Argument is not a valid pointer value.");
return 0;
}
printf("ptradd = %x\n", ptr);
tname = HvNAME(SvSTASH(SvRV(_PTRVALUE)));
obj = sv_newmortal();
sv_setref_pv(obj,tname,ptr);
return obj;
}
/*------------------------------------------------------------------
ptrfree(ptr)
Destroys a pointer value
------------------------------------------------------------------ */
#ifdef PERL_OBJECT
void _ptrfree(CPerlObj *pPerl, SV *_PTRVALUE) {
#define ptrfree(a) _ptrfree(pPerl, a)
#else
void _ptrfree(SV *_PTRVALUE) {
#define ptrfree(a) _ptrfree(a)
#endif
void *ptr, *junk;
if (SWIG_ConvertPtr(_PTRVALUE,&amp;ptr,0) &amp;lt; 0) {
croak("Type error in ptrfree. Argument is not a valid pointer value.");
return;
}
/* Check to see if this pointer is a char ** */
if (SWIG_ConvertPtr(_PTRVALUE,&amp;junk,SWIG_POINTER_char_pp) >= 0) {
char **c = (char **) ptr;
if (c) {
int i = 0;
while (c[i]) {
free(c[i]);
i++;
}
}
}
if (ptr)
free((char *) ptr);
}
</swigxml:code>
</swig:insert>
<swig:typemap name="ptr" >
<swigxml:code >
{
$target = $source;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.SV" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="value" >
<swigxml:code >
{
$target = $source;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.SV" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="ptrcast" >
<swigxml:code >
{
$target = $source;
argvi++;
} </swigxml:code>
<swigxml:method string="out" />
<swigxml:type string="p.SV" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="ptrvalue" >
<swigxml:code >
{
$target = $source;
argvi++;
} </swigxml:code>
<swigxml:method string="out" />
<swigxml:type string="p.SV" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="ptrcreate" >
<swigxml:code >
{
$target = $source;
argvi++;
} </swigxml:code>
<swigxml:method string="out" />
<swigxml:type string="p.SV" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="ptradd" >
<swigxml:code >
{
$target = $source;
argvi++;
} </swigxml:code>
<swigxml:method string="out" />
<swigxml:type string="p.SV" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="ptrset" >
<swigxml:code >
{
if ($source == -1) return NULL;
} </swigxml:code>
<swigxml:method string="ret" />
<swigxml:type string="int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<c:function name="ptrvalue" >
<swigxml:parms >
<swigxml:parm name="ptr" >
<swigxml:type string="p.SV" />
</swigxml:parm>
<swigxml:parm name="index" >
<swigxml:value string="0" />
<swigxml:type string="int" />
</swigxml:parm>
<swigxml:parm name="type" >
<swigxml:value string="0" />
<swigxml:type string="p.char" />
</swigxml:parm>
</swigxml:parms>
<swigxml:type string="p.SV" />
</c:function>
<c:function name="ptrset" >
<swigxml:parms >
<swigxml:parm name="ptr" >
<swigxml:type string="p.SV" />
</swigxml:parm>
<swigxml:parm name="value" >
<swigxml:type string="p.SV" />
</swigxml:parm>
<swigxml:parm name="index" >
<swigxml:value string="0" />
<swigxml:type string="int" />
</swigxml:parm>
<swigxml:parm name="type" >
<swigxml:value string="0" />
<swigxml:type string="p.char" />
</swigxml:parm>
</swigxml:parms>
<swigxml:type string="void" />
</c:function>
<c:function name="ptrcreate" >
<swigxml:parms >
<swigxml:parm name="type" >
<swigxml:type string="p.char" />
</swigxml:parm>
<swigxml:parm name="value" >
<swigxml:value string="0" />
<swigxml:type string="p.SV" />
</swigxml:parm>
<swigxml:parm name="nitems" >
<swigxml:value string="1" />
<swigxml:type string="int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:type string="p.SV" />
</c:function>
<c:function name="ptrfree" >
<swigxml:parms >
<swigxml:parm name="ptr" >
<swigxml:type string="p.SV" />
</swigxml:parm>
</swigxml:parms>
<swigxml:type string="void" />
</c:function>
<c:function name="ptradd" >
<swigxml:parms >
<swigxml:parm name="ptr" >
<swigxml:type string="p.SV" />
</swigxml:parm>
<swigxml:parm name="offset" >
<swigxml:type string="int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:type string="p.SV" />
</c:function>
</swigxml:child>
<swigxml:type string="include" />
</swig:file>
</swigxml:child>
<swigxml:type string="include" />
</swig:file>
<swig:file name="../../Lib/xml/typemaps.i" >
<swigxml:child >
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="double" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (double) SvNV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.double" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="float" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (float) SvNV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.float" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (int) SvIV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="short" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (short) SvIV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="long" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (long) SvIV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (unsigned int) SvIV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.unsigned int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned short" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (unsigned short) SvIV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.unsigned short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned long" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (unsigned long) SvIV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.unsigned long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="INPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned char" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
temp = (unsigned char) SvIV($source);
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.unsigned char" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="short" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="long" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.unsigned int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned short" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;amp;amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.unsigned short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned long" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;amp;amp;amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.unsigned long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="unsigned char" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;amp;amp;amp;amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.unsigned char" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="float" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;amp;amp;amp;amp;amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.float" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:parms >
<swigxml:parm name="temp" >
<swigxml:type string="double" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
$target = &amp;amp;amp;amp;amp;amp;amp;amp;amp;temp;
} </swigxml:code>
<swigxml:method string="ignore" />
<swigxml:type string="p.double" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setiv($target,(IV) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setiv($target,(IV) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setiv($target,(IV) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setiv($target,(IV) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setiv($target,(IV) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setiv($target,(IV) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setiv($target,(IV) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned char" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setnv($target,(double) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.float" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="OUTPUT" >
<swigxml:code >
{
if (argvi >= items) {
EXTEND(sp,1);
}
$target = sv_newmortal();
sv_setnv($target,(double) *($source));
argvi++;
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.double" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.int" />
<swigxml:method string="in" />
<swigxml:type string="p.int" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.short" />
<swigxml:method string="in" />
<swigxml:type string="p.short" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.long" />
<swigxml:method string="in" />
<swigxml:type string="p.long" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned" />
<swigxml:method string="in" />
<swigxml:type string="p.unsigned" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned short" />
<swigxml:method string="in" />
<swigxml:type string="p.unsigned short" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned long" />
<swigxml:method string="in" />
<swigxml:type string="p.unsigned long" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned char" />
<swigxml:method string="in" />
<swigxml:type string="p.unsigned char" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.float" />
<swigxml:method string="in" />
<swigxml:type string="p.float" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.double" />
<swigxml:method string="in" />
<swigxml:type string="p.double" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="INPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.int" />
<swigxml:method string="argout" />
<swigxml:type string="p.int" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.short" />
<swigxml:method string="argout" />
<swigxml:type string="p.short" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.long" />
<swigxml:method string="argout" />
<swigxml:type string="p.long" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned" />
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned short" />
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned short" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned long" />
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned long" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.unsigned char" />
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned char" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.float" />
<swigxml:method string="argout" />
<swigxml:type string="p.float" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="BOTH" >
<swigxml:srctype string="p.double" />
<swigxml:method string="argout" />
<swigxml:type string="p.double" />
<swigxml:lang string="perl5" />
<swigxml:srcname string="OUTPUT" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="double" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if ((!SvNOK(tempsv)) &amp;&amp; (!SvIOK(tempsv))) {
printf("Received %d\n", SvTYPE(tempsv));
croak("Expected a double reference.");
}
dvalue = SvNV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.double" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="float" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if ((!SvNOK(tempsv)) &amp;&amp; (!SvIOK(tempsv))) {
croak("expected a double reference");
}
dvalue = (float) SvNV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.float" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if (!SvIOK(tempsv)) {
croak("expected a integer reference");
}
dvalue = SvIV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="short" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if (!SvIOK(tempsv)) {
croak("expected a integer reference");
}
dvalue = (short) SvIV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="long" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if (!SvIOK(tempsv)) {
croak("expected a integer reference");
}
dvalue = (long) SvIV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="unsigned int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if (!SvIOK(tempsv)) {
croak("expected a integer reference");
}
dvalue = (unsigned int) SvIV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.unsigned int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="unsigned short" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if (!SvIOK(tempsv)) {
croak("expected a integer reference");
}
dvalue = (unsigned short) SvIV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.unsigned short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:parms >
<swigxml:parm name="dvalue" >
<swigxml:type string="unsigned long" />
</swigxml:parm>
</swigxml:parms>
<swigxml:code >
{
SV *tempsv;
if (!SvROK($source)) {
croak("expected a reference");
}
tempsv = SvRV($source);
if (!SvIOK(tempsv)) {
croak("expected a integer reference");
}
dvalue = (unsigned long) SvIV(tempsv);
$target = &amp;dvalue;
} </swigxml:code>
<swigxml:method string="in" />
<swigxml:type string="p.unsigned long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setnv(tempsv, (double) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.double" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setnv(tempsv, (double) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.float" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setiv(tempsv, (int) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setiv(tempsv, (int) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setiv(tempsv, (int) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.long" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setiv(tempsv, (int) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned int" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setiv(tempsv, (int) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned short" />
<swigxml:lang string="perl5" />
</swig:typemap>
<swig:typemap name="REFERENCE" >
<swigxml:code >
{
SV *tempsv;
tempsv = SvRV($arg);
sv_setiv(tempsv, (int) *$source);
} </swigxml:code>
<swigxml:method string="argout" />
<swigxml:type string="p.unsigned long" />
<swigxml:lang string="perl5" />
</swig:typemap>
</swigxml:child>
<swigxml:type string="include" />
</swig:file>
<c:function name="sub" >
<swigxml:parms >
<swigxml:parm name="INPUT" >
<swigxml:type string="p.int" />
</swigxml:parm>
<swigxml:parm name="INPUT" >
<swigxml:type string="p.int" />
</swigxml:parm>
<swigxml:parm name="OUTPUT" >
<swigxml:type string="p.int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:storage string="extern" />
<swigxml:type string="void" />
</c:function>
<swig:apply name="OUTPUT" >
<swigxml:parms >
<swigxml:none name="r" >
<swigxml:type string="p.int" />
</swigxml:none>
</swigxml:parms>
<swigxml:type string="p.int" />
</swig:apply>
<c:function name="divide" >
<swigxml:parms >
<swigxml:parm name="n" >
<swigxml:type string="int" />
</swigxml:parm>
<swigxml:parm name="d" >
<swigxml:type string="int" />
</swigxml:parm>
<swigxml:parm name="r" >
<swigxml:type string="p.int" />
</swigxml:parm>
</swigxml:parms>
<swigxml:storage string="extern" />
<swigxml:type string="int" />
</c:function>
</swigxml:child>
<swigxml:type string="include" />
</swig:file>
</swigxml:child>
</swig:top>
</swigxml:swig>