From 8f01f54b953653ea7e9c2c4b796135978acaa5d1 Mon Sep 17 00:00:00 2001
From: lpw
Date: Wed, 26 Jun 2024 17:07:02 +0800
Subject: [PATCH] 提交2.9.1

---
 frameworks/FMDB.framework/Headers/FMResultSet.h |  282 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 176 insertions(+), 106 deletions(-)

diff --git a/frameworks/FMDB.framework/Headers/FMResultSet.h b/frameworks/FMDB.framework/Headers/FMResultSet.h
old mode 100755
new mode 100644
index af0433b..0832451
--- a/frameworks/FMDB.framework/Headers/FMResultSet.h
+++ b/frameworks/FMDB.framework/Headers/FMResultSet.h
@@ -1,5 +1,7 @@
 #import <Foundation/Foundation.h>
 
+NS_ASSUME_NONNULL_BEGIN
+
 #ifndef __has_feature      // Optional.
 #define __has_feature(x) 0 // Compatibility with non-clang compilers.
 #endif
@@ -15,20 +17,26 @@
 @class FMDatabase;
 @class FMStatement;
 
-/** Represents the results of executing a query on an `<FMDatabase>`.
+/** Types for columns in a result set.
+ */
+typedef NS_ENUM(int, SqliteValueType) {
+    SqliteValueTypeInteger = 1,
+    SqliteValueTypeFloat   = 2,
+    SqliteValueTypeText    = 3,
+    SqliteValueTypeBlob    = 4,
+    SqliteValueTypeNull    = 5
+};
+
+/** Represents the results of executing a query on an @c FMDatabase .
  
- ### See also
+ See also
  
- - `<FMDatabase>`
+ - @c FMDatabase 
  */
 
-@interface FMResultSet : NSObject {
-    FMDatabase          *_parentDB;
-    FMStatement         *_statement;
-    
-    NSString            *_query;
-    NSMutableDictionary *_columnNameToIndexMap;
-}
+@interface FMResultSet : NSObject
+
+@property (nonatomic, retain, nullable) FMDatabase *parentDB;
 
 ///-----------------
 /// @name Properties
@@ -36,7 +44,7 @@
 
 /** Executed query */
 
-@property (atomic, retain) NSString *query;
+@property (atomic, retain, nullable) NSString *query;
 
 /** `NSMutableDictionary` mapping column names to numeric index */
 
@@ -44,28 +52,15 @@
 
 /** `FMStatement` used by result set. */
 
-@property (atomic, retain) FMStatement *statement;
+@property (atomic, retain, nullable) FMStatement *statement;
 
 ///------------------------------------
-/// @name Creating and closing database
+/// @name Creating and closing a result set
 ///------------------------------------
-
-/** Create result set from `<FMStatement>`
- 
- @param statement A `<FMStatement>` to be performed
- 
- @param aDB A `<FMDatabase>` to be used
- 
- @return A `FMResultSet` on success; `nil` on failure
- */
-
-+ (instancetype)resultSetWithStatement:(FMStatement *)statement usingParentDatabase:(FMDatabase*)aDB;
 
 /** Close result set */
 
 - (void)close;
-
-- (void)setParentDB:(FMDatabase *)newDb;
 
 ///---------------------------------------
 /// @name Iterating through the result set
@@ -75,7 +70,7 @@
  
  You must always invoke `next` or `nextWithError` before attempting to access the values returned in a query, even if you're only expecting one.
 
- @return `YES` if row successfully retrieved; `NO` if end of result set reached
+ @return @c YES if row successfully retrieved; @c NO if end of result set reached
  
  @see hasAnotherRow
  */
@@ -93,15 +88,35 @@
  @see hasAnotherRow
  */
 
