KWCallSite.m 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //
  2. // Licensed under the terms in License.txt
  3. //
  4. // Copyright 2010 Allen Ding. All rights reserved.
  5. //
  6. #import "KWCallSite.h"
  7. @implementation KWCallSite
  8. #pragma mark - Initializing
  9. - (id)initWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber {
  10. self = [super init];
  11. if (self) {
  12. _filename = [aFilename copy];
  13. _lineNumber = aLineNumber;
  14. }
  15. return self;
  16. }
  17. + (id)callSiteWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber {
  18. return [[self alloc] initWithFilename:aFilename lineNumber:aLineNumber];
  19. }
  20. #pragma mark - Identifying and Comparing
  21. - (NSUInteger)hash {
  22. return [[NSString stringWithFormat:@"%@%u", self.filename, (unsigned)self.lineNumber] hash];
  23. }
  24. - (BOOL)isEqual:(id)anObject {
  25. if (![anObject isKindOfClass:[KWCallSite class]])
  26. return NO;
  27. return [self isEqualToCallSite:anObject];
  28. }
  29. - (BOOL)isEqualToCallSite:(KWCallSite *)aCallSite {
  30. return [self.filename isEqualToString:aCallSite.filename] && (self.lineNumber == aCallSite.lineNumber);
  31. }
  32. @end