diff options
Diffstat (limited to 'Modules/xxmodule.c')
-rw-r--r-- | Modules/xxmodule.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/Modules/xxmodule.c b/Modules/xxmodule.c new file mode 100644 index 0000000..070a622 --- /dev/null +++ b/Modules/xxmodule.c @@ -0,0 +1,92 @@ +/*********************************************************** +Copyright 1991, 1992 by Stichting Mathematisch Centrum, Amsterdam, The +Netherlands. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + +/* xx module */ + +#include "allobjects.h" +#include "modsupport.h" + + +/* Function of two integers returning integer */ + +static object * +xx_foo(self, args) + object *self; /* Not used */ + object *args; +{ + long i, j; + long res; + if (!getargs(args, "(ll)", &i, &j)) + return NULL; + res = i+j; /* XXX Do something here */ + return newintobject(res); +} + + +/* Function of no arguments returning None */ + +static object * +xx_bar(self, args) + object *self; /* Not used */ + object *args; +{ + int i, j; + if (!getnoarg(args)) + return NULL; + /* XXX Do something here */ + INCREF(None); + return None; +} + + +/* List of functions defined in the module */ + +static struct methodlist xx_methods[] = { + {"foo", xx_foo}, + {"bar", xx_bar}, + {NULL, NULL} /* sentinel */ +}; + + +/* Initialization function for the module (*must* be called initxx) */ + +void +initxx() +{ + object *m, *d, *x; + + /* Create the module and add the functions */ + m = initmodule("xx", xx_methods); + + /* Add some symbolic constants to the module */ + d = getmoduledict(m); + x = newstringobject("xx.error"); + dictinsert(d, "error", x); + x = newintobject(42L); + dictinsert(d, "magic", x); + + /* Check for errors */ + if (err_occurred()) + fatal("can't initialize module xx"); +} |