* (c) 2005 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of the Python interface to mLib.
*
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* mLib/Python is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with mLib/Python; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <mLib/dstr.h>
#include <mLib/exc.h>
+#include "array.h"
#include "grim.h"
/*----- Data structures ---------------------------------------------------*/
#define DAITER_V(obj) DA_V(DAITER_DA(obj))
#define DAITER_I(obj) (((daiter_pyobj *)(obj))->i)
-static PyTypeObject da_pytype, daiter_pytype;
-
static int getseq(PyObject **pseq, PyObject ***v, size_t *n)
{
PyObject *seq = *pseq;
static void daiter_pydealloc(PyObject *me)
{ Py_DECREF(DAITER_DA(me)); PyObject_DEL(me); }
-static PyTypeObject daiter_pytype = {
+PyTypeObject daiter_pytype = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "array.ArrayIter", /* @tp_name@ */
+ "mLib.ArrayIter", /* @tp_name@ */
sizeof(daiter_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
{
PyObject **items;
size_t n;
-
+
if (0 > start || start > end || end > DA_LEN(DA_V(me))) {
PyErr_SetString(PyExc_IndexError, "bad slice");
return (-1);
static int da_pyputitem(PyObject *me, int i, PyObject *x)
{
PyObject **p;
-
+
if (i < 0 || i >= DA_LEN(DA_V(me))) {
PyErr_SetString(PyExc_IndexError, "index out of range");
return (-1);
dstr_puts(&d, "Array([");
for (i = 0; i < DA_LEN(DA_V(me)); i++) {
if ((s = PyObject_Repr(DA(DA_V(me))[i])) == 0 ||
- PyString_AsStringAndSize(s, &p, &n)) {
+ PyString_AsStringAndSize(s, &p, &n)) {
Py_XDECREF(s);
goto done;
}
da_pyput /* @mp_ass_subscript@ */
};
-static PyTypeObject da_pytype = {
+PyTypeObject da_pytype = {
PyObject_HEAD_INIT(0) 0, /* Header */
- "array.Array", /* @tp_name@ */
+ "mLib.Array", /* @tp_name@ */
sizeof(da_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
/*----- Initialization ----------------------------------------------------*/
-static PyMethodDef emptymethods[] = { { 0 } };
-
-void initarray(void)
-{
- PyObject *mod = Py_InitModule("array", emptymethods);
- PyType_Ready(&da_pytype); PyType_Ready(&daiter_pytype);
- PyModule_AddObject(mod, "Array", (PyObject *)&da_pytype);
- PyModule_AddObject(mod, "ArrayIter", (PyObject *)&daiter_pytype);
-}
+void da_pysetup(void)
+ { PyType_Ready(&da_pytype); PyType_Ready(&daiter_pytype); }
/*----- That's all, folks -------------------------------------------------*/