diff options
Diffstat (limited to 'Classes/FMResultSet.h')
-rw-r--r-- | Classes/FMResultSet.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/Classes/FMResultSet.h b/Classes/FMResultSet.h new file mode 100644 index 0000000..306676e --- /dev/null +++ b/Classes/FMResultSet.h @@ -0,0 +1,93 @@ +#import <Foundation/Foundation.h> +#import "sqlite3.h" + +#ifndef __has_feature // Optional. +#define __has_feature(x) 0 // Compatibility with non-clang compilers. +#endif + +#ifndef NS_RETURNS_NOT_RETAINED +#if __has_feature(attribute_ns_returns_not_retained) +#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) +#else +#define NS_RETURNS_NOT_RETAINED +#endif +#endif + +@class FMDatabase; +@class FMStatement; + +@interface FMResultSet : NSObject { + FMDatabase *parentDB; + FMStatement *statement; + + NSString *query; + NSMutableDictionary *columnNameToIndexMap; + BOOL columnNamesSetup; +} + + ++ (id)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB; + +- (void)close; + +- (NSString *)query; +- (void)setQuery:(NSString *)value; + +- (FMStatement *)statement; +- (void)setStatement:(FMStatement *)value; + +- (void)setParentDB:(FMDatabase *)newDb; + +- (BOOL)next; +- (BOOL)hasAnotherRow; + +- (int)columnIndexForName:(NSString*)columnName; +- (NSString*)columnNameForIndex:(int)columnIdx; + +- (int)intForColumn:(NSString*)columnName; +- (int)intForColumnIndex:(int)columnIdx; + +- (long)longForColumn:(NSString*)columnName; +- (long)longForColumnIndex:(int)columnIdx; + +- (long long int)longLongIntForColumn:(NSString*)columnName; +- (long long int)longLongIntForColumnIndex:(int)columnIdx; + +- (BOOL)boolForColumn:(NSString*)columnName; +- (BOOL)boolForColumnIndex:(int)columnIdx; + +- (double)doubleForColumn:(NSString*)columnName; +- (double)doubleForColumnIndex:(int)columnIdx; + +- (NSString*)stringForColumn:(NSString*)columnName; +- (NSString*)stringForColumnIndex:(int)columnIdx; + +- (NSDate*)dateForColumn:(NSString*)columnName; +- (NSDate*)dateForColumnIndex:(int)columnIdx; + +- (NSData*)dataForColumn:(NSString*)columnName; +- (NSData*)dataForColumnIndex:(int)columnIdx; + +- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx; +- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName; + +// returns one of NSNumber, NSString, NSData, or NSNull +- (id)objectForColumnIndex:(int)columnIdx; +- (id)objectForColumnName:(NSString*)columnName; + +/* +If you are going to use this data after you iterate over the next row, or after you close the +result set, make sure to make a copy of the data first (or just use dataForColumn:/dataForColumnIndex:) +If you don't, you're going to be in a world of hurt when you try and use the data. +*/ +- (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED; +- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED; + + +- (BOOL)columnIndexIsNull:(int)columnIdx; +- (BOOL)columnIsNull:(NSString*)columnName; + +- (void)kvcMagic:(id)object; +- (NSDictionary *)resultDict; + +@end |