Commits

Tuukka Norri committed 4fc4b02

Replaced dependency to TSDatatypes with one to MKCCollections

  • Participants
  • Parent commits 738f8d2
  • Branches PGTS

Comments (0)

Files changed (22)

File Framework/Framework.xcodeproj/project.pbxproj

 		5312665D0B68F23C00637EDA /* PGTSCertificateVerificationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5312665B0B68F23C00637EDA /* PGTSCertificateVerificationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		5312665E0B68F23C00637EDA /* PGTSCertificateVerificationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5312665C0B68F23C00637EDA /* PGTSCertificateVerificationDelegate.m */; };
 		531746A7095C07E00098D3D5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; };
+		5321F5EF0CF7712300E663CE /* libMKCCollections.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5321F5EC0CF7711F00E663CE /* libMKCCollections.a */; };
 		53298DE00B3307A800DE7CC8 /* PGTSRoleDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 53298DDE0B3307A800DE7CC8 /* PGTSRoleDescription.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		53298DE10B3307A800DE7CC8 /* PGTSRoleDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 53298DDF0B3307A800DE7CC8 /* PGTSRoleDescription.m */; };
 		53298DF20B330B6F00DE7CC8 /* PGTSAbstractObjectDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 53298DF00B330B6F00DE7CC8 /* PGTSAbstractObjectDescription.h */; settings = {ATTRIBUTES = (Public, ); }; };
 			remoteGlobalIDString = 53BF4A350A36F6680065845D;
 			remoteInfo = "Static archive";
 		};
+		5321F5EB0CF7711F00E663CE /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 5321F5E60CF7711F00E663CE /* MKCCollections.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 53C4CDC30CF7553E00E09BC3 /* libMKCCollections.a */;
+			remoteInfo = "Static library";
+		};
+		5321F5ED0CF7711F00E663CE /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 5321F5E60CF7711F00E663CE /* MKCCollections.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = D2AAC0C705546C1D00DB518D /* MKCCollections.dylib */;
+			remoteInfo = "Dynamic library";
+		};
+		5321F5F40CF7714700E663CE /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 5321F5E60CF7711F00E663CE /* MKCCollections.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = 53C4CDC20CF7553E00E09BC3 /* Static library */;
+			remoteInfo = "Static library";
+		};
 		538971BB0B821A710092E1B8 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
 			remoteGlobalIDString = 530EC0020B4BCDB100DFC1CA;
 			remoteInfo = libLog4Cocoa;
 		};
-		53F524D50A51A28900E7DDC4 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 5304E3FC09575374004D0C0F /* TSDataTypes.xcodeproj */;
-			proxyType = 1;
-			remoteGlobalIDString = 53BF4A340A36F6680065845D;
-			remoteInfo = "Static archive";
-		};
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXCopyFilesBuildPhase section */
 		531266130B68E28100637EDA /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
 		5312665B0B68F23C00637EDA /* PGTSCertificateVerificationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PGTSCertificateVerificationDelegate.h; path = Sources/PGTSCertificateVerificationDelegate.h; sourceTree = "<group>"; };
 		5312665C0B68F23C00637EDA /* PGTSCertificateVerificationDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PGTSCertificateVerificationDelegate.m; path = Sources/PGTSCertificateVerificationDelegate.m; sourceTree = "<group>"; };
+		5321F5E60CF7711F00E663CE /* MKCCollections.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MKCCollections.xcodeproj; path = ../../MKCCollections/MKCCollections.xcodeproj; sourceTree = SOURCE_ROOT; };
 		5325EAD70A1B2EF600FEA842 /* postgresql */ = {isa = PBXFileReference; lastKnownFileType = folder; name = postgresql; path = "PGTS-PostgreSQL/postgresql"; sourceTree = BUILT_PRODUCTS_DIR; };
 		53298DDE0B3307A800DE7CC8 /* PGTSRoleDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PGTSRoleDescription.h; path = Sources/PGTSRoleDescription.h; sourceTree = "<group>"; };
 		53298DDF0B3307A800DE7CC8 /* PGTSRoleDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PGTSRoleDescription.m; path = Sources/PGTSRoleDescription.m; sourceTree = "<group>"; };
 				531266140B68E28100637EDA /* Security.framework in Frameworks */,
 				53D0D01F0B6F4ED000D2D101 /* libssl.dylib in Frameworks */,
 				53D0D0200B6F4ED000D2D101 /* libcrypto.dylib in Frameworks */,
