From 09e73ac42fe2feb7925d954fed88a2eaa57697f7 Mon Sep 17 00:00:00 2001
From: lpw
Date: Wed, 12 Jun 2024 17:08:18 +0800
Subject: [PATCH] 提交2.9.0

---
 frameworks/FMDB.framework/Headers/FMDatabasePool.h |  204 +++++++++++++++++++++++++++++++++++---------------
 1 files changed, 142 insertions(+), 62 deletions(-)

diff --git a/frameworks/FMDB.framework/Headers/FMDatabasePool.h b/frameworks/FMDB.framework/Headers/FMDatabasePool.h
index 1915858..341c05f 100755
--- a/frameworks/FMDB.framework/Headers/FMDatabasePool.h
+++ b/frameworks/FMDB.framework/Headers/FMDatabasePool.h
@@ -8,18 +8,20 @@
 
 #import <Foundation/Foundation.h>
 
+NS_ASSUME_NONNULL_BEGIN
+
 @class FMDatabase;
 
-/** Pool of `<FMDatabase>` objects.
+/** Pool of @c FMDatabase  objects.
 
- ### See also
+ See also
  
- - `<FMDatabaseQueue>`
- - `<FMDatabase>`
+ - @c FMDatabaseQueue 
+ - @c FMDatabase 
 
- @warning Before using `FMDatabasePool`, please consider using `<FMDatabaseQueue>` instead.
+ @warning Before using @c FMDatabasePool , please consider using @c FMDatabaseQueue  instead.
 
- If you really really really know what you're doing and `FMDatabasePool` is what
+ If you really really really know what you're doing and @c FMDatabasePool  is what
  you really really need (ie, you're using a read only database), OK you can use
  it.  But just be careful not to deadlock!
 
@@ -28,27 +30,15 @@
  in the main.m file.
  */
 
-@interface FMDatabasePool : NSObject {
-    NSString            *_path;
-    
-    dispatch_queue_t    _lockQueue;
-    
-    NSMutableArray      *_databaseInPool;
-    NSMutableArray      *_databaseOutPool;
-    
-    __unsafe_unretained id _delegate;
-    
-    NSUInteger          _maximumNumberOfDatabasesToCreate;
-    int                 _openFlags;
-}
+@interface FMDatabasePool : NSObject
 
 /** Database path */
 
-@property (atomic, retain) NSString *path;
+@property (atomic, copy, nullable) NSString *path;
 
 /** Delegate object */
 
-@property (atomic, assign) id delegate;
+@property (atomic, unsafe_unretained, nullable) id delegate;
 
 /** Maximum number of databases to create */
 
@@ -58,73 +48,140 @@
 
 @property (atomic, readonly) int openFlags;
 
+/**  Custom virtual file system name */
+
+@property (atomic, copy, nullable) NSString *vfsName;
+
 
 ///---------------------
 /// @name Initialization
 ///---------------------
 
 /** Create pool using path.
-
+ 
  @param aPath The file path of the database.
-
- @return The `FMDatabasePool` object. `nil` on error.
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
  */
 
