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