+				5321F5EF0CF7712300E663CE /* libMKCCollections.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				5321F5E60CF7711F00E663CE /* MKCCollections.xcodeproj */,
 				5304E3FC09575374004D0C0F /* TSDataTypes.xcodeproj */,
 				53C1DF760B4BD4AB007947D8 /* Log4Cocoa.xcodeproj */,
 				53BA503E08804FBC00BFAFB5 /* psql */,
 			name = Products;
 			sourceTree = "<group>";
 		};
+		5321F5E70CF7711F00E663CE /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				5321F5EC0CF7711F00E663CE /* libMKCCollections.a */,
+				5321F5EE0CF7711F00E663CE /* MKCCollections.dylib */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
 		53353A590896D174003EE146 /* WriteDelegate */ = {
 			isa = PBXGroup;
 			children = (
 			buildRules = (
 			);
 			dependencies = (
-				53F524D60A51A28900E7DDC4 /* PBXTargetDependency */,
+				5321F5F50CF7714700E663CE /* PBXTargetDependency */,
 				53D044210B4C1E0D00DB9308 /* PBXTargetDependency */,
 				538971BC0B821A710092E1B8 /* PBXTargetDependency */,
 			);
 		0867D690FE84028FC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = 53BA4FD208804E6B00BFAFB5 /* Build configuration list for PBXProject "Framework" */;
-			compatibilityVersion = "Xcode 2.4";
 			hasScannedForEncodings = 1;
 			mainGroup = 0867D691FE84028FC02AAC07 /* Framework */;
 			productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
 					ProjectRef = 53C1DF760B4BD4AB007947D8 /* Log4Cocoa.xcodeproj */;
 				},
 				{
+					ProductGroup = 5321F5E70CF7711F00E663CE /* Products */;
+					ProjectRef = 5321F5E60CF7711F00E663CE /* MKCCollections.xcodeproj */;
+				},
+				{
 					ProductGroup = 531B02600A51A1EA006AEF08 /* Products */;
 					ProjectRef = 5304E3FC09575374004D0C0F /* TSDataTypes.xcodeproj */;
 				},
 			remoteRef = 531B02670A51A1EA006AEF08 /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
+		5321F5EC0CF7711F00E663CE /* libMKCCollections.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libMKCCollections.a;
+			remoteRef = 5321F5EB0CF7711F00E663CE /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		5321F5EE0CF7711F00E663CE /* MKCCollections.dylib */ = {
+			isa = PBXReferenceProxy;
+			fileType = "compiled.mach-o.dylib";
+			path = MKCCollections.dylib;
+			remoteRef = 5321F5ED0CF7711F00E663CE /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 		53D044160B4C1DFD00DB9308 /* libLog4Cocoa.a */ = {
 			isa = PBXReferenceProxy;
 			fileType = archive.ar;
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		5321F5F50CF7714700E663CE /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = "Static library";
+			targetProxy = 5321F5F40CF7714700E663CE /* PBXContainerItemProxy */;
+		};
 		538971BC0B821A710092E1B8 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 538971AF0B821A570092E1B8 /* PostgreSQL-8.2.5 */;
 			name = libLog4Cocoa;
 			targetProxy = 53D044200B4C1E0D00DB9308 /* PBXContainerItemProxy */;
 		};
-		53F524D60A51A28900E7DDC4 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			name = "Static archive";
-			targetProxy = 53F524D50A51A28900E7DDC4 /* PBXContainerItemProxy */;
-		};
 /* End PBXTargetDependency section */
 
 /* Begin PBXVariantGroup section */

