[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