The great merge
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4141 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
5fcae5eb66
commit
12a43edc2d
1508 changed files with 125983 additions and 44037 deletions
|
|
@ -1,673 +1,343 @@
|
|||
/*
|
||||
--------------------------------------------------
|
||||
argout typemaps
|
||||
convert arguments from C to Scheme
|
||||
--------------------------------------------------
|
||||
*/
|
||||
/* typemaps.i --- mzscheme typemaps -*- c -*-
|
||||
Copyright 2000, 2001 Matthias Koeppe <mkoeppe@mail.math.uni-magdeburg.de>
|
||||
Based on code written by Oleg Tolmatcev.
|
||||
|
||||
%{
|
||||
#define MAXVALUES 6
|
||||
%}
|
||||
$Id$
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, argout)
|
||||
int *M_OUTPUT,
|
||||
unsigned int *M_OUTPUT,
|
||||
short *M_OUTPUT,
|
||||
unsigned short *M_OUTPUT
|
||||
/* The MzScheme module handles all types uniformly via typemaps. Here
|
||||
are the definitions. */
|
||||
|
||||
/* Pointers */
|
||||
|
||||
%typemap(in) SWIGTYPE * {
|
||||
$1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum);
|
||||
}
|
||||
|
||||
%typemap(in) void * {
|
||||
$1 = SWIG_MustGetPtr($input, NULL, $argnum);
|
||||
}
|
||||
|
||||
%typemap(varin) SWIGTYPE * {
|
||||
$1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, 1);
|
||||
}
|
||||
|
||||
%typemap(varin) void * {
|
||||
$1 = SWIG_MustGetPtr($input, NULL, 1);
|
||||
}
|
||||
|
||||
%typemap(out) SWIGTYPE * {
|
||||
$result = SWIG_MakePtr ($1, $descriptor);
|
||||
}
|
||||
|
||||
%typemap(out) SWIGTYPE *DYNAMIC {
|
||||
swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,(void **) &$1);
|
||||
$result = SWIG_MakePtr ($1, ty);
|
||||
}
|
||||
|
||||
%typemap(varout) SWIGTYPE * {
|
||||
$result = SWIG_MakePtr ($1, $descriptor);
|
||||
}
|
||||
|
||||
/* C++ References */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
%typemap(in) SWIGTYPE &, const SWIGTYPE & {
|
||||
$1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum);
|
||||
if ($1 == NULL) scheme_signal_error("swig-type-error (null reference)");
|
||||
}
|
||||
|
||||
%typemap(out) SWIGTYPE &, const SWIGTYPE & {
|
||||
$result = SWIG_MakePtr ($1, $descriptor);
|
||||
}
|
||||
|
||||
%typemap(out) SWIGTYPE &DYNAMIC {
|
||||
swig_type_info *ty = SWIG_TypeDynamicCast($1_descriptor,(void **) &$1);
|
||||
$result = SWIG_MakePtr ($1, ty);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
%typemap(out) SWIGTYPE
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
Scheme_Object *s;
|
||||
s = scheme_make_integer(*$target);
|
||||
m_output_helper(_values, s, &_lenv);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, argout)
|
||||
long *M_OUTPUT
|
||||
$&1_ltype resultptr;
|
||||
resultptr = new $1_ltype(($1_ltype &) $1);
|
||||
$result = SWIG_MakePtr (resultptr, $&1_descriptor);
|
||||
}
|
||||
#else
|
||||
{
|
||||
Scheme_Object *s;
|
||||
s = scheme_make_integer_value(*$target);
|
||||
m_output_helper(_values, s, &_lenv);
|
||||
$&1_ltype resultptr;
|
||||
resultptr = ($&1_ltype) malloc(sizeof($1_type));
|
||||
memmove(resultptr, &$1, sizeof($1_type));
|
||||
$result = SWIG_MakePtr(resultptr, $&1_descriptor);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Arrays */
|
||||
|
||||
%typemap(in) SWIGTYPE[] {
|
||||
$1 = ($ltype) SWIG_MustGetPtr($input, $descriptor, $argnum);
|
||||
}
|
||||
|
||||
%typemap(out) SWIGTYPE[] {
|
||||
$result = SWIG_MakePtr ($1, $descriptor);
|
||||
}
|
||||
|
||||
/* Enums */
|
||||
%typemap(in) enum SWIGTYPE {
|
||||
if (!SCHEME_INTP($input))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$1 = SCHEME_INT_VAL($input);
|
||||
}
|
||||
|
||||
%typemap(varin) enum SWIGTYPE {
|
||||
if (!SCHEME_INTP($input))
|
||||
scheme_wrong_type("$name", "integer", 1, argc, argv);
|
||||
$1 = ($1_type) SCHEME_INT_VAL($input);
|
||||
}
|
||||
|
||||
%typemap(out) enum SWIGTYPE "$result = scheme_make_integer_value($1);";
|
||||
%typemap(varout) enum SWIGTYPE "$result = scheme_make_integer_value($1);";
|
||||
|
||||
|
||||
/* Pass-by-value */
|
||||
|
||||
%typemap(in) SWIGTYPE($&1_ltype argp) {
|
||||
argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, $argnum);
|
||||
$1 = *argp;
|
||||
}
|
||||
|
||||
%typemap(varin) SWIGTYPE {
|
||||
$&1_ltype argp;
|
||||
argp = ($&1_ltype) SWIG_MustGetPtr($input, $&1_descriptor, 1);
|
||||
$1 = *argp;
|
||||
}
|
||||
|
||||
|
||||
%typemap(mzscheme, argout)
|
||||
unsigned long *M_OUTPUT
|
||||
%typemap(out) SWIGTYPE
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
Scheme_Object *s;
|
||||
s = scheme_make_integer_value_from_unsigned(*$target);
|
||||
m_output_helper(_values, s, &_lenv);
|
||||
}
|
||||
|
||||
|
||||
%typemap(mzscheme, argout)
|
||||
char *M_OUTPUT,
|
||||
unsigned char *M_OUTPUT
|
||||
$&1_ltype resultptr;
|
||||
resultptr = new $1_ltype(($1_ltype &) $1);
|
||||
$result = SWIG_MakePtr (resultptr, $&1_descriptor);
|
||||
}
|
||||
#else
|
||||
{
|
||||
Scheme_Object *s;
|
||||
s = scheme_make_string_without_copying(*$target);
|
||||
m_output_helper(_values, s, &_lenv);
|
||||
$&1_ltype resultptr;
|
||||
resultptr = ($&1_ltype) malloc(sizeof($1_type));
|
||||
memmove(resultptr, &$1, sizeof($1_type));
|
||||
$result = SWIG_MakePtr(resultptr, $&1_descriptor);
|
||||
}
|
||||
#endif
|
||||
|
||||
%typemap(mzscheme, argout)
|
||||
float *M_OUTPUT,
|
||||
double *M_OUTPUT
|
||||
%typemap(varout) SWIGTYPE
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
$&1_ltype resultptr;
|
||||
resultptr = new $1_ltype(($1_ltype &) $1);
|
||||
$result = SWIG_MakePtr (resultptr, $&1_descriptor);
|
||||
}
|
||||
#else
|
||||
{
|
||||
$&1_ltype resultptr;
|
||||
resultptr = ($&1_ltype) malloc(sizeof($1_type));
|
||||
memmove(resultptr, &$1, sizeof($1_type));
|
||||
$result = SWIG_MakePtr(resultptr, $&1_descriptor);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* The SIMPLE_MAP macro below defines the whole set of typemaps needed
|
||||
for simple types. */
|
||||
|
||||
%define SIMPLE_MAP(C_NAME, MZ_PREDICATE, MZ_TO_C, C_TO_MZ, MZ_NAME)
|
||||
%typemap(in) C_NAME {
|
||||
if (!MZ_PREDICATE($input))
|
||||
scheme_wrong_type("$name", #MZ_NAME, $argnum, argc, argv);
|
||||
$1 = MZ_TO_C($input);
|
||||
}
|
||||
%typemap(varin) C_NAME {
|
||||
if (!MZ_PREDICATE($input))
|
||||
scheme_wrong_type("$name", #MZ_NAME, 1, argc, argv);
|
||||
$1 = MZ_TO_C($input);
|
||||
}
|
||||
%typemap(out) C_NAME {
|
||||
$result = C_TO_MZ($1);
|
||||
}
|
||||
%typemap(varout) C_NAME {
|
||||
$result = C_TO_MZ($1);
|
||||
}
|
||||
%typemap(in) C_NAME *INPUT (C_NAME temp) {
|
||||
temp = (C_NAME) MZ_TO_C($input);
|
||||
$1 = &temp;
|
||||
}
|
||||
%typemap(in,numinputs=0) C_NAME *OUTPUT (C_NAME temp) {
|
||||
$1 = &temp;
|
||||
}
|
||||
%typemap(argout) C_NAME *OUTPUT {
|
||||
Scheme_Object *s;
|
||||
s = scheme_make_double(*$target);
|
||||
m_output_helper(_values, s, &_lenv);
|
||||
s = C_TO_MZ(*$1);
|
||||
SWIG_APPEND_VALUE(s);
|
||||
}
|
||||
%typemap(in) C_NAME *BOTH = C_NAME *INPUT;
|
||||
%typemap(argout) C_NAME *BOTH = C_NAME *OUTPUT;
|
||||
%typemap(in) C_NAME *INOUT = C_NAME *INPUT;
|
||||
%typemap(argout) C_NAME *INOUT = C_NAME *OUTPUT;
|
||||
%enddef
|
||||
|
||||
SIMPLE_MAP(bool, SCHEME_BOOLP, SCHEME_TRUEP,
|
||||
swig_make_boolean, boolean);
|
||||
SIMPLE_MAP(char, SCHEME_CHARP, SCHEME_CHAR_VAL,
|
||||
scheme_make_character, character);
|
||||
SIMPLE_MAP(unsigned char, SCHEME_CHARP, SCHEME_CHAR_VAL,
|
||||
scheme_make_character, character);
|
||||
SIMPLE_MAP(int, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value, integer);
|
||||
SIMPLE_MAP(short, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value, integer);
|
||||
SIMPLE_MAP(long, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value, integer);
|
||||
SIMPLE_MAP(ptrdiff_t, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value, integer);
|
||||
SIMPLE_MAP(unsigned int, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value_from_unsigned, integer);
|
||||
SIMPLE_MAP(unsigned short, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value_from_unsigned, integer);
|
||||
SIMPLE_MAP(unsigned long, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value_from_unsigned, integer);
|
||||
SIMPLE_MAP(size_t, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value_from_unsigned, integer);
|
||||
SIMPLE_MAP(float, SCHEME_REALP, scheme_real_to_double,
|
||||
scheme_make_double, real);
|
||||
SIMPLE_MAP(double, SCHEME_REALP, scheme_real_to_double,
|
||||
scheme_make_double, real);
|
||||
SIMPLE_MAP(char *, SCHEME_STRINGP, SCHEME_STR_VAL,
|
||||
scheme_make_string_without_copying, string);
|
||||
SIMPLE_MAP(const char *, SCHEME_STRINGP, SCHEME_STR_VAL,
|
||||
scheme_make_string_without_copying, string);
|
||||
|
||||
|
||||
/* Const primitive references. Passed by value */
|
||||
|
||||
%define REF_MAP(C_NAME, MZ_PREDICATE, MZ_TO_C, C_TO_MZ, MZ_NAME)
|
||||
%typemap(in) const C_NAME & (C_NAME temp) {
|
||||
if (!MZ_PREDICATE($input))
|
||||
scheme_wrong_type("$name", #MZ_NAME, $argnum, argc, argv);
|
||||
temp = MZ_TO_C($input);
|
||||
$1 = &temp;
|
||||
}
|
||||
%typemap(out) const C_NAME & {
|
||||
$result = C_TO_MZ(*$1);
|
||||
}
|
||||
%enddef
|
||||
|
||||
REF_MAP(bool, SCHEME_BOOLP, SCHEME_TRUEP,
|
||||
swig_make_boolean, boolean);
|
||||
REF_MAP(char, SCHEME_CHARP, SCHEME_CHAR_VAL,
|
||||
scheme_make_character, character);
|
||||
REF_MAP(unsigned char, SCHEME_CHARP, SCHEME_CHAR_VAL,
|
||||
scheme_make_character, character);
|
||||
REF_MAP(int, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value, integer);
|
||||
REF_MAP(short, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value, integer);
|
||||
REF_MAP(long, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value, integer);
|
||||
REF_MAP(unsigned int, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value_from_unsigned, integer);
|
||||
REF_MAP(unsigned short, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value_from_unsigned, integer);
|
||||
REF_MAP(unsigned long, SCHEME_INTP, SCHEME_INT_VAL,
|
||||
scheme_make_integer_value_from_unsigned, integer);
|
||||
REF_MAP(float, SCHEME_REALP, scheme_real_to_double,
|
||||
scheme_make_double, real);
|
||||
REF_MAP(double, SCHEME_REALP, scheme_real_to_double,
|
||||
scheme_make_double, real);
|
||||
|
||||
/* Void */
|
||||
|
||||
%typemap(out) void "$result = scheme_void;";
|
||||
|
||||
/* Pass through Scheme_Object * */
|
||||
|
||||
%typemap (in) Scheme_Object * "$1=$input;";
|
||||
%typemap (out) Scheme_Object * "$result=$1;";
|
||||
|
||||
/* ------------------------------------------------------------
|
||||
* String & length
|
||||
* ------------------------------------------------------------ */
|
||||
|
||||
//%typemap(in) (char *STRING, int LENGTH) {
|
||||
// int temp;
|
||||
// $1 = ($1_ltype) gh_scm2newstr($input, &temp);
|
||||
// $2 = ($2_ltype) temp;
|
||||
//}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------
|
||||
* Typechecking rules
|
||||
* ------------------------------------------------------------ */
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_INTEGER)
|
||||
int, short, long,
|
||||
unsigned int, unsigned short, unsigned long,
|
||||
signed char, unsigned char,
|
||||
long long, unsigned long long,
|
||||
const int &, const short &, const long &,
|
||||
const unsigned int &, const unsigned short &, const unsigned long &,
|
||||
const long long &, const unsigned long long &,
|
||||
enum SWIGTYPE
|
||||
{
|
||||
$1 = (SCHEME_INTP($input)) ? 1 : 0;
|
||||
}
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_BOOL) bool &, const bool &
|
||||
{
|
||||
$1 = (SCHEME_BOOLP($input)) ? 1 : 0;
|
||||
}
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_DOUBLE)
|
||||
float, double,
|
||||
const float &, const double &
|
||||
{
|
||||
$1 = (SCHEME_REALP($input)) ? 1 : 0;
|
||||
}
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_STRING) char {
|
||||
$1 = (SCHEME_STRINGP($input)) ? 1 : 0;
|
||||
}
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_STRING) char * {
|
||||
$1 = (SCHEME_STRINGP($input)) ? 1 : 0;
|
||||
}
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] {
|
||||
void *ptr;
|
||||
if (SWIG_GetPtr($input, (void **) &ptr, $1_descriptor)) {
|
||||
$1 = 0;
|
||||
} else {
|
||||
$1 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE {
|
||||
void *ptr;
|
||||
if (SWIG_GetPtr($input, (void **) &ptr, $&1_descriptor)) {
|
||||
$1 = 0;
|
||||
} else {
|
||||
$1 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
%{
|
||||
void m_output_helper(Scheme_Object **target, Scheme_Object *s, int *_lenv) {
|
||||
target[*_lenv] = s;
|
||||
(*_lenv)++;
|
||||
%typecheck(SWIG_TYPECHECK_VOIDPTR) void * {
|
||||
void *ptr;
|
||||
if (SWIG_GetPtr($input, (void **) &ptr, 0)) {
|
||||
$1 = 0;
|
||||
} else {
|
||||
$1 = 1;
|
||||
}
|
||||
}
|
||||
%}
|
||||
|
||||
/*
|
||||
-------------------------------------------------
|
||||
Check the type of the MzScheme arguments and
|
||||
convert function arguments from a MzScheme to a C
|
||||
representation.
|
||||
-------------------------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, in) char {
|
||||
if(!SCHEME_CHARP($source))
|
||||
scheme_wrong_type("$name", "character", $argnum, argc, argv);
|
||||
$target = SCHEME_CHAR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) unsigned char {
|
||||
if(!SCHEME_CHARP($source))
|
||||
scheme_wrong_type("$name", "character", $argnum, argc, argv);
|
||||
$target = SCHEME_CHAR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) char * {
|
||||
if(!SCHEME_STRINGP($source))
|
||||
scheme_wrong_type("$name", "string", $argnum, argc, argv);
|
||||
$target = SCHEME_STR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) char [ANY] {
|
||||
if(!SCHEME_STRINGP($source))
|
||||
scheme_wrong_type("$name", "string", $argnum, argc, argv);
|
||||
$target = SCHEME_STR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) int {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) long {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &$target);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) short {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) unsigned int {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) unsigned long {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_unsigned_int_val($source, &$target);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) unsigned short {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, in) long long {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &$target);
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, in) float {
|
||||
if(!SCHEME_DBLP($source))
|
||||
scheme_wrong_type("$name", "double", $argnum, argc, argv);
|
||||
$target = SCHEME_DBL_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) double {
|
||||
if(SCHEME_DBLP($source))
|
||||
$target = SCHEME_DBL_VAL($source);
|
||||
else if(SCHEME_REALP($source))
|
||||
$target = scheme_real_to_double($source);
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, in) long double {
|
||||
if(SCHEME_DBLP($source))
|
||||
$target = SCHEME_DBL_VAL($source);
|
||||
else if(SCHEME_REALP($source))
|
||||
$target = scheme_real_to_double($source);
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
in typemaps for pass-by-reference
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, in) unsigned char *(unsigned char temp) {
|
||||
if(!SCHEME_CHARP($source))
|
||||
scheme_wrong_type("$name", "character", $argnum, argc, argv);
|
||||
temp = SCHEME_STR_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) int *(int temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (int)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) long *(long temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &temp);
|
||||
$target = &temp;
|
||||
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) short *(short temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (short)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) unsigned int *(unsigned temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (unsigned)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) unsigned long *(unsigned long temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_unsigned_int_val($source, &temp);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) unsigned short *(unsigned short temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (unsigned short)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, in) long long *(long long temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &temp);
|
||||
$target = &temp;
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, in) float *(float temp) {
|
||||
if(!SCHEME_DBLP($source))
|
||||
scheme_wrong_type("$name", "double", $argnum, argc, argv);
|
||||
temp = (float)SCHEME_DBL_VAL($source);
|
||||
$target = &temp;
|
||||
|
||||
}
|
||||
|
||||
%typemap(mzscheme, in) double *(double temp) {
|
||||
if(SCHEME_DBLP($source)) {
|
||||
temp = (double)SCHEME_DBL_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else if(SCHEME_REALP($source)) {
|
||||
temp = (double)scheme_real_to_double($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, in) long double *(long double temp) {
|
||||
if(SCHEME_DBLP($source)) {
|
||||
temp = (long double)SCHEME_DBL_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else if(SCHEME_REALP($source)) {
|
||||
temp = (long double)scheme_real_to_double($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
convert return type from C to Scheme
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, out) char {
|
||||
$target = scheme_make_character($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) unsigned char {
|
||||
$target = scheme_make_character($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) char * {
|
||||
$target = scheme_make_string_without_copying($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) char [ANY] {
|
||||
$target = scheme_make_string_without_copying($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) int {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) long {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) short {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, out) long long {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, out) unsigned int {
|
||||
$target = scheme_make_integer_value_from_unsigned($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) unsigned long {
|
||||
$target = scheme_make_integer_value_from_unsigned($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) unsigned short {
|
||||
$target = scheme_make_integer_value_from_unsigned($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) float {
|
||||
$target = scheme_make_double($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) double {
|
||||
$target = scheme_make_double($source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, out) long double {
|
||||
$target = scheme_make_double($source);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
-----------------------------------
|
||||
convert pointers from C to MzScheme
|
||||
-----------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, out) int * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) long * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) short * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
|
||||
/*
|
||||
%typemap(mzscheme, out) long long * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, out) unsigned int * {
|
||||
$target = scheme_make_integer_value_from_unsigned(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) unsigned long * {
|
||||
$target = scheme_make_integer_value_from_unsigned(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) unsigned short * {
|
||||
$target = scheme_make_integer_value_from_unsigned(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) float * {
|
||||
$target = scheme_make_double(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, out) double * {
|
||||
$target = scheme_make_double(*$source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, out) long double * {
|
||||
$target = scheme_make_double(*$source);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
------------------------------------------------------------
|
||||
Typemaps for accessing a global C variable from MzScheme
|
||||
------------------------------------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, varin) char {
|
||||
if(!SCHEME_CHARP($source))
|
||||
scheme_wrong_type("$name", "character", $argnum, argc, argv);
|
||||
$target = SCHEME_CHAR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) unsigned char {
|
||||
if(!SCHEME_CHARP($source))
|
||||
scheme_wrong_type("$name", "character", $argnum, argc, argv);
|
||||
$target = SCHEME_CHAR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) char * {
|
||||
if(!SCHEME_STRINGP($source))
|
||||
scheme_wrong_type("$name", "string", $argnum, argc, argv);
|
||||
$target = SCHEME_STR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) char [ANY] {
|
||||
if(!SCHEME_STRINGP($source))
|
||||
scheme_wrong_type("$name", "string", $argnum, argc, argv);
|
||||
$target = SCHEME_STR_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) int {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) long {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &$target);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) short {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) unsigned int {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) unsigned long {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_unsigned_int_val($source, &$target);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) unsigned short {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
$target = SCHEME_INT_VAL($source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, varin) long long {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &$target);
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, varin) float {
|
||||
if(!SCHEME_DBLP($source))
|
||||
scheme_wrong_type("$name", "double", $argnum, argc, argv);
|
||||
$target = SCHEME_DBL_VAL($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) double {
|
||||
if(SCHEME_DBLP($source))
|
||||
$target = SCHEME_DBL_VAL($source);
|
||||
else if(SCHEME_REALP($source))
|
||||
$target = scheme_real_to_double($source);
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, varin) long double {
|
||||
if(SCHEME_DBLP($source))
|
||||
$target = SCHEME_DBL_VAL($source);
|
||||
else if(SCHEME_REALP($source))
|
||||
$target = scheme_real_to_double($source);
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
global pointer variable
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, varin) unsigned char *(unsigned char temp) {
|
||||
if(!SCHEME_CHARP($source))
|
||||
scheme_wrong_type("$name", "character", $argnum, argc, argv);
|
||||
temp = SCHEME_STR_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) int *(int temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (int)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) long *(long temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &temp);
|
||||
$target = &temp;
|
||||
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) short *(short temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (short)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) unsigned int *(unsigned temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (unsigned)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) unsigned long *(unsigned long temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_unsigned_int_val($source, &temp);
|
||||
$target = &temp;
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) unsigned short *(unsigned short temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
temp = (unsigned short)SCHEME_INT_VAL($source);
|
||||
$target = &temp;
|
||||
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, varin) long long *(long long temp) {
|
||||
if(!SCHEME_INTP($source))
|
||||
scheme_wrong_type("$name", "integer", $argnum, argc, argv);
|
||||
scheme_get_int_val($source, &temp);
|
||||
$target = &temp;
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, varin) float *(float temp) {
|
||||
if(!SCHEME_DBLP($source))
|
||||
scheme_wrong_type("$name", "double", $argnum, argc, argv);
|
||||
temp = (float)SCHEME_DBL_VAL($source);
|
||||
$target = &temp;
|
||||
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varin) double *(double temp) {
|
||||
if(SCHEME_DBLP($source)) {
|
||||
temp = (double)SCHEME_DBL_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else if(SCHEME_REALP($source)) {
|
||||
temp = (double)scheme_real_to_double($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, varin) long double *(long double temp) {
|
||||
if(SCHEME_DBLP($source)) {
|
||||
temp = (long double)SCHEME_DBL_VAL($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else if(SCHEME_REALP($source)) {
|
||||
temp = (long double)scheme_real_to_double($source);
|
||||
$target = &temp;
|
||||
}
|
||||
else scheme_wrong_type("$name", "real", $argnum, argc, argv);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
-----------------------------------
|
||||
convert a variable from C to Scheme
|
||||
-----------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, varout) char {
|
||||
$target = scheme_make_character($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) unsigned char {
|
||||
$target = scheme_make_character($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) char * {
|
||||
$target = scheme_make_string_without_copying($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) char [ANY] {
|
||||
$target = scheme_make_string_without_copying($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) int {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) long {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) short {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, varout) long long {
|
||||
$target = scheme_make_integer_value($source);
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, varout) unsigned int {
|
||||
$target = scheme_make_integer_value_from_unsigned($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) unsigned long {
|
||||
$target = scheme_make_integer_value_from_unsigned($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) unsigned short {
|
||||
$target = scheme_make_integer_value_from_unsigned($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) float {
|
||||
$target = scheme_make_double($source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) double {
|
||||
$target = scheme_make_double($source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, varout) long double {
|
||||
$target = scheme_make_double($source);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
-----------------------------------
|
||||
convert a pointer variable from C to MzScheme
|
||||
-----------------------------------
|
||||
*/
|
||||
|
||||
%typemap(mzscheme, varout) int * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) long * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) short * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
|
||||
/*
|
||||
%typemap(mzscheme, varout) long long * {
|
||||
$target = scheme_make_integer_value(*$source);
|
||||
}
|
||||
*/
|
||||
%typemap(mzscheme, varout) unsigned int * {
|
||||
$target = scheme_make_integer_value_from_unsigned(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) unsigned long * {
|
||||
$target = scheme_make_integer_value_from_unsigned(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) unsigned short * {
|
||||
$target = scheme_make_integer_value_from_unsigned(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) float * {
|
||||
$target = scheme_make_double(*$source);
|
||||
}
|
||||
|
||||
%typemap(mzscheme, varout) double * {
|
||||
$target = scheme_make_double(*$source);
|
||||
}
|
||||
/*
|
||||
%typemap(mzscheme, varout) long double * {
|
||||
$target = scheme_make_double(*$source);
|
||||
}
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue