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; */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs