diff options
Diffstat (limited to 'devtools/swigwin-1.3.34/Lib/pike')
| -rw-r--r-- | devtools/swigwin-1.3.34/Lib/pike/pike.swg | 317 | ||||
| -rw-r--r-- | devtools/swigwin-1.3.34/Lib/pike/pikekw.swg | 55 | ||||
| -rw-r--r-- | devtools/swigwin-1.3.34/Lib/pike/pikerun.swg | 73 | ||||
| -rw-r--r-- | devtools/swigwin-1.3.34/Lib/pike/std_string.i | 63 |
4 files changed, 508 insertions, 0 deletions
diff --git a/devtools/swigwin-1.3.34/Lib/pike/pike.swg b/devtools/swigwin-1.3.34/Lib/pike/pike.swg new file mode 100644 index 0000000..483ba76 --- /dev/null +++ b/devtools/swigwin-1.3.34/Lib/pike/pike.swg @@ -0,0 +1,317 @@ +/* ----------------------------------------------------------------------------- + * 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. + * + * pike.swg + * + * Pike configuration module. + * ----------------------------------------------------------------------------- */ + +%insert(runtime) "swigrun.swg"; // Common C API type-checking code +%insert(runtime) "pikerun.swg"; // Pike run-time code + +%insert(runtime) %{ +#ifdef __cplusplus +extern "C" { +#endif +#include <global.h> +#include <module.h> +#include <interpret.h> +#ifdef __cplusplus +} +#endif +%} + +/* ----------------------------------------------------------------------------- + * standard typemaps + * ----------------------------------------------------------------------------- */ + +/* --- Input arguments --- */ + +/* Primitive datatypes. */ + +%typemap(in, pikedesc="tInt") + int, unsigned int, short, unsigned short, + long, unsigned long, char, signed char, unsigned char, + bool, enum SWIGTYPE, long long, unsigned long long +{ + if ($input.type != T_INT) + Pike_error("Bad argument: Expected an integer.\n"); + $1 = ($1_ltype) $input.u.integer; +} + +%typemap(in, pikedesc="tFloat") float, double { + if ($input.type != T_FLOAT) + Pike_error("Bad argument: Expected a float.\n"); + $1 = ($1_ltype) $input.u.float_number; +} + +%typemap(in, pikedesc="tStr") char *, char [ANY] { + if ($input.type != T_STRING) + Pike_error("Bad argument: Expected a string.\n"); + $1 = ($1_ltype) STR0($input.u.string); +} + +/* Pointers, references and arrays */ + +%typemap(in) SWIGTYPE *, + SWIGTYPE &, + SWIGTYPE [] + "SWIG_ConvertPtr($input.u.object, (void **) &$1, $1_descriptor, 1);" + +/* Void pointer. Accepts any kind of pointer */ +%typemap(in) void * "/* FIXME */"; + +/* Object passed by value. Convert to a pointer */ +%typemap(in) SWIGTYPE ($&1_ltype argp) "/* FIXME */"; + +/* Pointer to a class member */ +%typemap(in) SWIGTYPE (CLASS::*) "/* FIXME */"; + +/* Const primitive references. Passed by value */ + +%typemap(in, pikedesc="tInt") const int & (int temp), + const short & (short temp), + const long & (long temp), + const unsigned int & (unsigned int temp), + const unsigned short & (unsigned short temp), + const unsigned long & (unsigned long temp), + const char & (char temp), + const signed char & (signed char temp), + const unsigned char & (unsigned char temp), + const bool & (bool temp), + const long long & ($*1_ltype temp), + const unsigned long long & ($*1_ltype temp), + const enum SWIGTYPE & ($*1_ltype temp) +{ + if ($input.type != T_INT) + Pike_error("Bad argument: Expected an integer.\n"); + temp = ($*1_ltype) $input.u.integer; + $1 = &temp; +} + +%typemap(in, pikedesc="tFloat") const float & (float temp), + const double & (double temp) +{ + if ($input.type != T_FLOAT) + Pike_error("Bad argument: Expected a float.\n"); + temp = ($*1_ltype) $input.u.float_number; + $1 = &temp; +} + +/* ----------------------------------------------------------------------------- + * Output Typemaps + * ----------------------------------------------------------------------------- */ +%typemap(out, pikedesc="tInt") + int, unsigned int, + short, unsigned short, + long, unsigned long, + char, signed char, unsigned char, + bool, enum SWIGTYPE + "push_int($1);"; + +%typemap(out, pikedesc="tInt") long long "push_int64($1);"; +%typemap(out, pikedesc="tInt") unsigned long long "push_int64($1);"; +%typemap(out, pikedesc="tFloat") float, double "push_float($1);"; +%typemap(out, pikedesc="tStr") char * "push_text($1);"; + +/* Pointers, references, and arrays */ +%typemap(out, pikedesc="tObj") SWIGTYPE*, SWIGTYPE &, SWIGTYPE [] "push_object(SWIG_NewPointerObj((void *) $1, $1_descriptor, $owner));"; + +/* Void return value; don't push anything */ +%typemap(out, pikedesc="tVoid") void ""; + +/* Dynamic casts */ + +%typemap(out) SWIGTYPE *DYNAMIC, SWIGTYPE &DYNAMIC "/* FIXME */"; + +/* Member pointer */ +%typemap(out) SWIGTYPE (CLASS::*) "/* FIXME */"; + +/* Special typemap for character array return values */ +%typemap(out, pikedesc="tStr") char [ANY], const char [ANY] "push_text($1);"; + +/* Primitive types--return by value */ +%typemap(out, pikedesc="tObj") SWIGTYPE +#ifdef __cplusplus +{ + $&1_ltype resultptr; + resultptr = new $1_ltype(($1_ltype &) $1); + push_object(SWIG_NewPointerObj((void *) resultptr, $&1_descriptor, 1)); +} +#else +{ + $&1_ltype resultptr; + resultptr = ($&1_ltype) malloc(sizeof($1_type)); + memmove(resultptr, &$1, sizeof($1_type)); + push_object(SWIG_NewPointerObj((void *) resultptr, $&1_descriptor, 1)); +} +#endif + +/* References to primitive types. Return by value */ + +%typemap(out, pikedesc="tInt") const int &, const unsigned int &, + const short &, const unsigned short &, + const long &, const unsigned long &, + const char &, const signed char &, const unsigned char &, + const bool &, + const long long &, const unsigned long long &, + const enum SWIGTYPE & ($*1_ltype temp) + "push_int(*($1));"; + +%typemap(out, pikedesc="tFloat") const float &, const double & "push_float(*($1));"; + +/************************ Constant Typemaps *****************************/ + +%typemap(constant) + int, unsigned int, + short, unsigned short, + long, unsigned long, + signed char, unsigned char, + bool, enum SWIGTYPE, + long long, unsigned long long + "add_integer_constant(\"$symname\", $1, 0);"; + +%typemap(constant) char + "add_integer_constant(\"$symname\", '$1', 0);"; + +%typemap(constant) long long, unsigned long long + "add_integer_constant(\"$symname\", $1, 0);"; + +%typemap(constant) float, double + "add_float_constant(\"$symname\", $1, 0);"; + +%typemap(constant) char * + "add_string_constant(\"$symname\", \"$1\", 0);"; + +/* ------------------------------------------------------------ + * String & length + * ------------------------------------------------------------ */ + +%typemap(in, pikedesc="tStr") (char *STRING, int LENGTH) { + if ($input.type != T_STRING) + Pike_error("Bad argument: Expected a string.\n"); + $1 = ($1_ltype) STR0($input.u.string); + $2 = ($2_ltype) $input.u.string->length; +} + +/* ------------------------------------------------------------ + * ANSI C typemaps + * ------------------------------------------------------------ */ + +%typemap(in, pikedesc="tInt") size_t { + if ($input.type != T_INT) + Pike_error("Bad argument: Expected an integer.\n"); + $1 = ($1_ltype) $input.u.integer; +} + +%typemap(out) size_t = long; + +/* ------------------------------------------------------------ + * 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, enum SWIGTYPE &, + bool, const bool & +{ + $1 = ($input.type == T_INT) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_DOUBLE) + float, double, + const float &, const double & +{ + $1 = (($input.type == T_FLOAT) || ($input.type == T_INT)) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_CHAR) char { + $1 = ($input.type == T_INT) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_STRING) char * { + $1 = ($input.type == T_STRING) ? 1 : 0; +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *, SWIGTYPE &, SWIGTYPE [] { + void *ptr; + if (SWIG_ConvertPtr($input.u.object, (void **) &ptr, $1_descriptor, 0) == -1) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE { + void *ptr; + if (SWIG_ConvertPtr($input.u.object, (void **) &ptr, $&1_descriptor, 0) == -1) { + $1 = 0; + } else { + $1 = 1; + } +} + +%typecheck(SWIG_TYPECHECK_VOIDPTR) void * { + void *ptr; + if (SWIG_ConvertPtr($input.u.object, (void **) &ptr, 0, 0) == -1) { + $1 = 0; + } else { + $1 = 1; + } +} + +/* ------------------------------------------------------------ + * Overloaded operator support + * ------------------------------------------------------------ */ + +#ifdef __cplusplus +%rename("`+") *::operator+; +%rename("`-") *::operator-; +%rename("`*") *::operator*; +%rename("`/") *::operator/; +%rename("`%") *::operator%; +%rename("`<<") *::operator<<; +%rename("`>>") *::operator>>; +%rename("`&") *::operator&; +%rename("`|") *::operator|; +%rename("`^") *::operator^; +%rename("`~") *::operator~; +%rename("`<") *::operator<; +%rename("`>") *::operator>; +%rename("`==") *::operator==; + +/* Special cases */ +%rename("`()") *::operator(); + +#endif + +/* ------------------------------------------------------------ + * The start of the Pike initialization function + * ------------------------------------------------------------ */ + +%init "swiginit.swg" + +%init %{ +#ifdef __cplusplus +extern "C" +#endif +PIKE_MODULE_EXIT {} + +#ifdef __cplusplus +extern "C" +#endif +PIKE_MODULE_INIT +{ + struct program *pr; + SWIG_InitializeModule(0); +%} + +/* pike keywords */ +%include <pikekw.swg> diff --git a/devtools/swigwin-1.3.34/Lib/pike/pikekw.swg b/devtools/swigwin-1.3.34/Lib/pike/pikekw.swg new file mode 100644 index 0000000..85fd091 --- /dev/null +++ b/devtools/swigwin-1.3.34/Lib/pike/pikekw.swg @@ -0,0 +1,55 @@ +#ifndef PIKE_PIKEKW_SWG_ +#define PIKE_PIKEKW_SWG_ + +/* Warnings for Pike keywords */ +#define PIKEKW(x) %namewarn("314:" #x " is a pike keyword") #x + +/* + from + http://www.http://docs.linux.cz/pike/tutorial_C.html + +*/ + + +PIKEKW(array); +PIKEKW(break); +PIKEKW(case); +PIKEKW(catch); +PIKEKW(continue); +PIKEKW(default); +PIKEKW(do); +PIKEKW(else); +PIKEKW(float); +PIKEKW(for); +PIKEKW(foreach); +PIKEKW(function); +PIKEKW(gauge); +PIKEKW(if); +PIKEKW(inherit); +PIKEKW(inline); +PIKEKW(int); +PIKEKW(lambda); +PIKEKW(mapping); +PIKEKW(mixed); +PIKEKW(multiset); +PIKEKW(nomask); +PIKEKW(object); +PIKEKW(predef); +PIKEKW(private); +PIKEKW(program); +PIKEKW(protected); +PIKEKW(public); +PIKEKW(return); +PIKEKW(sscanf); +PIKEKW(static); +PIKEKW(string); +PIKEKW(switch); +PIKEKW(typeof); +PIKEKW(varargs); +PIKEKW(void); +PIKEKW(while); + + +#undef PIKEKW + +#endif //PIKE_PIKEKW_SWG_ diff --git a/devtools/swigwin-1.3.34/Lib/pike/pikerun.swg b/devtools/swigwin-1.3.34/Lib/pike/pikerun.swg new file mode 100644 index 0000000..875fcf4 --- /dev/null +++ b/devtools/swigwin-1.3.34/Lib/pike/pikerun.swg @@ -0,0 +1,73 @@ +/* ----------------------------------------------------------------------------- + * 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. + * + * pikerun.swg + * + * This file contains the runtime support for Pike modules + * and includes code for managing global variables and pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif +#include "object.h" +#include "program.h" +#ifdef __cplusplus +} +#endif + +/* Stores information about a wrapped object */ +typedef struct swig_object_wrapper { + void *self; + swig_type_info *type; +} swig_object_wrapper; + +#ifdef THIS +#undef THIS +#endif +#define THIS (((swig_object_wrapper *) Pike_fp->current_storage)->self) + +#define SWIG_ConvertPtr SWIG_Pike_ConvertPtr +#define SWIG_NewPointerObj SWIG_Pike_NewPointerObj +#define SWIG_GetModule(clientdata) SWIG_Pike_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_Pike_SetModule(pointer) + +/* These need to be filled in before type sharing between modules will work */ +static swig_module_info *SWIG_Pike_GetModule() { + return 0; +} + +static void SWIG_Pike_SetModule(swig_module_info *pointer) { + +} + +/* Convert a pointer value */ +static int +SWIG_Pike_ConvertPtr(struct object *obj, void **ptr, swig_type_info *ty, int flags) { + struct program *pr; + swig_cast_info *tc; + swig_object_wrapper *obj_wrapper; + + if (ty) { + pr = (struct program *) ty->clientdata; + obj_wrapper = (swig_object_wrapper *) get_storage(obj, pr); + if (obj_wrapper && obj_wrapper->type) { + tc = SWIG_TypeCheckStruct(obj_wrapper->type, ty); + if (tc) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc, obj_wrapper->self, &newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + return 0; + } + } + } + return -1; +} + +/* Create a new pointer object */ +static struct object * +SWIG_Pike_NewPointerObj(void *ptr, swig_type_info *type, int own) { + return 0; +} diff --git a/devtools/swigwin-1.3.34/Lib/pike/std_string.i b/devtools/swigwin-1.3.34/Lib/pike/std_string.i new file mode 100644 index 0000000..ca1fad8 --- /dev/null +++ b/devtools/swigwin-1.3.34/Lib/pike/std_string.i @@ -0,0 +1,63 @@ +/* ----------------------------------------------------------------------------- + * 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. + * + * std_string.i + * + * SWIG typemaps for std::string + * ----------------------------------------------------------------------------- */ + +%{ +#include <string> +%} + +namespace std { + + %naturalvar string; + + class string; + + /* Overloading check */ + + %typemap(typecheck) string = char *; + %typemap(typecheck) const string & = char *; + + %typemap(in, pikedesc="tStr") string { + if ($input.type != T_STRING) + Pike_error("Bad argument: Expected a string.\n"); + $1.assign(STR0($input.u.string)); + } + + %typemap(in, pikedesc="tStr") const string & (std::string temp) { + if ($input.type != T_STRING) + Pike_error("Bad argument: Expected a string.\n"); + temp.assign(STR0($input.u.string)); + $1 = &temp; + } + + %typemap(out, pikedesc="tStr") string "push_text($1.c_str());"; + + %typemap(out, pikedesc="tStr") const string & "push_text($1->c_str());"; + + %typemap(directorin) string, const string &, string & "$1_name.c_str()"; + + %typemap(directorin) string *, const string * "$1_name->c_str()"; + + %typemap(directorout) string { + if ($input.type == T_STRING) + $result.assign(STR0($input.u.string)); + else + throw Swig::DirectorTypeMismatchException("string expected"); + } + + %typemap(directorout) const string & (std::string temp) { + if ($input.type == T_STRING) { + temp.assign(STR0($input.u.string)); + $result = &temp; + } else { + throw Swig::DirectorTypeMismatchException("string expected"); + } + } + +} + |