-- (BOOL)nextWithError:(NSError **)outErr;
+- (BOOL)nextWithError:(NSError * _Nullable __autoreleasing *)outErr;
+
+/** Perform SQL statement.
+
+ @return 'YES' if successful; 'NO' if not.
+
+ @see hasAnotherRow
+*/
+
+- (BOOL)step;
+
+/** Perform SQL statement.
+
+ @param outErr A 'NSError' object to receive any error object (if any).
+
+ @return 'YES' if successful; 'NO' if not.
+
+ @see hasAnotherRow
+*/
+
+- (BOOL)stepWithError:(NSError * _Nullable __autoreleasing *)outErr;
 
 /** Did the last call to `<next>` succeed in retrieving another row?
 
- @return `YES` if the last call to `<next>` succeeded in retrieving another record; `NO` if not.
- 
+ @return 'YES' if there is another row; 'NO' if not.
+
  @see next
  
- @warning The `hasAnotherRow` method must follow a call to `<next>`. If the previous database interaction was something other than a call to `next`, then this method may return `NO`, whether there is another row of data or not.
+ @warning The `hasAnotherRow` method must follow a call to `<next>`. If the previous database interaction was something other than a call to `next`, then this method may return @c NO, whether there is another row of data or not.
  */
 
 - (BOOL)hasAnotherRow;
@@ -115,11 +130,11 @@
  @return Integer value of the number of columns.
  */
 
-- (int)columnCount;
+@property (nonatomic, readonly) int columnCount;
 
 /** Column index for column name
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
  @return Zero-based index for column.
  */
@@ -130,16 +145,16 @@
 
  @param columnIdx Zero-based index for column.
 
- @return columnName `NSString` value of the name of the column.
+ @return columnName @c NSString  value of the name of the column.
  */
 
-- (NSString*)columnNameForIndex:(int)columnIdx;
+- (NSString * _Nullable)columnNameForIndex:(int)columnIdx;
 
 /** Result set integer value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return `int` value of the result set's column.
+ @return @c int  value of the result set's column.
  */
 
 - (int)intForColumn:(NSString*)columnName;
@@ -148,16 +163,16 @@
 
  @param columnIdx Zero-based index for column.
 
- @return `int` value of the result set's column.
+ @return @c int  value of the result set's column.
  */
 
 - (int)intForColumnIndex:(int)columnIdx;
 
-/** Result set `long` value for column.
+/** Result set @c long  value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return `long` value of the result set's column.
+ @return @c long  value of the result set's column.
  */
 
 - (long)longForColumn:(NSString*)columnName;
@@ -166,14 +181,14 @@
 
  @param columnIdx Zero-based index for column.
 
- @return `long` value of the result set's column.
+ @return @c long  value of the result set's column.
  */
 
 - (long)longForColumnIndex:(int)columnIdx;
 
 /** Result set `long long int` value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
  @return `long long int` value of the result set's column.
  */
@@ -191,7 +206,7 @@
 
 /** Result set `unsigned long long int` value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
  @return `unsigned long long int` value of the result set's column.
  */
@@ -209,7 +224,7 @@
 
 /** Result set `BOOL` value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
  @return `BOOL` value of the result set's column.
  */
@@ -227,7 +242,7 @@
 
 /** Result set `double` value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
  @return `double` value of the result set's column.
  
@@ -245,73 +260,81 @@
 
 - (double)doubleForColumnIndex:(int)columnIdx;
 
-/** Result set `NSString` value for column.
+/** Result set @c NSString  value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return `NSString` value of the result set's column.
+ @return String value of the result set's column.
  
  */
 
-- (NSString*)stringForColumn:(NSString*)columnName;
+- (NSString * _Nullable)stringForColumn:(NSString*)columnName;
 
-/** Result set `NSString` value for column.
+/** Result set @c NSString  value for column.
 
  @param columnIdx Zero-based index for column.
 
- @return `NSString` value of the result set's column.
+ @return String value of the result set's column.
  */
 
-- (NSString*)stringForColumnIndex:(int)columnIdx;
+- (NSString * _Nullable)stringForColumnIndex:(int)columnIdx;
 
-/** Result set `NSDate` value for column.
+/** Result set @c NSDate  value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return `NSDate` value of the result set's column.
+ @return Date value of the result set's column.
  */
 
-- (NSDate*)dateForColumn:(NSString*)columnName;
+- (NSDate * _Nullable)dateForColumn:(NSString*)columnName;
 
-/** Result set `NSDate` value for column.
+/** Result set @c NSDate  value for column.
 
  @param columnIdx Zero-based index for column.
 
- @return `NSDate` value of the result set's column.
+ @return Date value of the result set's column.
  
  */
 
