summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-09-21 00:40:17 -0700
committerJelmer Vernooij <jelmer@samba.org>2010-09-21 11:47:03 -0700
commit049c4fa04dcee5a6083630b0464b715c5ca531cd (patch)
treede66d564c8068bb52496883976198908f76f6d16
parent1d90227c3c31dae573ac1dc3096925cb82e994b6 (diff)
downloadsamba-049c4fa04dcee5a6083630b0464b715c5ca531cd.tar.gz
samba-049c4fa04dcee5a6083630b0464b715c5ca531cd.tar.bz2
samba-049c4fa04dcee5a6083630b0464b715c5ca531cd.zip
pytalloc: Add default compare function.
-rw-r--r--lib/talloc/pytalloc.c15
-rw-r--r--lib/talloc/pytalloc.h1
-rw-r--r--pidl/lib/Parse/Pidl/Samba4/Python.pm1
3 files changed, 16 insertions, 1 deletions
diff --git a/lib/talloc/pytalloc.c b/lib/talloc/pytalloc.c
index 054704f42d..bea6961efc 100644
--- a/lib/talloc/pytalloc.c
+++ b/lib/talloc/pytalloc.c
@@ -88,7 +88,7 @@ PyObject *py_talloc_reference_ex(PyTypeObject *py_type, TALLOC_CTX *mem_ctx, voi
}
/**
- * Default (but slightly more useful than the default) implementation of Repr().
+ * Default (but only slightly more useful than the default) implementation of Repr().
*/
PyObject *py_talloc_default_repr(PyObject *obj)
{
@@ -99,6 +99,19 @@ PyObject *py_talloc_default_repr(PyObject *obj)
type->tp_name, talloc_obj->ptr);
}
+/**
+ * Default (but only slightly more useful than the default) implementation of cmp.
+ */
+int py_talloc_default_cmp(PyObject *_obj1, PyObject *_obj2)
+{
+ py_talloc_Object *obj1 = (py_talloc_Object *)_obj1,
+ *obj2 = (py_talloc_Object *)_obj2;
+ if (obj1->ob_type != obj2->ob_type)
+ return (obj1->ob_type - obj2->ob_type);
+
+ return (py_talloc_get_ptr(obj1) - py_talloc_get_ptr(obj2));
+}
+
static void py_cobject_talloc_free(void *ptr)
{
talloc_free(ptr);
diff --git a/lib/talloc/pytalloc.h b/lib/talloc/pytalloc.h
index 4782756352..b17977a46c 100644
--- a/lib/talloc/pytalloc.h
+++ b/lib/talloc/pytalloc.h
@@ -55,5 +55,6 @@ PyObject *py_talloc_default_repr(PyObject *py_obj);
PyObject *PyCObject_FromTallocPtr(void *);
PyObject *PyString_FromString_check_null(const char *ptr);
+int py_talloc_default_cmp(PyObject *obj1, PyObject *obj2);
#endif /* _PY_TALLOC_H_ */
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index ed43ba4d3e..bc56f17fea 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -325,6 +325,7 @@ sub PythonStruct($$$$$$)
$self->pidl(".tp_dealloc = py_talloc_dealloc,");
$self->pidl(".tp_getset = $getsetters,");
$self->pidl(".tp_repr = py_talloc_default_repr,");
+ $self->pidl(".tp_compare = py_talloc_default_cmp,");
if ($docstring) {
$self->pidl(".tp_doc = $docstring,");
}