[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28419] trunk/blender/source/blender/ python/intern/bpy_rna.c: hash function for property-rna.
Campbell Barton
ideasman42 at gmail.com
Sun Apr 25 23:13:42 CEST 2010
Revision: 28419
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28419
Author: campbellbarton
Date: 2010-04-25 23:13:42 +0200 (Sun, 25 Apr 2010)
Log Message:
-----------
hash function for property-rna. eg. hash(bpy.context.object.modifiers)
Modified Paths:
--------------
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2010-04-25 19:56:43 UTC (rev 28418)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2010-04-25 21:13:42 UTC (rev 28419)
@@ -431,9 +431,29 @@
static long pyrna_struct_hash( BPy_StructRNA *self )
{
- return (long)self->ptr.data;
+ return _Py_HashPointer(self->ptr.data);
}
+/* from python's meth_hash v3.1.2 */
+static long pyrna_prop_hash(BPy_PropertyRNA *self)
+{
+ long x,y;
+ if (self->ptr.data == NULL)
+ x = 0;
+ else {
+ x = _Py_HashPointer(self->ptr.data);
+ if (x == -1)
+ return -1;
+ }
+ y = _Py_HashPointer((void*)(self->prop));
+ if (y == -1)
+ return -1;
+ x ^= y;
+ if (x == -1)
+ x = -2;
+ return x;
+}
+
/* use our own dealloc so we can free a property if we use one */
static void pyrna_struct_dealloc( BPy_StructRNA *self )
{
@@ -3490,7 +3510,7 @@
/* More standard operations (here for binary compatibility) */
- NULL, /* hashfunc tp_hash; */
+ ( hashfunc ) pyrna_prop_hash, /* hashfunc tp_hash; */
NULL, /* ternaryfunc tp_call; */
NULL, /* reprfunc tp_str; */
More information about the Bf-blender-cvs
mailing list