-+ (instancetype)databasePoolWithPath:(NSString*)aPath;
++ (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath;
+
+/** Create pool using file URL.
+ 
+ @param url The file @c NSURL  of the database.
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
+ */
+
++ (instancetype)databasePoolWithURL:(NSURL * _Nullable)url;
 
 /** Create pool using path and specified flags
-
+ 
  @param aPath The file path of the database.
- @param openFlags Flags passed to the openWithFlags method of the database
-
- @return The `FMDatabasePool` object. `nil` on error.
+ @param openFlags Flags passed to the openWithFlags method of the database.
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
  */
 
-+ (instancetype)databasePoolWithPath:(NSString*)aPath flags:(int)openFlags;
++ (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath flags:(int)openFlags;
+
+/** Create pool using file URL and specified flags
+ 
+ @param url The file @c NSURL  of the database.
+ @param openFlags Flags passed to the openWithFlags method of the database.
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
+ */
+
++ (instancetype)databasePoolWithURL:(NSURL * _Nullable)url flags:(int)openFlags;
 
 /** Create pool using path.
-
+ 
  @param aPath The file path of the database.
-
- @return The `FMDatabasePool` object. `nil` on error.
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
  */
 
-- (instancetype)initWithPath:(NSString*)aPath;
+- (instancetype)initWithPath:(NSString * _Nullable)aPath;
+
+/** Create pool using file URL.
+ 
+ @param url The file `NSURL of the database.
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
+ */
+
+- (instancetype)initWithURL:(NSURL * _Nullable)url;
 
 /** Create pool using path and specified flags.
-
+ 
  @param aPath The file path of the database.
  @param openFlags Flags passed to the openWithFlags method of the database
-
- @return The `FMDatabasePool` object. `nil` on error.
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
  */
 
-- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags;
+- (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags;
+
+/** Create pool using file URL and specified flags.
+ 
+ @param url The file @c NSURL  of the database.
+ @param openFlags Flags passed to the openWithFlags method of the database
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
+ */
+
+- (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags;
+
+/** Create pool using path and specified flags.
+ 
+ @param aPath The file path of the database.
+ @param openFlags Flags passed to the openWithFlags method of the database
+ @param vfsName The name of a custom virtual file system
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
+ */
+
+- (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags vfs:(NSString * _Nullable)vfsName;
+
+/** Create pool using file URL and specified flags.
+ 
+ @param url The file @c NSURL  of the database.
+ @param openFlags Flags passed to the openWithFlags method of the database
+ @param vfsName The name of a custom virtual file system
+ 
+ @return The @c FMDatabasePool  object. @c nil  on error.
+ */
+
+- (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags vfs:(NSString * _Nullable)vfsName;
+
+/** Returns the Class of 'FMDatabase' subclass, that will be used to instantiate database object.
+
+ Subclasses can override this method to return specified Class of 'FMDatabase' subclass.
+
+ @return The Class of 'FMDatabase' subclass, that will be used to instantiate database object.
+ */
+
++ (Class)databaseClass;
 
 ///------------------------------------------------
 /// @name Keeping track of checked in/out databases
 ///------------------------------------------------
 
 /** Number of checked-in databases in pool
- 
- @returns Number of databases
  */
 
-- (NSUInteger)countOfCheckedInDatabases;
+@property (nonatomic, readonly) NSUInteger countOfCheckedInDatabases;
 
 /** Number of checked-out databases in pool
-
- @returns Number of databases
  */
 
-- (NSUInteger)countOfCheckedOutDatabases;
+@property (nonatomic, readonly) NSUInteger countOfCheckedOutDatabases;
 
 /** Total number of databases in pool
-
- @returns Number of databases
  */
 
-- (NSUInteger)countOfOpenDatabases;
+@property (nonatomic, readonly) NSUInteger countOfOpenDatabases;
 
 /** Release all databases in pool */
 
@@ -136,35 +193,57 @@
 
 /** Synchronously perform database operations in pool.
 
- @param block The code to be run on the `FMDatabasePool` pool.
+ @param block The code to be run on the @c FMDatabasePool  pool.
  */
 
-- (void)inDatabase:(void (^)(FMDatabase *db))block;
+- (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block;
 
 /** Synchronously perform database operations in pool using transaction.
+ 
+ @param block The code to be run on the @c FMDatabasePool  pool.
+ 
+ @warning   Unlike SQLite's `BEGIN TRANSACTION`, this method currently performs
+            an exclusive transaction, not a deferred transaction. This behavior
+            is likely to change in future versions of FMDB, whereby this method
+            will likely eventually adopt standard SQLite behavior and perform
+            deferred transactions. If you really need exclusive tranaction, it is
+            recommended that you use `inExclusiveTransaction`, instead, not only
+            to make your intent explicit, but also to future-proof your code.
+  */
 
- @param block The code to be run on the `FMDatabasePool` pool.
+- (void)inTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block;
+
+/** Synchronously perform database operations in pool using exclusive transaction.
+ 
+ @param block The code to be run on the @c FMDatabasePool  pool.
  */
 
-- (void)inTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block;
+- (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block;
 
 /** Synchronously perform database operations in pool using deferred transaction.
 
- @param block The code to be run on the `FMDatabasePool` pool.
+ @param block The code to be run on the @c FMDatabasePool  pool.
  */
 
-- (void)inDeferredTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block;
+- (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block;
+
+/** Synchronously perform database operations on queue, using immediate transactions.
+
+ @param block The code to be run on the queue of @c FMDatabaseQueue 
+ */
+
+- (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block;
 
 /** Synchronously perform database operations in pool using save point.
 
- @param block The code to be run on the `FMDatabasePool` pool.
+ @param block The code to be run on the @c FMDatabasePool  pool.
  
- @return `NSError` object if error; `nil` if successful.
+ @return @c NSError  object if error; @c nil  if successful.
 
- @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use `<[FMDatabase startSavePointWithName:error:]>` instead.
+ @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use @c startSavePointWithName:error:  instead.
 */
 
-- (NSError*)inSavePoint:(void (^)(FMDatabase *db, BOOL *rollback))block;
+- (NSError * _Nullable)inSavePoint:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block;
 
 @end
 
@@ -178,10 +257,10 @@
 
 /** Asks the delegate whether database should be added to the pool. 
  
- @param pool     The `FMDatabasePool` object.
- @param database The `FMDatabase` object.
+ @param pool     The @c FMDatabasePool  object.
+ @param database The @c FMDatabase  object.
  
- @return `YES` if it should add database to pool; `NO` if not.
+ @return @c YES if it should add database to pool; @c NO if not.
  
  */
 
@@ -189,8 +268,8 @@
 
 /** Tells the delegate that database was added to the pool.
  
- @param pool     The `FMDatabasePool` object.
- @param database The `FMDatabase` object.
+ @param pool     The @c FMDatabasePool  object.
+ @param database The @c FMDatabase  object.
 
  */
 
@@ -198,3 +277,4 @@
 
 @end
 
+NS_ASSUME_NONNULL_END

--
Gitblit v1.8.0