FMResultSet.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #import <Foundation/Foundation.h>
  2. #import "sqlite3.h"
  3. #ifndef __has_feature // Optional.
  4. #define __has_feature(x) 0 // Compatibility with non-clang compilers.
  5. #endif
  6. #ifndef NS_RETURNS_NOT_RETAINED
  7. #if __has_feature(attribute_ns_returns_not_retained)
  8. #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
  9. #else
  10. #define NS_RETURNS_NOT_RETAINED
  11. #endif
  12. #endif
  13. @class FMDatabase;
  14. @class FMStatement;
  15. @interface FMResultSet : NSObject {
  16. FMDatabase *_parentDB;
  17. FMStatement *_statement;
  18. NSString *_query;
  19. NSMutableDictionary *_columnNameToIndexMap;
  20. }
  21. @property (atomic, retain) NSString *query;
  22. @property (readonly) NSMutableDictionary *columnNameToIndexMap;
  23. @property (atomic, retain) FMStatement *statement;
  24. + (id)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB;
  25. - (void)close;
  26. - (void)setParentDB:(FMDatabase *)newDb;
  27. - (BOOL)next;
  28. - (BOOL)hasAnotherRow;
  29. - (int)columnCount;
  30. - (int)columnIndexForName:(NSString*)columnName;
  31. - (NSString*)columnNameForIndex:(int)columnIdx;
  32. - (int)intForColumn:(NSString*)columnName;
  33. - (int)intForColumnIndex:(int)columnIdx;
  34. - (long)longForColumn:(NSString*)columnName;
  35. - (long)longForColumnIndex:(int)columnIdx;
  36. - (long long int)longLongIntForColumn:(NSString*)columnName;
  37. - (long long int)longLongIntForColumnIndex:(int)columnIdx;
  38. - (unsigned long long int)unsignedLongLongIntForColumn:(NSString*)columnName;
  39. - (unsigned long long int)unsignedLongLongIntForColumnIndex:(int)columnIdx;
  40. - (BOOL)boolForColumn:(NSString*)columnName;
  41. - (BOOL)boolForColumnIndex:(int)columnIdx;
  42. - (double)doubleForColumn:(NSString*)columnName;
  43. - (double)doubleForColumnIndex:(int)columnIdx;
  44. - (NSString*)stringForColumn:(NSString*)columnName;
  45. - (NSString*)stringForColumnIndex:(int)columnIdx;
  46. - (NSDate*)dateForColumn:(NSString*)columnName;
  47. - (NSDate*)dateForColumnIndex:(int)columnIdx;
  48. - (NSData*)dataForColumn:(NSString*)columnName;
  49. - (NSData*)dataForColumnIndex:(int)columnIdx;
  50. - (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx;
  51. - (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName;
  52. // returns one of NSNumber, NSString, NSData, or NSNull
  53. - (id)objectForColumnName:(NSString*)columnName;
  54. - (id)objectForColumnIndex:(int)columnIdx;
  55. - (id)objectForKeyedSubscript:(NSString *)columnName;
  56. - (id)objectAtIndexedSubscript:(int)columnIdx;
  57. /*
  58. If you are going to use this data after you iterate over the next row, or after you close the
  59. result set, make sure to make a copy of the data first (or just use dataForColumn:/dataForColumnIndex:)
  60. If you don't, you're going to be in a world of hurt when you try and use the data.
  61. */
  62. - (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED;
  63. - (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;
  64. - (BOOL)columnIndexIsNull:(int)columnIdx;
  65. - (BOOL)columnIsNull:(NSString*)columnName;
  66. /* Returns a dictionary of the row results mapped to case sensitive keys of the column names. */
  67. - (NSDictionary*)resultDictionary;
  68. /* Please use resultDictionary instead. Also, beware that resultDictionary is case sensitive! */
  69. - (NSDictionary*)resultDict __attribute__ ((deprecated));
  70. - (void)kvcMagic:(id)object;
  71. @end