summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-06-18 16:47:21 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-06-18 16:47:21 +0200
commit1ac1853545442ff3aa7f4eee5a81070e711a96fb (patch)
tree56e3005c3c97879e13f7e558dab911f50692cb63
parent250e139801abaada3c1f899a011bcad4e13d56ac (diff)
MLKSymbol: Override -hash.
-rw-r--r--MLKSymbol.h1
-rw-r--r--MLKSymbol.m13
2 files changed, 13 insertions, 1 deletions
diff --git a/MLKSymbol.h b/MLKSymbol.h
index 3aa2a1e..3cc9859 100644
--- a/MLKSymbol.h
+++ b/MLKSymbol.h
@@ -52,6 +52,7 @@
// copying. (The hack is called real_identity and it's an ivar of this
// class.) See the comment above copyWithZone: for why it even exists.
-(BOOL) isEqual:(id)object;
+-(unsigned) hash;
-(void) dealloc;
@end
diff --git a/MLKSymbol.m b/MLKSymbol.m
index 73d418a..8a087cf 100644
--- a/MLKSymbol.m
+++ b/MLKSymbol.m
@@ -36,7 +36,10 @@
MLKSymbol *copy = [MLKSymbol allocWithZone:zone];
ASSIGN (copy->name, name);
ASSIGN (copy->homePackage, homePackage);
- ASSIGN (copy->real_identity, self);
+ if (real_identity)
+ ASSIGN (copy->real_identity, real_identity);
+ else
+ ASSIGN (copy->real_identity, self);
return copy;
}
@@ -79,6 +82,14 @@
: self)));
}
+-(unsigned) hash
+{
+ if (real_identity)
+ return [real_identity hash];
+ else
+ return [super hash];
+}
+
-(void) dealloc
{
RELEASE (name);