-- (NSDate*)dateForColumnIndex:(int)columnIdx;
+- (NSDate * _Nullable)dateForColumnIndex:(int)columnIdx;
 
-/** Result set `NSData` value for column.
+/** Result set @c NSData  value for column.
  
  This is useful when storing binary data in table (such as image or the like).
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return `NSData` value of the result set's column.
+ @return Data value of the result set's column.
  
  */
 
-- (NSData*)dataForColumn:(NSString*)columnName;
+- (NSData * _Nullable)dataForColumn:(NSString*)columnName;
 
-/** Result set `NSData` value for column.
+/** Result set @c NSData  value for column.
 
  @param columnIdx Zero-based index for column.
 
- @return `NSData` value of the result set's column.
+ @warning For zero length BLOBs, this will return `nil`. Use `typeForColumn` to determine whether this was really a zero
+    length BLOB or `NULL`.
+
+ @return Data value of the result set's column.
  */
 
-- (NSData*)dataForColumnIndex:(int)columnIdx;
+- (NSData * _Nullable)dataForColumnIndex:(int)columnIdx;
 
 /** Result set `(const unsigned char *)` value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
+
+ @warning For zero length BLOBs, this will return `nil`. Use `typeForColumnIndex` to determine whether this was really a zero
+ length BLOB or `NULL`.
 
  @return `(const unsigned char *)` value of the result set's column.
  */
 
-- (const unsigned char *)UTF8StringForColumnName:(NSString*)columnName;
+- (const unsigned char * _Nullable)UTF8StringForColumn:(NSString*)columnName;
+
+- (const unsigned char * _Nullable)UTF8StringForColumnName:(NSString*)columnName __deprecated_msg("Use UTF8StringForColumn instead");
 
 /** Result set `(const unsigned char *)` value for column.
 
@@ -320,77 +343,110 @@
  @return `(const unsigned char *)` value of the result set's column.
  */
 
-- (const unsigned char *)UTF8StringForColumnIndex:(int)columnIdx;
+- (const unsigned char * _Nullable)UTF8StringForColumnIndex:(int)columnIdx;
 
 /** Result set object for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName Name of the column.
 
- @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.
+ @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object.
 
  @see objectForKeyedSubscript:
  */
 
-- (id)objectForColumnName:(NSString*)columnName;
+- (id _Nullable)objectForColumn:(NSString*)columnName;
+
+- (id _Nullable)objectForColumnName:(NSString*)columnName __deprecated_msg("Use objectForColumn instead");
+
+/** Column type by column name.
+
+ @param columnName Name of the column.
+
+ @return The `SqliteValueType` of the value in this column.
+ */
+
+- (SqliteValueType)typeForColumn:(NSString*)columnName;
+
+/** Column type by column index.
+
+ @param columnIdx Index of the column.
+
+ @return The `SqliteValueType` of the value in this column.
+ */
+
+- (SqliteValueType)typeForColumnIndex:(int)columnIdx;
+
 
 /** Result set object for column.
 
  @param columnIdx Zero-based index for column.
 
- @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.
+ @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object.
 
  @see objectAtIndexedSubscript:
  */
 
-- (id)objectForColumnIndex:(int)columnIdx;
+- (id _Nullable)objectForColumnIndex:(int)columnIdx;
 
 /** Result set object for column.
  
  This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported:
- 
-    id result = rs[@"employee_name"];
- 
+
+@code
+id result = rs[@"employee_name"];
+@endcode
+
  This simplified syntax is equivalent to calling:
  
-    id result = [rs objectForKeyedSubscript:@"employee_name"];
- 
+@code
+id result = [rs objectForKeyedSubscript:@"employee_name"];
+@endcode
+
  which is, it turns out, equivalent to calling:
  
-    id result = [rs objectForColumnName:@"employee_name"];
+@code
+id result = [rs objectForColumnName:@"employee_name"];
+@endcode
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.
+ @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object.
  */
 
