From 42d3594b31392b25ccb4907a10c600372b7cde4f Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Sun, 9 Sep 2012 00:35:53 +0000 Subject: Add a time interval wrapper. --- .../Source/FLXPostgresConnectionPrivateAPI.h | 10 ++- Frameworks/PostgresKit/Source/FLXPostgresTypes.h | 46 ++++++------ Frameworks/PostgresKit/Source/FLXTimeInterval.h | 85 ++++++++++++++++++++++ Frameworks/PostgresKit/Source/FLXTimeInterval.m | 71 ++++++++++++++++++ 4 files changed, 188 insertions(+), 24 deletions(-) create mode 100644 Frameworks/PostgresKit/Source/FLXTimeInterval.h create mode 100644 Frameworks/PostgresKit/Source/FLXTimeInterval.m (limited to 'Frameworks/PostgresKit/Source') 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 -- cgit v1.2.3