You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by va...@apache.org on 2009/02/23 09:20:55 UTC
svn commit: r746915 - in /lucene/pylucene/trunk/jcc: CHANGES
jcc/sources/types.cpp
Author: vajda
Date: Mon Feb 23 08:20:54 2009
New Revision: 746915
URL: http://svn.apache.org/viewvc?rev=746915&view=rev
Log:
- added support for proxying mapping and sequence protocols on FinalizerProxy
Modified:
lucene/pylucene/trunk/jcc/CHANGES
lucene/pylucene/trunk/jcc/jcc/sources/types.cpp
Modified: lucene/pylucene/trunk/jcc/CHANGES
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/CHANGES?rev=746915&r1=746914&r2=746915&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/CHANGES (original)
+++ lucene/pylucene/trunk/jcc/CHANGES Mon Feb 23 08:20:54 2009
@@ -9,6 +9,7 @@
- added cast to placate Solaris compiler error in JArray.cpp
- JArray Python wrappers should return None when passed a null array
- added JDK variable to setup.py to better parameterize build configuration
+ - added support for proxying mapping and sequence protocols on FinalizerProxy
-
Version 2.0 -> 2.1
Modified: lucene/pylucene/trunk/jcc/jcc/sources/types.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc/sources/types.cpp?rev=746915&r1=746914&r2=746915&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc/sources/types.cpp (original)
+++ lucene/pylucene/trunk/jcc/jcc/sources/types.cpp Mon Feb 23 08:20:54 2009
@@ -37,6 +37,23 @@
static PyObject *t_fp_repr(t_fp *self);
static PyObject *t_fp_iter(t_fp *self);
+static Py_ssize_t t_fp_map_length(t_fp *self);
+static PyObject *t_fp_map_get(t_fp *self, PyObject *key);
+static int t_fp_map_set(t_fp *self, PyObject *key, PyObject *value);
+
+static Py_ssize_t t_fp_seq_length(t_fp *self);
+static PyObject *t_fp_seq_get(t_fp *self, Py_ssize_t n);
+static int t_fp_seq_contains(t_fp *self, PyObject *value);
+static PyObject *t_fp_seq_concat(t_fp *self, PyObject *arg);
+static PyObject *t_fp_seq_repeat(t_fp *self, Py_ssize_t n);
+static PyObject *t_fp_seq_getslice(t_fp *self, Py_ssize_t low, Py_ssize_t high);
+static int t_fp_seq_set(t_fp *self, Py_ssize_t i, PyObject *value);
+static int t_fp_seq_setslice(t_fp *self, Py_ssize_t low,
+ Py_ssize_t high, PyObject *arg);
+static PyObject *t_fp_seq_inplace_concat(t_fp *self, PyObject *arg);
+static PyObject *t_fp_seq_inplace_repeat(t_fp *self, Py_ssize_t n);
+
+
PyTypeObject FinalizerClassType = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
@@ -79,6 +96,25 @@
0, /* tp_new */
};
+static PyMappingMethods t_fp_as_mapping = {
+ (lenfunc)t_fp_map_length, /* mp_length */
+ (binaryfunc)t_fp_map_get, /* mp_subscript */
+ (objobjargproc)t_fp_map_set, /* mp_ass_subscript */
+};
+
+static PySequenceMethods t_fp_as_sequence = {
+ (lenfunc)t_fp_seq_length, /* sq_length */
+ (binaryfunc)t_fp_seq_concat, /* sq_concat */
+ (ssizeargfunc)t_fp_seq_repeat, /* sq_repeat */
+ (ssizeargfunc)t_fp_seq_get, /* sq_item */
+ (ssizessizeargfunc)t_fp_seq_getslice, /* sq_slice */
+ (ssizeobjargproc)t_fp_seq_set, /* sq_ass_item */
+ (ssizessizeobjargproc)t_fp_seq_setslice, /* sq_ass_slice */
+ (objobjproc)t_fp_seq_contains, /* sq_contains */
+ (binaryfunc)t_fp_seq_inplace_concat, /* sq_inplace_concat */
+ (ssizeargfunc)t_fp_seq_inplace_repeat, /* sq_inplace_repeat */
+};
+
PyTypeObject FinalizerProxyType = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
@@ -92,8 +128,8 @@
0, /* tp_compare */
(reprfunc)t_fp_repr, /* tp_repr */
0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
+ &t_fp_as_sequence, /* tp_as_sequence */
+ &t_fp_as_mapping, /* tp_as_mapping */
0, /* tp_hash */
0, /* tp_call */
0, /* tp_str */
@@ -178,6 +214,75 @@
return PyObject_SetAttr(self->object, name, value);
}
+static Py_ssize_t t_fp_map_length(t_fp *self)
+{
+ return PyMapping_Size(self->object);
+}
+
+static PyObject *t_fp_map_get(t_fp *self, PyObject *key)
+{
+ return PyObject_GetItem(self->object, key);
+}
+
+static int t_fp_map_set(t_fp *self, PyObject *key, PyObject *value)
+{
+ if (value == NULL)
+ return PyObject_DelItem(self->object, key);
+
+ return PyObject_SetItem(self->object, key, value);
+}
+
+static Py_ssize_t t_fp_seq_length(t_fp *self)
+{
+ return PySequence_Length(self->object);
+}
+
+static PyObject *t_fp_seq_get(t_fp *self, Py_ssize_t n)
+{
+ return PySequence_GetItem(self->object, n);
+}
+
+static int t_fp_seq_contains(t_fp *self, PyObject *value)
+{
+ return PySequence_Contains(self->object, value);
+}
+
+static PyObject *t_fp_seq_concat(t_fp *self, PyObject *arg)
+{
+ return PySequence_Concat(self->object, arg);
+}
+
+static PyObject *t_fp_seq_repeat(t_fp *self, Py_ssize_t n)
+{
+ return PySequence_Repeat(self->object, n);
+}
+
+static PyObject *t_fp_seq_getslice(t_fp *self, Py_ssize_t low, Py_ssize_t high)
+{
+ return PySequence_GetSlice(self->object, low, high);
+}
+
+static int t_fp_seq_set(t_fp *self, Py_ssize_t i, PyObject *value)
+{
+ return PySequence_SetItem(self->object, i, value);
+}
+
+static int t_fp_seq_setslice(t_fp *self, Py_ssize_t low,
+ Py_ssize_t high, PyObject *arg)
+{
+ return PySequence_SetSlice(self->object, low, high, arg);
+}
+
+static PyObject *t_fp_seq_inplace_concat(t_fp *self, PyObject *arg)
+{
+ return PySequence_InPlaceConcat(self->object, arg);
+}
+
+static PyObject *t_fp_seq_inplace_repeat(t_fp *self, Py_ssize_t n)
+{
+ return PySequence_InPlaceRepeat(self->object, n);
+}
+
/* const variable descriptor */