-- (id)objectForKeyedSubscript:(NSString *)columnName;
+- (id _Nullable)objectForKeyedSubscript:(NSString *)columnName;
 
 /** Result set object for column.
 
  This method allows the use of the "boxed" syntax supported in Modern Objective-C. For example, by defining this method, the following syntax is now supported:
 
-    id result = rs[0];
+@code
+id result = rs[0];
+@endcode
 
  This simplified syntax is equivalent to calling:
 
-    id result = [rs objectForKeyedSubscript:0];
+@code
+id result = [rs objectForKeyedSubscript:0];
+@endcode
 
  which is, it turns out, equivalent to calling:
 
-    id result = [rs objectForColumnName:0];
+@code
+id result = [rs objectForColumnName:0];
+@endcode
 
  @param columnIdx Zero-based index for column.
 
- @return Either `NSNumber`, `NSString`, `NSData`, or `NSNull`. If the column was `NULL`, this returns `[NSNull null]` object.
+ @return Either @c NSNumber , @c NSString , @c NSData , or @c NSNull . If the column was @c NULL , this returns `[NSNull null]` object.
  */
 
-- (id)objectAtIndexedSubscript:(int)columnIdx;
+- (id _Nullable)objectAtIndexedSubscript:(int)columnIdx;
 
-/** Result set `NSData` value for column.
+/** Result set @c NSData  value for column.
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return `NSData` value of the result set's column.
+ @return Data value of the result set's column.
 
  @warning 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:>`)
@@ -398,13 +454,13 @@
  
  */
 
-- (NSData*)dataNoCopyForColumn:(NSString*)columnName NS_RETURNS_NOT_RETAINED;
+- (NSData * _Nullable)dataNoCopyForColumn:(NSString *)columnName NS_RETURNS_NOT_RETAINED;
 
-/** Result set `NSData` value for column.
+/** Result set @c NSData  value for column.
 
  @param columnIdx Zero-based index for column.
 
- @return `NSData` value of the result set's column.
+ @return Data value of the result set's column.
 
  @warning 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:>`)
@@ -412,22 +468,22 @@
 
  */
 
-- (NSData*)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;
+- (NSData * _Nullable)dataNoCopyForColumnIndex:(int)columnIdx NS_RETURNS_NOT_RETAINED;
 
-/** Is the column `NULL`?
+/** Is the column @c NULL ?
  
  @param columnIdx Zero-based index for column.
 
- @return `YES` if column is `NULL`; `NO` if not `NULL`.
+ @return @c YES if column is @c NULL ; @c NO if not @c NULL .
  */
 
 - (BOOL)columnIndexIsNull:(int)columnIdx;
 
-/** Is the column `NULL`?
+/** Is the column @c NULL ?
 
- @param columnName `NSString` value of the name of the column.
+ @param columnName @c NSString  value of the name of the column.
 
- @return `YES` if column is `NULL`; `NO` if not `NULL`.
+ @return @c YES if column is @c NULL ; @c NO if not @c NULL .
  */
 
 - (BOOL)columnIsNull:(NSString*)columnName;
@@ -435,12 +491,10 @@
 
 /** Returns a dictionary of the row results mapped to case sensitive keys of the column names. 
  
- @returns `NSDictionary` of the row results.
- 
  @warning The keys to the dictionary are case sensitive of the column names.
  */
 
-- (NSDictionary*)resultDictionary;
+@property (nonatomic, readonly, nullable) NSDictionary *resultDictionary;
  
 /** Returns a dictionary of the row results
  
@@ -449,7 +503,7 @@
  @warning **Deprecated**: Please use `<resultDictionary>` instead.  Also, beware that `<resultDictionary>` is case sensitive! 
  */
 
-- (NSDictionary*)resultDict  __attribute__ ((deprecated));
+- (NSDictionary * _Nullable)resultDict __deprecated_msg("Use resultDictionary instead");
 
 ///-----------------------------
 /// @name Key value coding magic
@@ -463,6 +517,22 @@
 
 - (void)kvcMagic:(id)object;
 
- 
+///-----------------------------
+/// @name Binding values
+///-----------------------------
+
+/// Bind array of values to prepared statement.
+///
+/// @param array Array of values to bind to SQL statement.
+
+- (BOOL)bindWithArray:(NSArray*)array;
+
+/// Bind dictionary of values to prepared statement.
+///
+/// @param dictionary Dictionary of values to bind to SQL statement.
+
+- (BOOL)bindWithDictionary:(NSDictionary *)dictionary;
+
 @end
 
+NS_ASSUME_NONNULL_END

--
Gitblit v1.8.0