From 13a0f1783947cea8e30a07f3ea4a5e2c85b7f914 Mon Sep 17 00:00:00 2001 From: rfm Date: Mon, 12 Oct 2009 15:57:59 +0000 Subject: [PATCH] finish implementng hash methods for NSColor subclasses git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28811 72102866-910b-0410-8b05-ffd578937521 --- Source/NSColor.m | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Source/NSColor.m b/Source/NSColor.m index 474829248..2b728e5c3 100644 --- a/Source/NSColor.m +++ b/Source/NSColor.m @@ -2361,6 +2361,27 @@ static NSRecursiveLock *namedColorLock = nil; *alpha = _alpha_component; } +- (NSUInteger) hash +{ + union { + uint8_t bytes[sizeof(float)*5]; + float floats[5]; + } u; + NSUInteger h = 0; + unsigned i; + + u.floats[0] = _cyan_component; + u.floats[1] = _magenta_component; + u.floats[2] = _yellow_component; + u.floats[3] = _black_component; + u.floats[4] = _alpha_component; + for (i = 0; i < sizeof(u); i++) + { + h = (h << 5) + h + u.bytes[i]; + } + return h; +} + - (BOOL) isEqual: (id)other { if (other == self) @@ -2600,6 +2621,25 @@ static NSRecursiveLock *namedColorLock = nil; *alpha = _alpha_component; } +- (NSUInteger) hash +{ + union { + uint8_t bytes[sizeof(float)*3]; + float floats[3]; + } u; + NSUInteger h = 0; + unsigned i; + + u.floats[0] = _red_component; + u.floats[1] = _green_component; + u.floats[2] = _blue_component; + for (i = 0; i < sizeof(u); i++) + { + h = (h << 5) + h + u.bytes[i]; + } + return h; +} + - (BOOL) isEqual: (id)other { if (other == self) @@ -3104,6 +3144,11 @@ static NSRecursiveLock *namedColorLock = nil; return desc; } +- (NSUInteger) hash +{ + return [_pattern hash]; +} + - (BOOL) isEqual: (id)other { if (other == self)