blob: 3642ef05ffe834c3dd90c7b1d4a3f8b67d323fab [file] [log] [blame]
#import "ANTLRDoubleKeyMap.h"
@implementation ANTLRDoubleKeyMap
- (id) init
{
self = [super init];
if ( self != nil ) {
data = [[AMutableDictionary dictionaryWithCapacity:30] retain];
}
return self;
}
- (id) setObject:(id)v forKey1:(id)k1 forKey2:(id)k2
{
AMutableDictionary *data2 = [data objectForKey:k1];
id prev = nil;
if ( data2 == nil ) {
data2 = [AMutableDictionary dictionaryWithCapacity:30];
[data setObject:data2 forKey:k1];
}
else {
prev = [data2 objectForKey:k2];
}
[data2 setObject:v forKey:k2];
return prev;
}
- (id) objectForKey1:(id)k1 forKey2:(id)k2
{
AMutableDictionary *data2 = [data objectForKey:k1];
if ( data2 == nil )
return nil;
return [data2 objectForKey:k2];
}
- (AMutableDictionary *) objectForKey:(id)k1
{
return [data objectForKey:k1];
}
/**
* Get all values associated with primary key
*/
- (NSArray *) valuesForKey:(id)k1
{
AMutableDictionary *data2 = [data objectForKey:k1];
if ( data2 == nil )
return nil;
return [data2 allValues];
}
/**
* get all primary keys
*/
- (NSArray *) allKeys1
{
return [data allKeys];
}
/**
* get all secondary keys associated with a primary key
*/
- (NSArray *) allKeys2:(id)k1
{
AMutableDictionary * data2 = [data objectForKey:k1];
if ( data2 == nil )
return nil;
return [data2 allKeys];
}
- (AMutableArray *) values
{
// ANTLRHashMap *s = [[ANTLRHashMap newANTLRHashMapWithLen:30];
AMutableArray *s = [AMutableArray arrayWithCapacity:30];
for (AMutableDictionary *k2 in [data allValues]) {
for ( NSString *v in [k2 allValues]) {
[s addObject:v];
}
}
return s;
}
- (void) dealloc
{
#ifdef DEBUG_DEALLOC
NSLog( @"called dealloc in ANTLRCommonToken" );
#endif
[data release];
[super dealloc];
}
@synthesize data;
@end