From 87a30924d07d0665519c75db93d3addd8a9b1dbf Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Tue, 19 Dec 2000 21:34:55 +0000 Subject: Added hash() and compare() functions. Needed because multiple WinObj's can now refer to the same underlying WindowRef. --- Mac/Modules/win/Winmodule.c | 14 ++++++++++++-- Mac/Modules/win/winsupport.py | 23 +++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Mac/Modules/win/Winmodule.c b/Mac/Modules/win/Winmodule.c index 800bad0..4dce0e8 100644 --- a/Mac/Modules/win/Winmodule.c +++ b/Mac/Modules/win/Winmodule.c @@ -2165,11 +2165,21 @@ static PyObject *WinObj_getattr(self, name) #define WinObj_setattr NULL -#define WinObj_compare NULL +static int WinObj_compare(self, other) + WindowObject *self, *other; +{ + if ( self->ob_itself > other->ob_itself ) return 1; + if ( self->ob_itself < other->ob_itself ) return -1; + return 0; +} #define WinObj_repr NULL -#define WinObj_hash NULL +static int WinObj_hash(self) + WindowObject *self; +{ + return (int)self->ob_itself; +} PyTypeObject Window_Type = { PyObject_HEAD_INIT(&PyType_Type) diff --git a/Mac/Modules/win/winsupport.py b/Mac/Modules/win/winsupport.py index cbc5246..74b3bfd 100644 --- a/Mac/Modules/win/winsupport.py +++ b/Mac/Modules/win/winsupport.py @@ -126,6 +126,29 @@ class MyObjectDefinition(GlobalObjectDefinition): OutRbrace() Output("self->ob_itself = NULL;") Output("self->ob_freeit = NULL;") + + def outputCompare(self): + Output() + Output("static int %s_compare(self, other)", self.prefix) + IndentLevel() + Output("%s *self, *other;", self.objecttype) + DedentLevel() + OutLbrace() + Output("if ( self->ob_itself > other->ob_itself ) return 1;") + Output("if ( self->ob_itself < other->ob_itself ) return -1;") + Output("return 0;") + OutRbrace() + + def outputHash(self): + Output() + Output("static int %s_hash(self)", self.prefix) + IndentLevel() + Output("%s *self;", self.objecttype) + DedentLevel() + OutLbrace() + Output("return (int)self->ob_itself;") + OutRbrace() + ## def outputFreeIt(self, itselfname): ## Output("DisposeWindow(%s);", itselfname) # From here on it's basically all boiler plate... -- cgit v0.12