File Framework/Sources/PGTSAbstractClassInfo.h

 #import <PGTS/PGTSAbstractObjectDescription.h>
 #import <PGTS/postgresql/libpq-fe.h> 
 
-@class TSIndexDictionary;
 @class PGTSRoleDescription;
 @class PGTSACLItem;
 
 {
     Oid schemaOid;
     NSString* schemaName;
-    TSIndexDictionary* aclItems;
+    id aclItems;
     PGTSRoleDescription* owner;
     char relkind;
 }

File Framework/Sources/PGTSAbstractClassInfo.m

 #import "PGTSRoleDescription.h"
 #import "PGTSACLItem.h"
 #import "PGTSDatabaseInfo.h"
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 
 /** 
  * Abstract base class for database class objects
     if ((self = [super initWithConnection: aConn]))
     {
         schemaOid = InvalidOid;
-        aclItems = [[TSIndexDictionary alloc] init];
+        aclItems = [MKCDictionary copyDictionaryWithKeyType: kMKCCollectionTypeInteger
+                                                  valueType: kMKCCollectionTypeObject];
     }
     return self;
 }

File Framework/Sources/PGTSConnection.h

 
 @class PGTSResultSet;
 @class PGTSDatabaseInfo;
-@class TSObjectTagDictionary;
 @protocol PGTSConnectionDelegate;
 @protocol PGTSCertificateVerificationDelegate;
 
     NSLock* workerThreadLock;
 	
     NSString* connectionString;
-    TSObjectTagDictionary* parameterCounts;
+    id parameterCounts;
     NSMutableDictionary* deserializationDictionary;
     NSString* initialCommands;
 

File Framework/Sources/PGTSConnection.m

 #import "PGTSFunctions.h"
 #import "PGTSDatabaseInfo.h"
 #import "PGTSCertificateVerificationDelegate.h"
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import <Log4Cocoa/Log4Cocoa.h>
 
 
         
         resultSetClass = [PGTSResultSet class];
         
-        parameterCounts = [[TSObjectTagDictionary alloc] init];
+        parameterCounts = [MKCDictionary copyDictionaryWithKeyType: kMKCCollectionTypeObject 
+                                                         valueType: kMKCCollectionTypeInteger];
         delegateProcessesNotices = NO;
         overlooksFailedQueries = YES;
         connectsAutomatically = NO;
 
             cancelRequest = NULL;
             //databaseInfo is set after the connection has been made
-            parameterCounts = [[TSObjectTagDictionary alloc] init];
+            parameterCounts = [MKCDictionary dictionaryWithKeyType: kMKCCollectionTypeObject
+                                                         valueType: kMKCCollectionTypeInteger];
             deserializationDictionary = [decoder decodeObjectForKey: @"deserializationDictionary"];
             connectsAutomatically =  [decoder decodeBoolForKey: @"connectsAutomatically"];
             reconnectsAutomatically =  [decoder decodeBoolForKey: @"reconnectsAutomatically"];

File Framework/Sources/PGTSConnectionQueries.m

 #import <PGTS/PGTSAdditions.h>
 #import <PGTS/PGTSFunctions.h>
 #import <PGTS/PGTSConnectionDelegate.h>
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import <Log4Cocoa/Log4Cocoa.h>
 
 
 - (PGTSResultSet *) executePrepareQuery: (NSString *) queryString name: (NSString *) aName parameterTypes: (Oid *) types
 {
     int count = [queryString PGTSParameterCount];
-    [parameterCounts setTag: count forKey: aName];
+    [parameterCounts setInteger: count forKey: aName];
     return [self resultFromProxy: returningWorkerProxy status: 
         [returningWorkerProxy prepareQuery2: queryString name: aName parameterCount: count 
                              parameterTypes: types messageDelegate: NO]];
 - (PGTSResultSet *) executePreparedQuery: (NSString *) aName parameters: (id) p1, ...
 {
     NSArray* parameters = nil;
-    StdargToNSArray (parameters, [parameterCounts tagForKey: aName], p1, YES);
+    StdargToNSArray (parameters, [parameterCounts integerForKey: aName], p1, YES);
     return [self executePreparedQuery: aName parameterArray: parameters];
 }
 
 - (PGTSResultSet *) executePreparedQuery: (NSString *) aName parameterArray: (NSArray *) parameters
 {
-    log4AssertValueReturn ([parameters count] == [parameterCounts tagForKey: aName], nil,
+    log4AssertValueReturn ([parameters count] == [parameterCounts integerForKey: aName], nil,
 						   @"Expected to know parameter count beforehand (parameters: %@ expected count: %d).",
-						   parameters, [parameterCounts tagForKey: aName]);
+						   parameters, [parameterCounts integerForKey: aName]);
     return [self resultFromProxy: returningWorkerProxy status: 
         [returningWorkerProxy sendPreparedQuery2: aName parameterArray: parameters
                                  messageDelegate: NO]];
     if (CheckExceptionTable (self, kPGTSRaiseForAsync))
     {
         int count = [queryString PGTSParameterCount];
-        [parameterCounts setTag: count forKey: aName];
+        [parameterCounts setInteger: count forKey: aName];
         rval = [self sendResultsToDelegate: 
             [returningWorkerProxy prepareQuery2: queryString name: aName 
                                  parameterCount: count parameterTypes: types messageDelegate: NO]];
 - (int) sendPreparedQuery: (NSString *) aName parameters: (id) p1, ...
 {
     NSArray* parameters = nil;
-    StdargToNSArray (parameters, [parameterCounts tagForKey: aName], p1, YES);
+    StdargToNSArray (parameters, [parameterCounts integerForKey: aName], p1, YES);
     return [self sendPreparedQuery: aName parameterArray: parameters];
 }
 
     int rval = -1;
     if (CheckExceptionTable (self, kPGTSRaiseForAsync))
     {
-		log4AssertValueReturn ([parameters count] == [parameterCounts tagForKey: aName], -1, 
+		log4AssertValueReturn ([parameters count] == [parameterCounts integerForKey: aName], -1, 
 							   @"Expected to know parameter count beforehand (parameters: %@ expected count: %d).",
-							   parameters, [parameterCounts tagForKey: aName]);
+							   parameters, [parameterCounts integerForKey: aName]);
         rval = [self sendResultsToDelegate: 
             [returningWorkerProxy sendPreparedQuery2: aName parameterArray: parameters
                                      messageDelegate: NO]];

File Framework/Sources/PGTSDatabaseInfo.h

 
 @class PGTSTableInfo;
 @class PGTSTypeInfo;
-@class TSIndexDictionary;
 @class PGTSConnectionPoolItem;
 @class PGTSRoleDescription;
 
 
 @interface PGTSDatabaseInfo : PGTSAbstractInfo 
 {
-    TSIndexDictionary* tables;
-    TSIndexDictionary* types;
+    id tables;
+    id types;
     NSMutableDictionary* schemas;
     PGTSConnectionPoolItem* poolItem;
     NSString* connectionPoolKey;

File Framework/Sources/PGTSDatabaseInfo.m

 #import "PGTSAdditions.h"
 #import "PGTSFunctions.h"
 #import "PGTSRoleDescription.h"
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import <Log4Cocoa/Log4Cocoa.h>
 
 
 {
     if ((self = [super initWithConnection: aConnection]))
     {
-        tables = [[TSIndexDictionary alloc] init];
-        types  = [[TSIndexDictionary alloc] init];
+        tables = [MKCDictionary dictionaryWithKeyType: kMKCCollectionTypeInteger 
+                                            valueType: kMKCCollectionTypeObject];
+        types  = [MKCDictionary dictionaryWithKeyType: kMKCCollectionTypeInteger 
+                                            valueType: kMKCCollectionTypeObject];
         schemas = [[NSMutableDictionary alloc] init];
         roles = [[NSMutableDictionary alloc] init];
     }

File Framework/Sources/PGTSForeignKeyDescription.m

 #import "PGTSTableInfo.h"
 #import "PGTSFieldInfo.h"
 #import "PGTSFunctions.h"
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 
 
-static TSNonRetainedObjectSet* gForeignKeys;
+static id gForeignKeys;
 
 @implementation PGTSForeignKeyDescription
 
     if (NO == tooLate)
     {
         tooLate = YES;
-        gForeignKeys = [[TSNonRetainedObjectSet alloc] init];
+        gForeignKeys = [[MKCHashTable alloc] init];
     }
 }
 

File Framework/Sources/PGTSLockNotifier.m

 // $Id$
 //
 
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import <PGTS/postgresql/libpq-fe.h>
 #import "PGTSIndexInfo.h"
 #import "PGTSLockNotifier.h"

File Framework/Sources/PGTSModificationNotifier.h

 
 @class PGTSTableInfo;
 @class PGTSConnection;
-@class TSIndexDictionary;
 
 
 enum PGTSTableOperation 

File Framework/Sources/PGTSModificationNotifier.m

 
 
 #import <Foundation/Foundation.h>
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import <Log4Cocoa/Log4Cocoa.h>
 #import <PGTS/postgresql/libpq-fe.h>
 #import "PGTSModificationNotifier.h"

File Framework/Sources/PGTSNotifier.h

 //
 
 #import <Foundation/Foundation.h>
-@class TSIndexDictionary;
 @class PGTSTableInfo;
 @class PGTSConnection;
 
     PGTSConnection* connection;
     NSCountedSet* observedTables;
 	NSCountedSet* postedNotifications;
-    TSIndexDictionary* notificationNames; //From Postgres
+    id notificationNames; //From Postgres
 	NSMutableDictionary* lastChecks;
     NSArray* sentNotifications;
     id delegate;

File Framework/Sources/PGTSNotifier.m

 //
 
 #import <PGTS/postgresql/libpq-fe.h>
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import "PGTSNotifier.h"
 #import "PGTSFunctions.h"
 #import "PGTSConnection.h"
     if ((self = [super init]))
     {
         observedTables = [[NSCountedSet alloc] init];
-        notificationNames = [[TSIndexDictionary alloc] init];
+        notificationNames = [MKCDictionary copyDictionaryWithKeyType: kMKCCollectionTypeInteger 
+                                                           valueType: kMKCCollectionTypeObject];
         observesSelfGenerated = NO;
 		lastChecks = [[NSMutableDictionary alloc] init];
 		postedNotifications = [[NSCountedSet alloc] init];

File Framework/Sources/PGTSResultSet.h

 @class PGTSResultRow;
 @class PGTSTableInfo;
 @class PGTSFieldInfo;
-@class TSObjectTagDictionary;
 
 
 @interface PGTSResultSet : NSObject {
 	int currentRow, fields, tuples;
     unsigned int serial;
 	
-    TSObjectTagDictionary* fieldnames;
+    id fieldnames;
     
     BOOL determinesFieldClassesAutomatically;
     Class rowClass;

File Framework/Sources/PGTSResultSet.m

 #import <stdlib.h>
 #import <limits.h>
 #import <PGTS/postgresql/libpq-fe.h> 
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import <Log4Cocoa/Log4Cocoa.h>
 #import "PGTSResultSet.h"
 #import "PGTSResultSetPrivate.h"
 
 - (id) valueForFieldNamed: (NSString *) aName row: (int) rowIndex
 {
-    unsigned int columnIndex = [fieldnames tagForKey: aName];
+    unsigned int columnIndex = [fieldnames integerForKey: aName];
     if (NSNotFound == columnIndex)
     {
         [[NSException exceptionWithName: kPGTSFieldNotFoundException reason: nil 
 
 - (unsigned int) indexOfFieldNamed: (NSString *) aName
 {
-    return [fieldnames tagForKey: aName];
+    return [fieldnames integerForKey: aName];
 }
 
 - (int) currentRow
  */
 - (BOOL) setClass: (Class) aClass forFieldNamed: (NSString *) aName
 {
-    return [self setClass: aClass forFieldAtIndex: [fieldnames tagForKey: aName]];
+    return [self setClass: aClass forFieldAtIndex: [fieldnames integerForKey: aName]];
 }
 
 - (BOOL) setClass: (Class) aClass forFieldAtIndex: (int) fieldIndex
 
 - (Class) classForFieldNamed: (NSString *) aName
 {
-	return [self classForFieldAtIndex: [fieldnames tagForKey: aName]];
+	return [self classForFieldAtIndex: [fieldnames integerForKey: aName]];
 }
 
 - (Class) classForFieldAtIndex: (int) fieldIndex
 {
     TSEnumerate (fieldname, e, [fieldnames keyEnumerator])
     {
-        id value = [self valueForFieldAtIndex: [fieldnames tagForKey: fieldname] row: rowIndex];
+        id value = [self valueForFieldAtIndex: [fieldnames integerForKey: fieldname] row: rowIndex];
         if (nil == value)
         {
             value = anObject;
     serial = _serial;
     
     
-    fieldnames = [TSObjectTagDictionary dictionaryWithCapacity: fields];
+    fieldnames = [MKCDictionary copyDictionaryWithCapacity: fields 
+                                                   keyType: kMKCCollectionTypeObject 
+                                                 valueType: kMKCCollectionTypeInteger];
     for (int i = 0; i < fields; i++)
     {
         //FIXME: workaround for what seems to be a bug in libpq
             fields = i;
             break;
         }
-        [fieldnames setTag: i forKey: [NSString stringWithUTF8String: fname]];
+        [fieldnames setInteger: i forKey: [NSString stringWithUTF8String: fname]];
     }
     
     determinesFieldClassesAutomatically = YES;
 
 - (PGTSTableInfo *) tableInfoForFieldNamed: (NSString *) aName
 {
-    return [self tableInfoForFieldAtIndex: [fieldnames tagForKey: aName]];
+    return [self tableInfoForFieldAtIndex: [fieldnames integerForKey: aName]];
 }
 
 - (PGTSTableInfo *) tableInfoForFieldAtIndex: (unsigned int) fieldIndex
 
 - (Oid) tableOidForFieldNamed: (NSString *) aName
 {
-    return [self tableOidForFieldAtIndex: [fieldnames tagForKey: aName]];
+    return [self tableOidForFieldAtIndex: [fieldnames integerForKey: aName]];
 }
 
 - (Oid) tableOidForFieldAtIndex: (unsigned int) index
 
 - (Oid) typeOidForFieldNamed: (NSString *) aName
 {
-    return [self typeOidForFieldAtIndex: [fieldnames tagForKey: aName]];
+    return [self typeOidForFieldAtIndex: [fieldnames integerForKey: aName]];
 }
 
 - (PGTSFieldInfo *) fieldInfoForFieldNamed: (NSString *) aName
 {
-    return [self fieldInfoForFieldAtIndex: [fieldnames tagForKey: aName]];
+    return [self fieldInfoForFieldAtIndex: [fieldnames integerForKey: aName]];
 }
 
 - (PGTSFieldInfo *) fieldInfoForFieldAtIndex: (unsigned int) anIndex

File Framework/Sources/PGTSRoleDescription.h

 // $Id$
 //
 
-@class TSIndexDictionary;
-
 #import <Foundation/Foundation.h>
 #import <PGTS/PGTSAbstractInfo.h>
 #import <PGTS/PGTSAbstractObjectDescription.h>
 
 @interface PGTSRoleDescription : PGTSAbstractObjectDescription
 {
-    TSIndexDictionary* roles;
+    id roles;
 }
 @end
 

File Framework/Sources/PGTSRoleDescription.m

 // $Id$
 //
 
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 #import <PGTS/postgresql/libpq-fe.h> 
 #import "PGTSRoleDescription.h"
 #import "PGTSFunctions.h"
     
     if (nil == roles)
     {
-        roles = [[TSIndexDictionary alloc] init];
+        roles = [MKCDictionary dictionaryWithKeyType: kMKCCollectionTypeInteger valueType: kMKCCollectionTypeObject];
         NSString* query = @"SELECT r.oid, r.rolname FROM pg_roles r INNER JOIN pg_authid a WHERE r.oid = a.member AND a.roleid = $1";
         PGTSResultSet* res = [connection executeQuery: query parameters: PGTSOidAsObject ([self oid])];
         while ([res advanceRow])

File Framework/Sources/PGTSSchemaDescriptor.h

 
 @class PGTSTableInfo;
 @class PGTSTypeInfo;
-@class TSIndexDictionary;
 @class PGTSConnectionPoolItem;
 
 

File Framework/Sources/PGTSTableInfo.h

 @class PGTSDatabaseInfo;
 @class PGTSIndexInfo;
 @class PGTSResultSet;
-@class TSIndexDictionary;
 
 
 @interface PGTSTableInfo : PGTSAbstractClassInfo 
 {
     unsigned int fieldCount;
-    TSIndexDictionary* fields;
+    id fields;
     NSArray* uniqueIndexes;
     PGTSDatabaseInfo* database;
 

File Framework/Sources/PGTSTableInfo.m

 #import "PGTSAdditions.h"
 #import "PGTSDatabaseInfo.h"
 #import "PGTSForeignKeyDescription.h"
-#import <TSDataTypes/TSDataTypes.h>
+#import <MKCCollections/MKCCollections.h>
 
 
 /** 
     if ((self = [super initWithConnection: aConnection]))
     {
         fieldCount = NSNotFound;
-        fields = [[TSIndexDictionary alloc] init];
-
+        fields = [MKCDictionary copyDictionaryWithKeyType: kMKCCollectionTypeInteger
+                                                valueType: kMKCCollectionTypeObject];
         hasForeignKeys = NO;
         foreignKeys = [[NSMutableSet alloc] init];
         hasReferencingForeignKeys = NO;

File Framework/xcconfig/basic.xcconfig

 GCC_SYMBOLS_PRIVATE_EXTERN = NO
 GCC_TREAT_WARNINGS_AS_ERRORS = YES
 GCC_USE_GCC3_PFE_SUPPORT = YES
-HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR) $(BUILT_PRODUCTS_DIR)/PGTS-PostgreSQL $(SRCROOT)/../Dependencies/TSDataTypes/build/$(BUILD_STYLE) $(SRCROOT)/Contrib/Log4Cocoa/build/$(BUILD_STYLE) .
-LIBRARY_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/PGTS-PostgreSQL/universal/lib $(BUILT_PRODUCTS_DIR) $(SRCROOT)/../Dependencies/TSDataTypes/build/$(BUILD_STYLE) $(SRCROOT)/Contrib/Log4Cocoa/build/$(BUILD_STYLE) $(SDKROOT_$(arch))/usr/lib
+HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR) $(BUILT_PRODUCTS_DIR)/PGTS-PostgreSQL $(SRCROOT)/../../MKCCollections/build/$(BUILD_STYLE) $(SRCROOT)/Contrib/Log4Cocoa/build/$(BUILD_STYLE) .
+LIBRARY_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/PGTS-PostgreSQL/universal/lib $(BUILT_PRODUCTS_DIR) $(SRCROOT)/../../MKCCollections/build/$(BUILD_STYLE) $(SRCROOT)/Contrib/Log4Cocoa/build/$(BUILD_STYLE) $(SDKROOT_$(arch))/usr/lib
 FRAMEWORK_SEARCH_PATHS = $(SDKROOT_$(arch))/System/Library/Frameworks $(BUILT_PRODUCTS_DIR)
 LINK_WITH_STANDARD_LIBRARIES = YES
 SKIP_INSTALL = YES