head 1.2; access; symbols pkgsrc-2013Q2:1.2.0.54 pkgsrc-2013Q2-base:1.2 pkgsrc-2012Q4:1.2.0.52 pkgsrc-2012Q4-base:1.2 pkgsrc-2011Q4:1.2.0.50 pkgsrc-2011Q4-base:1.2 pkgsrc-2011Q2:1.2.0.48 pkgsrc-2011Q2-base:1.2 pkgsrc-2009Q4:1.2.0.46 pkgsrc-2009Q4-base:1.2 pkgsrc-2008Q4:1.2.0.44 pkgsrc-2008Q4-base:1.2 pkgsrc-2008Q3:1.2.0.42 pkgsrc-2008Q3-base:1.2 cube-native-xorg:1.2.0.40 cube-native-xorg-base:1.2 pkgsrc-2008Q2:1.2.0.38 pkgsrc-2008Q2-base:1.2 pkgsrc-2008Q1:1.2.0.36 pkgsrc-2008Q1-base:1.2 pkgsrc-2007Q4:1.2.0.34 pkgsrc-2007Q4-base:1.2 pkgsrc-2007Q3:1.2.0.32 pkgsrc-2007Q3-base:1.2 pkgsrc-2007Q2:1.2.0.30 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.28 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.26 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.24 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.2.0.22 pkgsrc-2006Q2-base:1.2 pkgsrc-2006Q1:1.2.0.20 pkgsrc-2006Q1-base:1.2 pkgsrc-2005Q4:1.2.0.18 pkgsrc-2005Q4-base:1.2 pkgsrc-2005Q3:1.2.0.16 pkgsrc-2005Q3-base:1.2 pkgsrc-2005Q2:1.2.0.14 pkgsrc-2005Q2-base:1.2 pkgsrc-2005Q1:1.2.0.12 pkgsrc-2005Q1-base:1.2 pkgsrc-2004Q4:1.2.0.10 pkgsrc-2004Q4-base:1.2 pkgsrc-2004Q3:1.2.0.8 pkgsrc-2004Q3-base:1.2 pkgsrc-2004Q2:1.2.0.6 pkgsrc-2004Q2-base:1.2 pkgsrc-2004Q1:1.2.0.4 pkgsrc-2004Q1-base:1.2 pkgsrc-2003Q4:1.2.0.2 pkgsrc-2003Q4-base:1.2 buildlink2-base:1.2 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.2 date 2002.02.05.21.08.44; author drochner; state dead; branches; next 1.1; 1.1 date 2002.02.05.20.43.08; author drochner; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2002.02.05.20.43.08; author drochner; state Exp; branches; next ; desc @@ 1.2 log @ap-mod_python->ap-python @ text @$NetBSD: patch-ab,v 1.1 2002/02/05 20:43:08 drochner Exp $ --- src/tableobject.c.orig Mon May 28 23:00:41 2001 +++ src/tableobject.c Sun Nov 4 18:28:55 2001 @@@@ -185,6 +185,105 @@@@ }; /** + ** table_get + ** + * + * Implements dictionary like get(k,[x]) method. + */ + +static PyObject * table_get(tableobject *self, PyObject *args) +{ + + PyObject *key,*v; + PyObject *failob = Py_None; + array_header *ah; + table_entry *elts; + int i, j; + + if(!PyArg_ParseTuple(args, "O|O:get", &key, &failob)) + return NULL; + v=tablegetitem(self,key); + if(v = NULL) { + v=failob; + Py_INCREF(failob); + } + return v; +} + +/** + ** table_keys + ** + * + * Implements dictionary like items() method. + */ + +static PyObject * table_items(tableobject *self) +{ + + PyObject *v; + array_header *ah; + table_entry *elts; + int i, j; + + ah = ap_table_elts(self->table); + elts = (table_entry *) ah->elts; + + v = PyList_New(ah->nelts); + + for (i = 0, j = 0; i < ah->nelts; i++) + { + if (elts[i].key) + { + PyObject *vp = PyTuple_New(2); + if(vp == NULL) { + Py_DECREF(v); + return NULL; + } + PyTuple_SET_ITEM(vp,0,PyString_FromString(elts[i].key)); + PyTuple_SET_ITEM(vp,1,PyString_FromString(ap_table_get(self->table, + elts[i].key))); + PyList_SetItem(v, j, vp); + j++; + } + } + return v; +} +/** + ** table_keys + ** + * + * Implements dictionary like values() method. + * This mostly for completeness sake, I can't see use for it + */ + +static PyObject * table_values(tableobject *self) +{ + + PyObject *v; + array_header *ah; + table_entry *elts; + int i, j; + + ah = ap_table_elts(self->table); + elts = (table_entry *) ah->elts; + + v = PyList_New(ah->nelts); + + for (i = 0, j = 0; i < ah->nelts; i++) + { + if (elts[i].key) + { + PyObject *val = PyString_FromString(ap_table_get(self->table, + elts[i].key)); + PyList_SetItem(v, j, val); + j++; + } + } + return v; +} + + +/** ** table_keys ** * @@@@ -261,9 +360,13 @@@@ /* table method definitions */ static PyMethodDef tablemethods[] = { - {"keys", (PyCFunction)table_keys, METH_VARARGS}, {"has_key", (PyCFunction)table_has_key, METH_VARARGS}, {"add", (PyCFunction)mp_table_add, METH_VARARGS}, + {"items", (PyCFunction)table_items, METH_VARARGS}, + {"keys", (PyCFunction)table_keys, METH_VARARGS}, + {"get", (PyCFunction)table_get, METH_VARARGS}, + {"values", (PyCFunction)table_values, METH_VARARGS}, + /* Still needs: copy, update, clear, setdefault, popitem */ {NULL, NULL} /* sentinel */ }; @ 1.1 log @Initial revision @ text @d1 1 a1 1 $NetBSD$ @ 1.1.1.1 log @initial import of ap-mod_python-2.7.6, a Python interpretter embedded into Apache submitted by Jarkko Torppa per PR pkg/14522 @ text @@