diff options
5 files changed, 196 insertions, 24 deletions
diff --git a/Frameworks/PostgresKit/PostgresKit.xcodeproj/project.pbxproj b/Frameworks/PostgresKit/PostgresKit.xcodeproj/project.pbxproj index b0e4079d..46a7d4b6 100644 --- a/Frameworks/PostgresKit/PostgresKit.xcodeproj/project.pbxproj +++ b/Frameworks/PostgresKit/PostgresKit.xcodeproj/project.pbxproj @@ -14,6 +14,8 @@ 1724CC9315FB4CC200AB2291 /* FLXTimeTZ.m in Sources */ = {isa = PBXBuildFile; fileRef = 1724CC9115FB4CC200AB2291 /* FLXTimeTZ.m */; }; 1724CD1515FB69EC00AB2291 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17E595F114F3058F0054EE08 /* Foundation.framework */; }; 1724CD1815FB6A0500AB2291 /* PostgresKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* PostgresKit.framework */; }; + 1724CD5915FB8A3300AB2291 /* FLXTimeInterval.h in Headers */ = {isa = PBXBuildFile; fileRef = 1724CD5715FB8A3300AB2291 /* FLXTimeInterval.h */; }; + 1724CD5A15FB8A3300AB2291 /* FLXTimeInterval.m in Sources */ = {isa = PBXBuildFile; fileRef = 1724CD5815FB8A3300AB2291 /* FLXTimeInterval.m */; }; 1731F02B15EE09E000D973EB /* FLXPostgresConnectionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 1731F02915EE09E000D973EB /* FLXPostgresConnectionParameters.h */; }; 1731F02C15EE09E000D973EB /* FLXPostgresConnectionParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 1731F02A15EE09E000D973EB /* FLXPostgresConnectionParameters.m */; }; 1731F10815F1A52B00D973EB /* FLXPostgresTypeDateTimeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1731F10615F1A52B00D973EB /* FLXPostgresTypeDateTimeHandler.h */; }; @@ -74,6 +76,8 @@ 1724CC9115FB4CC200AB2291 /* FLXTimeTZ.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLXTimeTZ.m; sourceTree = "<group>"; }; 1724CD0415FB68E800AB2291 /* Tests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; 1724CD0515FB68E800AB2291 /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Tests-Info.plist"; path = "Resources/Tests-Info.plist"; sourceTree = "<group>"; }; + 1724CD5715FB8A3300AB2291 /* FLXTimeInterval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLXTimeInterval.h; sourceTree = "<group>"; }; + 1724CD5815FB8A3300AB2291 /* FLXTimeInterval.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLXTimeInterval.m; sourceTree = "<group>"; }; 1731F02915EE09E000D973EB /* FLXPostgresConnectionParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLXPostgresConnectionParameters.h; sourceTree = "<group>"; }; 1731F02A15EE09E000D973EB /* FLXPostgresConnectionParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLXPostgresConnectionParameters.m; sourceTree = "<group>"; }; 1731F10615F1A52B00D973EB /* FLXPostgresTypeDateTimeHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLXPostgresTypeDateTimeHandler.h; sourceTree = "<group>"; }; @@ -227,6 +231,8 @@ children = ( 1724CC9015FB4CC200AB2291 /* FLXTimeTZ.h */, 1724CC9115FB4CC200AB2291 /* FLXTimeTZ.m */, + 1724CD5715FB8A3300AB2291 /* FLXTimeInterval.h */, + 1724CD5815FB8A3300AB2291 /* FLXTimeInterval.m */, ); name = Domain; sourceTree = "<group>"; @@ -395,6 +401,7 @@ 1731F10815F1A52B00D973EB /* FLXPostgresTypeDateTimeHandler.h in Headers */, 1731F52E15F48BA500D973EB /* FLXPostgresError.h in Headers */, 1724CC9215FB4CC200AB2291 /* FLXTimeTZ.h in Headers */, + 1724CD5915FB8A3300AB2291 /* FLXTimeInterval.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -508,6 +515,7 @@ 1731F10915F1A52B00D973EB /* FLXPostgresTypeDateTimeHandler.m in Sources */, 1731F52F15F48BA500D973EB /* FLXPostgresError.m in Sources */, 1724CC9315FB4CC200AB2291 /* FLXTimeTZ.m in Sources */, + 1724CD5A15FB8A3300AB2291 /* FLXTimeInterval.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Frameworks/PostgresKit/Source/FLXPostgresConnectionPrivateAPI.h b/Frameworks/PostgresKit/Source/FLXPostgresConnectionPrivateAPI.h index 8f0e6a6e..c00f040a 100644 --- a/Frameworks/PostgresKit/Source/FLXPostgresConnectionPrivateAPI.h +++ b/Frameworks/PostgresKit/Source/FLXPostgresConnectionPrivateAPI.h @@ -21,8 +21,9 @@ // the License. #import "FLXPostgresConnection.h" +#import "FLXTimeInterval.h" -@interface FLXPostgresConnection (FLXPostgresConnectionPrivateAPI) +@interface FLXPostgresConnection () - (PGconn *)postgresConnection; @@ -34,4 +35,11 @@ @end +@interface FLXTimeInterval () + +- (id)initWithInterval:(const PGinterval *)interval; + +@end + + diff --git a/Frameworks/PostgresKit/Source/FLXPostgresTypes.h b/Frameworks/PostgresKit/Source/FLXPostgresTypes.h index b8e70a6c..0f57daae 100644 --- a/Frameworks/PostgresKit/Source/FLXPostgresTypes.h +++ b/Frameworks/PostgresKit/Source/FLXPostgresTypes.h @@ -30,22 +30,22 @@ typedef Oid FLXPostgresOid; enum { // BOOL - FLXPostgresOidBool = 16, // NumberHandler - FLXPostgresOidData = 17, // Currently not supported + FLXPostgresOidBool = 16, // NumberHandler => NSNumber + FLXPostgresOidData = 17, // Currently not supported // Text - FLXPostgresOidName = 19, // StringHandler + FLXPostgresOidName = 19, // StringHandler => NSString // Integers - FLXPostgresOidInt8 = 20, // NumberHandler - FLXPostgresOidInt2 = 21, // NumberHandler - FLXPostgresOidInt4 = 23, // NumberHandler + FLXPostgresOidInt8 = 20, // NumberHandler => NSNumber + FLXPostgresOidInt2 = 21, // NumberHandler => NSNumber + FLXPostgresOidInt4 = 23, // NumberHandler => NSNumber // Text - FLXPostgresOidText = 25, // StringHandler + FLXPostgresOidText = 25, // StringHandler => NSString // OID - FLXPostgresOidOid = 26, // Currently not supported + FLXPostgresOidOid = 26, // Currently not supported // XML FLXPostgresOidXML = 142, // Currently not supported @@ -58,14 +58,14 @@ enum FLXPostgresOidPolygon = 604, // Currently not supported // Float - FLXPostgresOidFloat4 = 700, // NumberHandler - FLXPostgresOidFloat8 = 701, // NumberHandler + FLXPostgresOidFloat4 = 700, // NumberHandler => NSNumber + FLXPostgresOidFloat8 = 701, // NumberHandler => NSNumber // ABS Time - FLXPostgresOidAbsTime = 702, // DateHandler + FLXPostgresOidAbsTime = 702, // DateHandler => NSDate // What! - FLXPostgresOidUnknown = 705, // StringHandler + FLXPostgresOidUnknown = 705, // StringHandler => NSString // Geometric FLXPostgresOidCircle = 718, // Currently not supported @@ -80,7 +80,7 @@ enum // Arrays FLXPostgresOidArrayBool = 1000, // Currently not supported - FLXPostgresOidArrayData = 1001, // Currently not supported + FLXPostgresOidArrayData = 1001, // Currently not supported FLXPostgresOidArrayChar = 1002, // Currently not supported FLXPostgresOidArrayName = 1003, // Currently not supported FLXPostgresOidArrayInt2 = 1005, // Currently not supported @@ -94,22 +94,22 @@ enum FLXPostgresOidArrayIPAddr = 1041, // Currently not supported // Text - FLXPostgresOidChar = 1042, // StringHandler - FLXPostgresOidVarchar = 1043, // StringHandler + FLXPostgresOidChar = 1042, // StringHandler => NSString + FLXPostgresOidVarchar = 1043, // StringHandler => NSString // Date/time - FLXPostgresOidDate = 1082, // DateHandler - FLXPostgresOidTime = 1083, // DateHandler - FLXPostgresOidTimestamp = 1114, // DateHandler - FLXPostgresOidTimestampTZ = 1184, // DateHandler - FLXPostgresOidInterval = 1186, - FLXPostgresOidTimeTZ = 1266, // DateHandler + FLXPostgresOidDate = 1082, // DateHandler => NSDate + FLXPostgresOidTime = 1083, // DateHandler => NSDate + FLXPostgresOidTimestamp = 1114, // DateHandler => NSDate + FLXPostgresOidTimestampTZ = 1184, // DateHandler => FLXTimeTZ + FLXPostgresOidInterval = 1186, // DateHandler => FLXTimeInterval + FLXPostgresOidTimeTZ = 1266, // DateHandler => FLXTimeTZ // Binary FLXPostgresOidBit = 1560, // Currently not supported FLXPostgresOidVarbit = 1562, // Currently not supported // Numeric - FLXPostgresOidNumeric = 1700, // StringHandler - FLXPostgresOidMax = 1700 // Currently not supported + FLXPostgresOidNumeric = 1700, // StringHandler => NSString + FLXPostgresOidMax = 1700 // Currently not supported }; diff --git a/Frameworks/PostgresKit/Source/FLXTimeInterval.h b/Frameworks/PostgresKit/Source/FLXTimeInterval.h new file mode 100644 index 00000000..09fe4bf9 --- /dev/null +++ b/Frameworks/PostgresKit/Source/FLXTimeInterval.h @@ -0,0 +1,85 @@ +// +// $Id$ +// +// FLXTimeInterval.h +// PostgresKit +// +// Created by Stuart Connolly (stuconnolly.com) on September 9, 2012. +// Copyright (c) 2012 Stuart Connolly. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +/** + * @class FLXTimeInterval FLXTimeInterval.h + * + * @author Stuart Connolly http://stuconnolly.com + * + * Simple wrapper around libpqtypes' PQinterval structure. + */ +@interface FLXTimeInterval : NSObject +{ + NSUInteger _microseconds; + NSUInteger _seconds; + NSUInteger _minutes; + NSUInteger _hours; + NSUInteger _days; + NSUInteger _months; + NSUInteger _years; +} + +/** + * @property microseconds The number of microseconds. + */ +@property (readonly) NSUInteger microseconds; + +/** + * @property seconds The number of seconds. + */ +@property (readonly) NSUInteger seconds; + +/** + * @property minutes The number of minutes. + */ +@property (readonly) NSUInteger minutes; + +/** + * @property hours The number of hours. + */ +@property (readonly) NSUInteger hours; + +/** + * @property days The number of days. + */ +@property (readonly) NSUInteger days; + +/** + * @property months The number of months. + */ +@property (readonly) NSUInteger months; + +/** + * @property years The number of years. + */ +@property (readonly) NSUInteger years; + + +@end diff --git a/Frameworks/PostgresKit/Source/FLXTimeInterval.m b/Frameworks/PostgresKit/Source/FLXTimeInterval.m new file mode 100644 index 00000000..2b677a2c --- /dev/null +++ b/Frameworks/PostgresKit/Source/FLXTimeInterval.m @@ -0,0 +1,71 @@ +// +// $Id$ +// +// FLXTimeInterval.m +// PostgresKit +// +// Created by Stuart Connolly (stuconnolly.com) on September 9, 2012. +// Copyright (c) 2012 Stuart Connolly. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +#import "FLXTimeInterval.h" +#import "FLXPostgresConnectionPrivateAPI.h" + +@implementation FLXTimeInterval + +@synthesize microseconds = _microseconds; +@synthesize seconds = _seconds; +@synthesize minutes = _minutes; +@synthesize hours = _hours; +@synthesize days = _days; +@synthesize months = _months; +@synthesize years = _years; + +#pragma mark - + +- (id)initWithInterval:(const PGinterval *)interval +{ + if ((self = [super init])) { + if (interval) { + _microseconds = interval->usecs; + _seconds = interval->secs; + _minutes = interval->mins; + _hours = interval->hours; + _days = interval->days; + _months = interval->mons; + _years = interval->years; + } + } + + return self; +} + +#pragma mark - + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%d years, %d months, %d days, %d hours, %d minutes, %d seconds and %d microseconds", + _years, _months, _days, _hours, _minutes, _seconds, _microseconds]; +} + +@end |