summaryrefslogtreecommitdiff
path: root/share/swig/2.0.11/pike/pike.swg
diff options
context:
space:
mode:
Diffstat (limited to 'share/swig/2.0.11/pike/pike.swg')
-rw-r--r--share/swig/2.0.11/pike/pike.swg320
1 files changed, 320 insertions, 0 deletions
diff --git a/share/swig/2.0.11/pike/pike.swg b/share/swig/2.0.11/pike/pike.swg
new file mode 100644
index 0000000..399752a
--- /dev/null
+++ b/share/swig/2.0.11/pike/pike.swg
@@ -0,0 +1,320 @@
+/* -----------------------------------------------------------------------------
+ * 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 <pike/global.h>
+#include <pike/module.h>
+#include <pike/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((const $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) (char *STRING, int LENGTH), (char *STRING, size_t 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;
+ }
+}
+
+/* Array reference typemaps */
+%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) }
+
+/* const pointers */
+%apply SWIGTYPE * { SWIGTYPE *const }
+
+/* ------------------------------------------------------------
+ * 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>