main
1//
2// Licensed under the terms in License.txt
3//
4// Copyright 2010 Allen Ding. All rights reserved.
5//
6
7#import "KWCallSite.h"
8
9@implementation KWCallSite
10
11#pragma mark -
12#pragma mark Initializing
13
14- (id)initWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber {
15 if ((self = [super init])) {
16 filename = [aFilename copy];
17 lineNumber = aLineNumber;
18 }
19
20 return self;
21}
22
23+ (id)callSiteWithFilename:(NSString *)aFilename lineNumber:(NSUInteger)aLineNumber {
24 return [[[self alloc] initWithFilename:aFilename lineNumber:aLineNumber] autorelease];
25}
26
27- (void)dealloc {
28 [filename release];
29 [super dealloc];
30}
31
32#pragma mark -
33#pragma mark Accessing Call Site Properties
34
35@synthesize filename;
36@synthesize lineNumber;
37
38#pragma mark -
39#pragma mark Identifying and Comparing
40
41- (NSUInteger)hash {
42 return [[NSString stringWithFormat:@"%@%u", self.filename, (unsigned)self.lineNumber] hash];
43}
44
45- (BOOL)isEqual:(id)anObject {
46 if (![anObject isKindOfClass:[KWCallSite class]])
47 return NO;
48
49 return [self isEqualToCallSite:anObject];
50}
51
52- (BOOL)isEqualToCallSite:(KWCallSite *)aCallSite {
53 return [self.filename isEqualToString:aCallSite.filename] && (self.lineNumber == aCallSite.lineNumber);
54}
55
56@end