Compare commits

...

59 Commits

Author SHA1 Message Date
Robbie Hanson
772efef2ed Incrementing podspec version. 2018-07-22 12:59:03 -04:00
Robbie Hanson
e8c4021aa1
Merge pull request #458 from wjmelements/ydcu-import-foundation
Add missing foundation import
2018-07-12 12:00:58 -04:00
William Morriss
5fa11c84d3 <> 2018-07-04 02:21:55 -07:00
William Morriss
190cbb6c98 add foundation import 2018-07-03 14:42:09 -07:00
Robbie Hanson
31475d08ff Bug fix for previous commit. 2018-06-28 16:05:50 -04:00
Robbie Hanson
81c2f830d4 Adding new insertedKeys set to YapDatabaseModifiedNotification. 2018-06-28 12:36:44 -04:00
Robbie Hanson
a2fa29e545 Merge branch 'master' of https://github.com/yapstudios/YapDatabase 2018-06-20 15:18:31 -04:00
Robbie Hanson
4e59aff974 Adding convenience method to detect when all previous asyncRegisterExtension requests have completed. 2018-06-20 15:18:25 -04:00
Robbie Hanson
cf9692ebea
Update README.md 2018-06-15 09:54:51 -04:00
Robbie Hanson
7e0919da7c Incrementing podspec version. 2018-06-14 22:18:28 -04:00
Robbie Hanson
fcfda4e5f0 Improving documentation in ConnectionProxy, and adding another reset-like method. 2018-05-23 19:09:49 -04:00
Robbie Hanson
5f480844db Fixing more compiler warnings for issue #444 2018-05-23 19:07:34 -04:00
Robbie Hanson
b5c42db8c6 Minor changes recommended by analyzer. 2018-05-23 17:31:07 -04:00
Robbie Hanson
ca0cb15154 Fix for issue #444 - Compiler warnings in Xcode 9 2018-05-23 17:30:28 -04:00
Robbie Hanson
5d3ea2e97b Adding NS_ASSUME_NONNULL header/footer to YapManyToManyCache.h, and fixing some nullability annotations. Also removing the nullability annotations from private header files, as the compiler throws a fit about all the other missing annotations within the file. (And because the private header files are only used by Obj-C.) 2018-04-05 10:17:37 -07:00
Denis Zubkov
4a207244ae Added __nullable to metadata in headers to make sure Swift 4.1 doesn't throw EXC_BAD_ACCESS 2018-04-05 15:25:14 +10:00
Robbie Hanson
cc678addef Updating YDBRelationship delete rules for files, to match recent changes for delete rules for nodes. Addresses issue #148 2018-04-04 10:56:58 -07:00
Robbie Hanson
88adbb028f
Merge pull request #447 from EnvionSoftwareMobile/master
Edges processing updated to fix #148
2018-04-03 18:20:52 -07:00
Artem Kirienko
66568fedc2 CocoaLumberjack pod updated 2018-03-28 21:41:17 +03:00
Artem Kirienko
fc3b157c0e Travis CI config updated 2018-03-28 21:37:16 +03:00
Artem Kirienko
9bf0ddf311 Edges processing updated to fix #148
Edge count query doesn't include edge name anymore.
2018-03-28 20:08:42 +03:00
Robbie Hanson
2947fda783 Potential bug fix for issues #437 and #441 2018-03-27 11:18:11 -07:00
Robbie Hanson
5b3f5030e7 Adding hook to additionally configure newly created connections in a connection pool. This is useful for configuring things such as permittedTransactions. 2018-03-19 15:00:56 -06:00
Robbie Hanson
b9d9fe42f6 Adding ConnectionPool to CocoaPods & Carthage. 2018-03-19 14:01:44 -06:00
Robbie Hanson
e26639737d New utility class: YapDatabaseConnectionPool. A simple load balancer designed for background (non-main-thread) tasks that perform read-only transactions. 2018-03-19 13:30:56 -06:00
Robbie Hanson
e59d5fb5f9 Adding new property on YapDatabaseConnection: pendingTransactionCount 2018-03-19 12:02:11 -06:00
Robbie Hanson
27b32aa3ea Minor optimization - check completionBlock for NULL once, instead of twice. 2018-03-19 12:00:12 -06:00
Robbie Hanson
30b053c000 Explicitly marking dynamic properties dynamic. This makes it easier to find spelling mistakes in function names. 2018-03-19 11:57:56 -06:00
Robbie Hanson
114d371b7a Adding ability to create a databaseConnection with a pre-configured set of configuration options. 2018-03-19 11:56:41 -06:00
Robbie Hanson
102a3436b9 Deprecating the defaultX properties in YapDatabase, in favor of the new(ish) YapDatabaseConnectionConfig class. 2018-03-18 13:41:13 -06:00
Robbie Hanson
05a3bbf01d Updating unit test project via 'pod install'. 2018-03-18 12:44:31 -06:00
Robbie Hanson
5969174262 Updating macOS deployment target from 10.9 to 10.10. The primary motivation for this is to silence the hundreds of compiler warnings about CloudKit not being available in 10.9. 2018-03-18 12:43:42 -06:00
Robbie Hanson
5df37ee440 Fixing compiler warning & bug in YDBCloudCore. 2018-03-18 12:28:46 -06:00
Robbie Hanson
ec857d7021
Merge pull request #439 from signalapp/charlesmchen/unencryptedHeaders
Charlesmchen/unencrypted headers
2018-03-18 12:18:59 -06:00
Robbie Hanson
d07f12b50d
Merge pull request #443 from mathieualvado/fix_nullability_annotations
Fix missing nullability annotation in backup methods
2018-03-15 14:07:56 -06:00
Mathieu Alvado
3174f45e67 Fix missing nullability annotation in backup methods
Missing annotations were causing a crash in Swift when accessing error argument.
2018-03-09 01:17:13 -05:00
Robbie Hanson
9f97fed893 Bug fix: enumeration code was skipping inserted operations in the last commit. 2018-03-08 15:38:10 -07:00
Robbie Hanson
f91e7a191e Adding a few convenience methods to YapDatabaseCloudCoreTransaction. 2018-03-08 15:35:51 -07:00
Robbie Hanson
a19f0d29e4 Fixing a crash that was described in issue #399 but this time with protocolEdges instead of manualEdges. Added corresponding unit test as well. 2018-03-08 15:32:14 -07:00
Robbie Hanson
9ac1bce51a
Merge pull request #440 from rupertdaniel/fts-add-transaction-to-handler-block
Fts add transaction to handler blocks
2018-03-08 17:43:55 -03:00
Robbie Hanson
15c3145e21
Merge pull request #442 from marcpalmer/marcpalmer-patch-1
Fix for _enumerateRowidsForKeys only working for 1 key
2018-03-08 17:38:16 -03:00
Marc Palmer
d9199ca084
Fix for _enumerateRowidsForKeys only working for 1 key
If the fast path for 1 key lookup is not taken because there are > 1 keys, the `keyIndexDict` is never allocated a value due to a logic bug. Objective-C then conspired to hide this problem from us thanks to messaging of nil.
2018-03-08 14:45:54 +00:00
Rupert Daniel
db05d876f7 Updated FTS unit tests. 2018-01-24 11:29:57 +00:00
Rupert Daniel
1aac5034f8 Pass the database transaction as a parameter to FTS extension handler
blocks.
2018-01-24 11:21:45 +00:00
Robbie Hanson
6dce343afb Bug fix for issue #433 - Initialisers are marked non-nullable in header, but can return nil 2018-01-02 13:10:47 -05:00
Robbie Hanson
65cb53830f Bug fix for issue #437 - Possible deadlock in [YapDatabaseConnection dealloc] 2018-01-02 12:57:50 -05:00
Robbie Hanson
cc73216ebf
Merge pull request #435 from ksuther/fts-upgrade
Fixed FTS extension repeatedly reindexing
2018-01-02 12:34:24 -05:00
Robbie Hanson
f0016bcc0a
Merge pull request #438 from ksuther/remove-crossprocess-logs
Adjusted logging in CrossProcessNotification extension
2018-01-02 12:32:04 -05:00
Robbie Hanson
8714d467ef Decreasing default log level for YDBActionManager. 2018-01-02 12:28:26 -05:00
Kent Sutherland
66dfd5d809 Adjusted logging in CrossProcessNotification extension
Remove NSLogging when creating and destroying the cross process notification extension.
Changed cross-process notification log to use YDBLog.
2017-12-23 14:44:24 -05:00
Kent Sutherland
ae814eaa89 Fixed FTS extension repeatedly reindexing if the original database was created with the version of the extension that didn't save ftsVersion to the database. 2017-12-05 17:01:02 -06:00
Robbie Hanson
ce9c8dbcee Bug fix for issue #426 2017-11-24 20:10:24 -05:00
Robbie Hanson
9cbc4a0132 Adding unit test for issue #399 & simplifying code 2017-11-24 19:15:22 -05:00
Robbie Hanson
b142d8b69d Adding unit test for issue #426 2017-11-24 18:16:20 -05:00
Robbie Hanson
690cb2de14 Fixing Xcode project for unit tests (desktop) 2017-11-24 18:15:52 -05:00
Robbie Hanson
6324181181 Bug fix for issue #427 - CloudCore extension wasn't registering properly (if not subclassed). 2017-11-04 16:54:27 -05:00
Robbie Hanson
03baeb1336 Updating CocoaLumberjack version in Carthage to fix compiler warnings. 2017-11-04 15:52:51 -05:00
Robbie Hanson
0cd8bf6c8e Adding YapDatabaseCloudCore to Carthage builds. 2017-11-04 10:25:11 -05:00
Robbie Hanson
bf499db56a Fixing swift annotations in YDBCloudKit extension. 2017-10-30 10:51:01 -04:00
134 changed files with 7388 additions and 5378 deletions

View File

@ -1,5 +1,5 @@
language: objective-c
osx_image: xcode8.3
osx_image: xcode9.2
before_script:
- export LANG=en_US.UTF-8

View File

@ -1 +1 @@
github "CocoaLumberjack/CocoaLumberjack" "3.2.0"
github "CocoaLumberjack/CocoaLumberjack" "3.3.0"

View File

@ -23,7 +23,7 @@ framework module YapDatabase {
}
// Extension: View
explicit module YapDatabaseView {
header "YapDatabaseView.h"
header "YapDatabaseViewOptions.h"
@ -140,6 +140,12 @@ framework module YapDatabase {
header "YapDatabaseConnectionProxy.h"
}
// Extension: ConnectionPool
explicit module YapDatabaseConnectionPool {
header "YapDatabaseConnectionPool.h"
}
// Extension: ActionManager
explicit module YapDatabaseActionManager {
@ -158,4 +164,18 @@ framework module YapDatabase {
header "YapDatabaseCrossProcessNotificationConnection.h"
header "YapDatabaseCrossProcessNotificationTransaction.h"
}
// Extension: CloudCore
explicit module YapDatabaseCloudCore {
header "YapDatabaseCloudCore.h"
header "YapDatabaseCloudCoreOptions.h"
header "YapDatabaseCloudCoreConnection.h"
header "YapDatabaseCloudCoreTransaction.h"
header "YapManyToManyCache.h"
header "YapDatabaseCloudCoreOperation.h"
header "YapDatabaseCloudCorePipelineDelegate.h"
header "YapDatabaseCloudCorePipeline.h"
header "YapDatabaseCloudCoreGraph.h"
}
}

View File

@ -16,6 +16,7 @@
@import YapDatabase.YapDatabaseHooks;
@import YapDatabase.YapDatabaseRTreeIndex;
@import YapDatabase.YapDatabaseConnectionProxy;
@import YapDatabase.YapDatabaseConnectionPool;
@import YapDatabase.YapDatabaseActionManager;
#if !TARGET_OS_WATCH
@import YapDatabase.YapDatabaseCloudKit;

View File

@ -68,7 +68,7 @@ framework module YapDatabase {
}
// Extension: SecondaryIndex
explicit module YapDatabaseSecondaryIndex {
header "YapDatabaseSecondaryIndex.h"
header "YapDatabaseSecondaryIndexSetup.h"
@ -140,6 +140,12 @@ framework module YapDatabase {
header "YapDatabaseConnectionProxy.h"
}
// Extension: ConnectionPool
explicit module YapDatabaseConnectionPool {
header "YapDatabaseConnectionPool.h"
}
// Extension: ActionManager
explicit module YapDatabaseActionManager {
@ -158,4 +164,18 @@ framework module YapDatabase {
header "YapDatabaseCrossProcessNotificationConnection.h"
header "YapDatabaseCrossProcessNotificationTransaction.h"
}
// Extension: CloudCore
explicit module YapDatabaseCloudCore {
header "YapDatabaseCloudCore.h"
header "YapDatabaseCloudCoreOptions.h"
header "YapDatabaseCloudCoreConnection.h"
header "YapDatabaseCloudCoreTransaction.h"
header "YapManyToManyCache.h"
header "YapDatabaseCloudCoreOperation.h"
header "YapDatabaseCloudCorePipelineDelegate.h"
header "YapDatabaseCloudCorePipeline.h"
header "YapDatabaseCloudCoreGraph.h"
}
}

View File

@ -23,7 +23,7 @@ framework module YapDatabase {
}
// Extension: View
explicit module YapDatabaseView {
header "YapDatabaseView.h"
header "YapDatabaseViewOptions.h"
@ -34,16 +34,16 @@ framework module YapDatabase {
header "YapDatabaseViewRangeOptions.h"
}
// Extension: AutoView
// Extension: AutoView
explicit module YapDatabaseAutoView {
header "YapDatabaseViewTypes.h"
header "YapDatabaseAutoView.h"
header "YapDatabaseAutoViewConnection.h"
header "YapDatabaseAutoViewTransaction.h"
explicit module YapDatabaseAutoView {
header "YapDatabaseViewTypes.h"
header "YapDatabaseAutoView.h"
header "YapDatabaseAutoViewConnection.h"
header "YapDatabaseAutoViewTransaction.h"
export YapDatabaseView
}
export YapDatabaseView
}
// Extension: FilteredView
@ -140,6 +140,12 @@ framework module YapDatabase {
header "YapDatabaseConnectionProxy.h"
}
// Extension: ConnectionPool
explicit module YapDatabaseConnectionPool {
header "YapDatabaseConnectionPool.h"
}
// Extension: ActionManager
explicit module YapDatabaseActionManager {
@ -158,4 +164,18 @@ framework module YapDatabase {
header "YapDatabaseCrossProcessNotificationConnection.h"
header "YapDatabaseCrossProcessNotificationTransaction.h"
}
// Extension: CloudCore
explicit module YapDatabaseCloudCore {
header "YapDatabaseCloudCore.h"
header "YapDatabaseCloudCoreOptions.h"
header "YapDatabaseCloudCoreConnection.h"
header "YapDatabaseCloudCoreTransaction.h"
header "YapManyToManyCache.h"
header "YapDatabaseCloudCoreOperation.h"
header "YapDatabaseCloudCorePipelineDelegate.h"
header "YapDatabaseCloudCorePipeline.h"
header "YapDatabaseCloudCoreGraph.h"
}
}

View File

@ -23,7 +23,7 @@ framework module YapDatabase {
}
// Extension: View
explicit module YapDatabaseView {
header "YapDatabaseView.h"
header "YapDatabaseViewOptions.h"
@ -34,16 +34,16 @@ framework module YapDatabase {
header "YapDatabaseViewRangeOptions.h"
}
// Extension: AutoView
// Extension: AutoView
explicit module YapDatabaseAutoView {
header "YapDatabaseViewTypes.h"
header "YapDatabaseAutoView.h"
header "YapDatabaseAutoViewConnection.h"
header "YapDatabaseAutoViewTransaction.h"
explicit module YapDatabaseAutoView {
header "YapDatabaseViewTypes.h"
header "YapDatabaseAutoView.h"
header "YapDatabaseAutoViewConnection.h"
header "YapDatabaseAutoViewTransaction.h"
export YapDatabaseView
}
export YapDatabaseView
}
// Extension: FilteredView
@ -140,6 +140,12 @@ framework module YapDatabase {
header "YapDatabaseConnectionProxy.h"
}
// Extension: ConnectionPool
explicit module YapDatabaseConnectionPool {
header "YapDatabaseConnectionPool.h"
}
// Extension: ActionManager
explicit module YapDatabaseActionManager {
@ -158,4 +164,18 @@ framework module YapDatabase {
header "YapDatabaseCrossProcessNotificationConnection.h"
header "YapDatabaseCrossProcessNotificationTransaction.h"
}
// Extension: CloudCore
explicit module YapDatabaseCloudCore {
header "YapDatabaseCloudCore.h"
header "YapDatabaseCloudCoreOptions.h"
header "YapDatabaseCloudCoreConnection.h"
header "YapDatabaseCloudCoreTransaction.h"
header "YapManyToManyCache.h"
header "YapDatabaseCloudCoreOperation.h"
header "YapDatabaseCloudCorePipelineDelegate.h"
header "YapDatabaseCloudCorePipeline.h"
header "YapDatabaseCloudCoreGraph.h"
}
}

View File

@ -28,8 +28,6 @@ It has the following features:
* **Performance**. Fetch thousands of objects on the main thread without dropping a frame.
* **Objective-C**. A simple to use Objective-C API means you'll be up and running in no time.
<br/>
**[See what the API looks like in "hello world" for YapDatabase](https://github.com/yapstudios/YapDatabase/wiki/Hello-World)**<br/>

View File

@ -21,6 +21,9 @@
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Standard inverse relationship: (child)->(parent)
@ -36,6 +39,10 @@
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Retain count relationship: (retainer)->(retained)
* nodeDeleteRule = YDB_DeleteDestinationIfAllSourcesDeleted
@ -51,6 +58,10 @@
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Inverse retain count relationship: (retained)->(retainer)
* nodeDeleteRule = YDB_DeleteSourceIfAllDestinationsDeleted
@ -66,6 +77,10 @@
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Standard file relationship: (parent)->(file)
* nodeDeleteRule = YDB_DeleteDestinationIfSourceDeleted
@ -80,6 +95,10 @@
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Retain count file relationship: (parent)->(file)
* nodeDeleteRule = YDB_DeleteDestinationIfAllSourcesDeleted
@ -94,3 +113,30 @@
@property (nonatomic, copy, readwrite) NSURL *fileURL;
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Notify & Delete relationship: (parent)->(child)
* nodeDeleteRule = YDB_DeleteDestinationIfSourceDeleted | YDB_NotifyIfSourceDeleted
*
* So the parent node creates the edge which points to the child node.
* And the child should get deleted if the parent is deleted.
* But the child node also needs to get notified first.
**/
@interface Node_Notify : NSObject <NSCoding, YapDatabaseRelationshipNode>
@property (nonatomic, strong, readonly) NSString *key;
@property (nonatomic, strong, readwrite) NSString *child;
@end
@interface Node_NotifyCount : NSObject <NSCoding, YapDatabaseRelationshipNode>
@property (nonatomic, strong, readonly) NSString *key;
+ (NSUInteger)notifyCount;
@end

View File

@ -319,4 +319,105 @@
return @[ edge ];
}
@end
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@implementation Node_Notify
@synthesize key = key;
@synthesize child = child;
- (id)init
{
if ((self = [super init]))
{
key = [[NSUUID UUID] UUIDString];
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder
{
if ((self = [super init]))
{
key = [decoder decodeObjectForKey:@"key"];
child = [decoder decodeObjectForKey:@"child"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:key forKey:@"key"];
[coder encodeObject:child forKey:@"child"];
}
- (NSArray *)yapDatabaseRelationshipEdges
{
if (child == nil) return nil;
YapDatabaseRelationshipEdge *edge =
[YapDatabaseRelationshipEdge edgeWithName:@"child"
destinationKey:child
collection:nil
nodeDeleteRules:(YDB_DeleteDestinationIfSourceDeleted | YDB_NotifyIfSourceDeleted)];
return @[ edge ];
}
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@implementation Node_NotifyCount
static NSUInteger notifyCount = 0;
@synthesize key = key;
- (id)init
{
if ((self = [super init]))
{
key = [[NSUUID UUID] UUIDString];
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder
{
if ((self = [super init]))
{
key = [decoder decodeObjectForKey:@"key"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:key forKey:@"key"];
}
- (NSArray<YapDatabaseRelationshipEdge *> *)yapDatabaseRelationshipEdges
{
return nil;
}
- (id)yapDatabaseRelationshipEdgeDeleted:(YapDatabaseRelationshipEdge *)edge
withReason:(YDB_NotifyReason)reason
{
notifyCount++;
return nil;
}
+ (NSUInteger)notifyCount
{
return notifyCount;
}
@end

View File

@ -50,7 +50,7 @@
YapDatabaseConnection *connection = [database newConnection];
YapDatabaseFullTextSearchHandler *handler = [YapDatabaseFullTextSearchHandler withObjectBlock:
^(NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
^(YapDatabaseReadTransaction *transaction, NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
[dict setObject:object forKey:@"content"];
}];
@ -169,7 +169,7 @@
YapDatabaseConnection *connection = [database newConnection];
YapDatabaseFullTextSearchHandler *handler = [YapDatabaseFullTextSearchHandler withObjectBlock:
^(NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
^(YapDatabaseReadTransaction *transaction, NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
[dict setObject:object forKey:@"content"];
}];

View File

@ -4217,4 +4217,184 @@
XCTAssert(count == 4);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Issue #399 - https://github.com/yapstudios/YapDatabase/pull/399
**/
- (void)testIssue399
{
NSString *databasePath = [self databasePath:NSStringFromSelector(_cmd)];
[[NSFileManager defaultManager] removeItemAtPath:databasePath error:NULL];
YapDatabase *database = [[YapDatabase alloc] initWithPath:databasePath];
XCTAssertNotNil(database);
YapDatabaseConnection *connection = [database newConnection];
YapDatabaseRelationship *relationship = [[YapDatabaseRelationship alloc] init];
BOOL registered = [database registerExtension:relationship withName:@"relationship"];
XCTAssertTrue(registered, @"Error registering extension");
[connection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
NSString *srcWithMissingDst = @"src1";
NSString *dstWithMissingSrc = @"dst2";
// NSString *missingPath = [self databasePath:@"phoney_baloney"];
// NSURL *missingURL = [NSURL fileURLWithPath:missingPath isDirectory:NO];
// We're ensuring we don't get an assertion in [YapDatabaseRelationshipTransaction deleteEdge:]
[transaction setObject:srcWithMissingDst forKey:srcWithMissingDst inCollection:nil];
[transaction setObject:dstWithMissingSrc forKey:dstWithMissingSrc inCollection:nil];
YapDatabaseRelationshipEdge *e1 =
[YapDatabaseRelationshipEdge edgeWithName:@"test1"
sourceKey:srcWithMissingDst
collection:nil
destinationKey:@"missing"
collection:nil
nodeDeleteRules:YDB_DeleteDestinationIfSourceDeleted];
YapDatabaseRelationshipEdge *e2 =
[YapDatabaseRelationshipEdge edgeWithName:@"test3"
sourceKey:@"missing"
collection:nil
destinationKey:dstWithMissingSrc
collection:nil
nodeDeleteRules:YDB_DeleteSourceIfDestinationDeleted];
YapDatabaseRelationshipEdge *e3 =
[YapDatabaseRelationshipEdge edgeWithName:@"test4"
sourceKey:@"missing"
collection:nil
destinationKey:@"missing"
collection:nil
nodeDeleteRules:YDB_DeleteSourceIfDestinationDeleted];
// YapDatabaseRelationshipEdge *e4 =
// [YapDatabaseRelationshipEdge edgeWithName:@"test2"
// sourceKey:@"missing"
// collection:nil
// destinationFileURL:missingURL
// nodeDeleteRules:YDB_DeleteDestinationIfSourceDeleted];
[[transaction ext:@"relationship"] addEdge:e1];
[[transaction ext:@"relationship"] addEdge:e2];
[[transaction ext:@"relationship"] addEdge:e3];
// [[transaction ext:@"relationship"] addEdge:e4];
}];
}
/**
* Issue #399 refers to a crash when:
* - manual edges are being used
* - an edge is being immediately deleted
* - but the NotInDatabase flag wasn't being set
*
* We discovered a similar crash when using protocolEdges.
**/
- (void)testIssue399_protocol
{
NSString *databasePath = [self databasePath:NSStringFromSelector(_cmd)];
[[NSFileManager defaultManager] removeItemAtPath:databasePath error:NULL];
YapDatabase *database = [[YapDatabase alloc] initWithPath:databasePath];
XCTAssertNotNil(database);
YapDatabaseConnection *connection = [database newConnection];
YapDatabaseRelationship *relationship = [[YapDatabaseRelationship alloc] init];
BOOL registered = [database registerExtension:relationship withName:@"relationship"];
XCTAssertTrue(registered, @"Error registering extension");
__block Node_Standard *node = nil;
[connection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[transaction setObject:@"string" forKey:@"valid" inCollection:nil];
node = [[Node_Standard alloc] init];
node.childKeys = @[@"valid", @"invalid-1"];
// The node.childKeys has 2 items,
// and so it will attempt to create 2 edges.
// - The first is valid
// - The second is invalid
//
// The invalid edge should be deleted during [YapDBRelationshipTransaction flush].
//
// Note:
// In this case, 'node' is a newly inserted item in the database.
// Which means the code path taken is different from a modified item.
// So we need another unit test to achieve proper unit test coverage for this issue.
//
[transaction setObject:node forKey:node.key inCollection:nil];
}];
[connection readWriteWithBlock:^(YapDatabaseReadWriteTransaction * _Nonnull transaction) {
node = [transaction objectForKey:node.key inCollection:nil];
node.childKeys = @[@"valid", @"invalid-2"];
// In this case, 'node' is a modified item in the database.
// Which means the code path taken is different from an inserted item.
//
[transaction setObject:node forKey:node.key inCollection:nil];
}];
}
/**
* Issue #426 - https://github.com/yapstudios/YapDatabase/issues/426
**/
- (void)testDeleteAndNotify
{
NSString *databasePath = [self databasePath:NSStringFromSelector(_cmd)];
[[NSFileManager defaultManager] removeItemAtPath:databasePath error:NULL];
YapDatabase *database = [[YapDatabase alloc] initWithPath:databasePath];
XCTAssertNotNil(database);
YapDatabaseConnection *connection = [database newConnection];
YapDatabaseRelationship *relationship = [[YapDatabaseRelationship alloc] init];
BOOL registered = [database registerExtension:relationship withName:@"relationship"];
XCTAssertTrue(registered, @"Error registering extension");
__block NSString *parentKey = nil;
[connection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
Node_NotifyCount *child = [[Node_NotifyCount alloc] init];
Node_Notify *parent = [[Node_Notify alloc] init];
parent.child = child.key;
parentKey = parent.key;
[transaction setObject:parent forKey:parent.key inCollection:nil];
[transaction setObject:child forKey:child.key inCollection:nil];
}];
XCTAssert([Node_NotifyCount notifyCount] == 0);
[connection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[transaction removeObjectForKey:parentKey inCollection:nil];
}];
XCTAssert([Node_NotifyCount notifyCount] == 1);
}
@end

View File

@ -169,7 +169,7 @@
// Setup FTS
YapDatabaseFullTextSearchHandler *handler = [YapDatabaseFullTextSearchHandler withObjectBlock:
^(NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
^(YapDatabaseReadTransaction *transaction, NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
[dict setObject:object forKey:@"content"];
}];
@ -259,7 +259,7 @@
// Setup FTS
YapDatabaseFullTextSearchHandler *handler = [YapDatabaseFullTextSearchHandler withObjectBlock:
^(NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
^(YapDatabaseReadTransaction *transaction, NSMutableDictionary *dict, NSString *collection, NSString *key, id object){
[dict setObject:object forKey:@"content"];
}];

View File

@ -1,5 +1,5 @@
project 'YapDatabaseTesting.xcodeproj'
platform :osx, '10.10'
platform :osx, '10.12'
target 'YapDatabase' do
pod "YapDatabase", path: '../../'

View File

@ -1,69 +1,72 @@
PODS:
- CocoaLumberjack (3.2.0):
- CocoaLumberjack/Default (= 3.2.0)
- CocoaLumberjack/Extensions (= 3.2.0)
- CocoaLumberjack/Default (3.2.0)
- CocoaLumberjack/Extensions (3.2.0):
- CocoaLumberjack (3.4.1):
- CocoaLumberjack/Default (= 3.4.1)
- CocoaLumberjack/Extensions (= 3.4.1)
- CocoaLumberjack/Default (3.4.1)
- CocoaLumberjack/Extensions (3.4.1):
- CocoaLumberjack/Default
- YapDatabase (3.0):
- YapDatabase/Standard (= 3.0)
- YapDatabase/Standard (3.0):
- YapDatabase/Standard/Core (= 3.0)
- YapDatabase/Standard/Extensions (= 3.0)
- YapDatabase/Standard/Core (3.0):
- YapDatabase (3.0.2):
- YapDatabase/Standard (= 3.0.2)
- YapDatabase/Standard (3.0.2):
- YapDatabase/Standard/Core (= 3.0.2)
- YapDatabase/Standard/Extensions (= 3.0.2)
- YapDatabase/Standard/Core (3.0.2):
- CocoaLumberjack
- YapDatabase/Standard/Extensions (3.0):
- YapDatabase/Standard/Extensions (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ActionManager (= 3.0)
- YapDatabase/Standard/Extensions/AutoView (= 3.0)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0)
- YapDatabase/Standard/Extensions/Hooks (= 3.0)
- YapDatabase/Standard/Extensions/ManualView (= 3.0)
- YapDatabase/Standard/Extensions/Relationships (= 3.0)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0)
- YapDatabase/Standard/Extensions/View (= 3.0)
- YapDatabase/Standard/Extensions/ActionManager (3.0):
- YapDatabase/Standard/Extensions/ActionManager (= 3.0.2)
- YapDatabase/Standard/Extensions/AutoView (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionPool (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0.2)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0.2)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0.2)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0.2)
- YapDatabase/Standard/Extensions/Hooks (= 3.0.2)
- YapDatabase/Standard/Extensions/ManualView (= 3.0.2)
- YapDatabase/Standard/Extensions/Relationships (= 3.0.2)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0.2)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/View (= 3.0.2)
- YapDatabase/Standard/Extensions/ActionManager (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/AutoView (3.0):
- YapDatabase/Standard/Extensions/AutoView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/CloudCore (3.0):
- YapDatabase/Standard/Extensions/CloudCore (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CloudKit (3.0):
- YapDatabase/Standard/Extensions/CloudKit (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0):
- YapDatabase/Standard/Extensions/ConnectionPool (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0):
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0):
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/FullTextSearch (3.0):
- YapDatabase/Standard/Extensions/FullTextSearch (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/Hooks (3.0):
- YapDatabase/Standard/Extensions/Hooks (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ManualView (3.0):
- YapDatabase/Standard/Extensions/ManualView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/Relationships (3.0):
- YapDatabase/Standard/Extensions/Relationships (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/RTreeIndex (3.0):
- YapDatabase/Standard/Extensions/RTreeIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/SearchResultsView (3.0):
- YapDatabase/Standard/Extensions/SearchResultsView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/FullTextSearch
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0):
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View (3.0):
- YapDatabase/Standard/Extensions/View (3.0.2):
- YapDatabase/Standard/Core
DEPENDENCIES:
@ -74,9 +77,9 @@ EXTERNAL SOURCES:
:path: ../../
SPEC CHECKSUMS:
CocoaLumberjack: 9b4aed7073d242f29cc2f62068d995faf67f703a
YapDatabase: 0cef6c79948169c924ae325d430ffcfa8a5231c2
CocoaLumberjack: 2e258a064cacc8eb9a2aca318e24d02a0a7fd56d
YapDatabase: 972eccb0c997d0dafe8192dccf7f58351914baf1
PODFILE CHECKSUM: 27f2264941859e807f069adfc2aa0a50167ae03d
PODFILE CHECKSUM: 8dceb5c937bc6e9558d8d75103d141eef959b637
COCOAPODS: 1.2.1
COCOAPODS: 1.4.0

View File

@ -86,10 +86,10 @@ public func DDLogError(_ message: @autoclosure () -> String, level: DDLogLevel =
public func CurrentFileName(_ fileName: StaticString = #file) -> String {
var str = String(describing: fileName)
if let idx = str.range(of: "/", options: .backwards)?.upperBound {
str = str.substring(from: idx)
str = String(str[idx...])
}
if let idx = str.range(of: ".", options: .backwards)?.lowerBound {
str = str.substring(to: idx)
str = String(str[..<idx])
}
return str
}

View File

@ -397,7 +397,7 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota;
* You can optionally force the current log file to be rolled with this method.
* CompletionBlock will be called on main queue.
*/
- (void)rollLogFileWithCompletionBlock:(void (^)())completionBlock NS_SWIFT_NAME(rollLogFile(withCompletion:));
- (void)rollLogFileWithCompletionBlock:(void (^)(void))completionBlock NS_SWIFT_NAME(rollLogFile(withCompletion:));
/**
* Method is deprecated.

View File

@ -279,47 +279,18 @@ unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20
- (BOOL)isLogFile:(NSString *)fileName {
NSString *appName = [self applicationName];
BOOL hasProperPrefix = [fileName hasPrefix:appName];
// We need to add a space to the name as otherwise we could match applications that have the name prefix.
BOOL hasProperPrefix = [fileName hasPrefix:[appName stringByAppendingString:@" "]];
BOOL hasProperSuffix = [fileName hasSuffix:@".log"];
BOOL hasProperDate = NO;
if (hasProperPrefix && hasProperSuffix) {
NSUInteger lengthOfMiddle = fileName.length - appName.length - @".log".length;
// Date string should have at least 16 characters - " 2013-12-03 17-14"
if (lengthOfMiddle >= 17) {
NSRange range = NSMakeRange(appName.length, lengthOfMiddle);
NSString *middle = [fileName substringWithRange:range];
NSArray *components = [middle componentsSeparatedByString:@" "];
// When creating logfile if there is existing file with the same name, we append attemp number at the end.
// Thats why here we can have three or four components. For details see createNewLogFile method.
//
// Components:
// "", "2013-12-03", "17-14"
// or
// "", "2013-12-03", "17-14", "1"
if (components.count == 3 || components.count == 4) {
NSString *dateString = [NSString stringWithFormat:@"%@ %@", components[1], components[2]];
NSDateFormatter *dateFormatter = [self logFileDateFormatter];
NSDate *date = [dateFormatter dateFromString:dateString];
if (date) {
hasProperDate = YES;
}
}
}
}
return (hasProperPrefix && hasProperDate && hasProperSuffix);
return (hasProperPrefix && hasProperSuffix);
}
// if you change formatter, then change sortedLogFileInfos method also accordingly
- (NSDateFormatter *)logFileDateFormatter {
NSMutableDictionary *dictionary = [[NSThread currentThread]
threadDictionary];
NSString *dateFormat = @"yyyy'-'MM'-'dd' 'HH'-'mm'";
NSString *dateFormat = @"yyyy'-'MM'-'dd'--'HH'-'mm'-'ss'-'SSS'";
NSString *key = [NSString stringWithFormat:@"logFileDateFormatter.%@", dateFormat];
NSDateFormatter *dateFormatter = dictionary[key];
@ -417,13 +388,35 @@ unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20
}
- (NSArray *)sortedLogFileInfos {
return [[self unsortedLogFileInfos] sortedArrayUsingSelector:@selector(reverseCompareByCreationDate:)];
return [[self unsortedLogFileInfos] sortedArrayUsingComparator:^NSComparisonResult(DDLogFileInfo * _Nonnull obj1, DDLogFileInfo * _Nonnull obj2) {
NSDate *date1 = [NSDate new];
NSDate *date2 = [NSDate new];
NSArray<NSString *> *arrayComponent = [[obj1 fileName] componentsSeparatedByString:@" "];
if (arrayComponent.count > 0) {
NSString *stringDate = arrayComponent.lastObject;
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".log" withString:@""];
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".archived" withString:@""];
date1 = [[self logFileDateFormatter] dateFromString:stringDate] ?: [obj1 creationDate];
}
arrayComponent = [[obj2 fileName] componentsSeparatedByString:@" "];
if (arrayComponent.count > 0) {
NSString *stringDate = arrayComponent.lastObject;
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".log" withString:@""];
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".archived" withString:@""];
date2 = [[self logFileDateFormatter] dateFromString:stringDate] ?: [obj2 creationDate];
}
return [date2 compare:date1 ?: [NSDate new]];
}];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Creation
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//if you change newLogFileName , then change isLogFile method also accordingly
- (NSString *)newLogFileName {
NSString *appName = [self applicationName];
@ -779,7 +772,7 @@ unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20
[self rollLogFileWithCompletionBlock:nil];
}
- (void)rollLogFileWithCompletionBlock:(void (^)())completionBlock {
- (void)rollLogFileWithCompletionBlock:(void (^)(void))completionBlock {
// This method is public.
// We need to execute the rolling on our logging thread/queue.

View File

@ -351,17 +351,16 @@ static NSUInteger _numProcessors;
// Dispatch semaphores call down to the kernel only when the calling thread needs to be blocked.
// If the calling semaphore does not need to block, no kernel call is made.
dispatch_semaphore_wait(_queueSemaphore, DISPATCH_TIME_FOREVER);
// We've now sure we won't overflow the queue.
// It is time to queue our log message.
dispatch_block_t logBlock = ^{
dispatch_semaphore_wait(_queueSemaphore, DISPATCH_TIME_FOREVER);
@autoreleasepool {
[self lt_log:logMessage];
}
};
// We've now sure we won't overflow the queue.
// It is time to queue our log message.
if (asyncFlag) {
dispatch_async(_loggingQueue, logBlock);
} else {

View File

@ -25,7 +25,6 @@
/**
* This class provides a logger for the Apple os_log facility.
**/
API_AVAILABLE(ios(10.0), macos(10.12), tvos(10.0), watchos(3.0))
@interface DDOSLogger : DDAbstractLogger <DDLogger>
/**

View File

@ -48,26 +48,30 @@ static DDOSLogger *sharedInstance;
return;
}
NSString * message = _logFormatter ? [_logFormatter formatLogMessage:logMessage] : logMessage->_message;
if (message) {
const char *msg = [message UTF8String];
if(@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) {
switch (logMessage->_flag) {
case DDLogFlagError :
os_log_error(OS_LOG_DEFAULT, msg);
break;
case DDLogFlagWarning :
case DDLogFlagInfo :
os_log_info(OS_LOG_DEFAULT, msg);
break;
case DDLogFlagDebug :
case DDLogFlagVerbose :
default :
os_log_debug(OS_LOG_DEFAULT, msg);
break;
NSString * message = _logFormatter ? [_logFormatter formatLogMessage:logMessage] : logMessage->_message;
if (message) {
const char *msg = [message UTF8String];
switch (logMessage->_flag) {
case DDLogFlagError :
os_log_error(OS_LOG_DEFAULT, "%{public}s", msg);
break;
case DDLogFlagWarning :
case DDLogFlagInfo :
os_log_info(OS_LOG_DEFAULT, "%{public}s", msg);
break;
case DDLogFlagDebug :
case DDLogFlagVerbose :
default :
os_log_debug(OS_LOG_DEFAULT, "%{public}s", msg);
break;
}
}
}
}
- (NSString *)loggerName {

View File

@ -14,7 +14,7 @@
// prior written permission of Deusty, LLC.
#import "DDContextFilterLogFormatter.h"
#import <libkern/OSAtomic.h>
#import <pthread/pthread.h>
#if !__has_feature(objc_arc)
#error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
@ -131,7 +131,7 @@
@interface DDLoggingContextSet () {
OSSpinLock _lock;
pthread_mutex_t _mutex;
NSMutableSet *_set;
}
@ -143,36 +143,40 @@
- (instancetype)init {
if ((self = [super init])) {
_set = [[NSMutableSet alloc] init];
_lock = OS_SPINLOCK_INIT;
pthread_mutex_init(&_mutex, NULL);
}
return self;
}
- (void)dealloc {
pthread_mutex_destroy(&_mutex);
}
- (void)addToSet:(NSUInteger)loggingContext {
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
[_set addObject:@(loggingContext)];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
}
- (void)removeFromSet:(NSUInteger)loggingContext {
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
[_set removeObject:@(loggingContext)];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
}
- (NSArray *)currentSet {
NSArray *result = nil;
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
result = [_set allObjects];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
return result;
}
@ -180,11 +184,11 @@
- (BOOL)isInSet:(NSUInteger)loggingContext {
BOOL result = NO;
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
result = [_set containsObject:@(loggingContext)];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
return result;
}

View File

@ -14,10 +14,9 @@
// prior written permission of Deusty, LLC.
#import "DDDispatchQueueLogFormatter.h"
#import <libkern/OSAtomic.h>
#import <pthread/pthread.h>
#import <objc/runtime.h>
#if !__has_feature(objc_arc)
#error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif
@ -29,7 +28,7 @@
int32_t _atomicLoggerCount;
NSDateFormatter *_threadUnsafeDateFormatter; // Use [self stringFromDate]
OSSpinLock _lock;
pthread_mutex_t _mutex;
NSUInteger _minQueueLength; // _prefix == Only access via atomic property
NSUInteger _maxQueueLength; // _prefix == Only access via atomic property
@ -63,7 +62,7 @@
_minQueueLength = 0;
_maxQueueLength = 0;
_lock = OS_SPINLOCK_INIT;
pthread_mutex_init(&_mutex, NULL);
_replacements = [[NSMutableDictionary alloc] init];
// Set default replacements:
@ -81,6 +80,10 @@
return self;
}
- (void)dealloc {
pthread_mutex_destroy(&_mutex);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Configuration
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -91,17 +94,17 @@
- (NSString *)replacementStringForQueueLabel:(NSString *)longLabel {
NSString *result = nil;
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
result = _replacements[longLabel];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
return result;
}
- (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel {
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
if (shortLabel) {
_replacements[longLabel] = shortLabel;
@ -109,7 +112,7 @@
[_replacements removeObjectForKey:longLabel];
}
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -214,11 +217,11 @@
fullLabel = logMessage->_threadName;
}
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
abrvLabel = _replacements[fullLabel];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
if (abrvLabel) {
queueThreadLabel = abrvLabel;

View File

@ -151,14 +151,16 @@ Configure your logging however you want. Change log levels per file (perfect for
### Requirements
The current version of Lumberjack requires:
- Xcode 8 or later
- Swift 3.0 or later
- iOS 5 or later
- OS X 10.7 or later
- Xcode 9 or later
- Swift 4.0 or later
- iOS 6 or later
- OS X 10.8 or later
- WatchOS 2 or later
- TVOS 9 or later
#### Backwards compability
- for iOS 5 and OS X 10.7, use the 3.3 version
- for Xcode 8 and Swift 3, use the 3.2 version
- for Xcode 7.3 and Swift 2.3, use the 2.4.0 version
- for Xcode 7.3 and Swift 2.2, use the 2.3.0 version
- for Xcode 7.2 and 7.1, use the 2.2.0 version

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Extensions/ConnectionPool/YapDatabaseConnectionPool.h

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Utilities/YapDatabaseCryptoUtils.h

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Extensions/ConnectionPool/YapDatabaseConnectionPool.h

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Utilities/YapDatabaseCryptoUtils.h

View File

@ -1,6 +1,6 @@
{
"name": "YapDatabase",
"version": "3.0",
"version": "3.0.2",
"summary": "A key/value store built atop sqlite for iOS & Mac.",
"homepage": "https://github.com/yapstudios/YapDatabase",
"license": "MIT",
@ -9,10 +9,10 @@
},
"source": {
"git": "https://github.com/yapstudios/YapDatabase.git",
"tag": "3.0"
"tag": "3.0.2"
},
"platforms": {
"osx": "10.9",
"osx": "10.10",
"ios": "8.0",
"tvos": "9.0",
"watchos": "2.0"
@ -139,6 +139,10 @@
"name": "ConnectionProxy",
"source_files": "YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}"
},
{
"name": "ConnectionPool",
"source_files": "YapDatabase/Extensions/ConnectionPool/**/*.{h,m,mm,c}"
},
{
"name": "ActionManager",
"osx": {
@ -288,6 +292,10 @@
"name": "ConnectionProxy",
"source_files": "YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}"
},
{
"name": "ConnectionPool",
"source_files": "YapDatabase/Extensions/ConnectionPool/**/*.{h,m,mm,c}"
},
{
"name": "ActionManager",
"osx": {

View File

@ -1,69 +1,72 @@
PODS:
- CocoaLumberjack (3.2.0):
- CocoaLumberjack/Default (= 3.2.0)
- CocoaLumberjack/Extensions (= 3.2.0)
- CocoaLumberjack/Default (3.2.0)
- CocoaLumberjack/Extensions (3.2.0):
- CocoaLumberjack (3.4.1):
- CocoaLumberjack/Default (= 3.4.1)
- CocoaLumberjack/Extensions (= 3.4.1)
- CocoaLumberjack/Default (3.4.1)
- CocoaLumberjack/Extensions (3.4.1):
- CocoaLumberjack/Default
- YapDatabase (3.0):
- YapDatabase/Standard (= 3.0)
- YapDatabase/Standard (3.0):
- YapDatabase/Standard/Core (= 3.0)
- YapDatabase/Standard/Extensions (= 3.0)
- YapDatabase/Standard/Core (3.0):
- YapDatabase (3.0.2):
- YapDatabase/Standard (= 3.0.2)
- YapDatabase/Standard (3.0.2):
- YapDatabase/Standard/Core (= 3.0.2)
- YapDatabase/Standard/Extensions (= 3.0.2)
- YapDatabase/Standard/Core (3.0.2):
- CocoaLumberjack
- YapDatabase/Standard/Extensions (3.0):
- YapDatabase/Standard/Extensions (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ActionManager (= 3.0)
- YapDatabase/Standard/Extensions/AutoView (= 3.0)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0)
- YapDatabase/Standard/Extensions/Hooks (= 3.0)
- YapDatabase/Standard/Extensions/ManualView (= 3.0)
- YapDatabase/Standard/Extensions/Relationships (= 3.0)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0)
- YapDatabase/Standard/Extensions/View (= 3.0)
- YapDatabase/Standard/Extensions/ActionManager (3.0):
- YapDatabase/Standard/Extensions/ActionManager (= 3.0.2)
- YapDatabase/Standard/Extensions/AutoView (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionPool (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0.2)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0.2)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0.2)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0.2)
- YapDatabase/Standard/Extensions/Hooks (= 3.0.2)
- YapDatabase/Standard/Extensions/ManualView (= 3.0.2)
- YapDatabase/Standard/Extensions/Relationships (= 3.0.2)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0.2)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/View (= 3.0.2)
- YapDatabase/Standard/Extensions/ActionManager (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/AutoView (3.0):
- YapDatabase/Standard/Extensions/AutoView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/CloudCore (3.0):
- YapDatabase/Standard/Extensions/CloudCore (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CloudKit (3.0):
- YapDatabase/Standard/Extensions/CloudKit (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0):
- YapDatabase/Standard/Extensions/ConnectionPool (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0):
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0):
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/FullTextSearch (3.0):
- YapDatabase/Standard/Extensions/FullTextSearch (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/Hooks (3.0):
- YapDatabase/Standard/Extensions/Hooks (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ManualView (3.0):
- YapDatabase/Standard/Extensions/ManualView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/Relationships (3.0):
- YapDatabase/Standard/Extensions/Relationships (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/RTreeIndex (3.0):
- YapDatabase/Standard/Extensions/RTreeIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/SearchResultsView (3.0):
- YapDatabase/Standard/Extensions/SearchResultsView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/FullTextSearch
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0):
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View (3.0):
- YapDatabase/Standard/Extensions/View (3.0.2):
- YapDatabase/Standard/Core
DEPENDENCIES:
@ -74,9 +77,9 @@ EXTERNAL SOURCES:
:path: ../../
SPEC CHECKSUMS:
CocoaLumberjack: 9b4aed7073d242f29cc2f62068d995faf67f703a
YapDatabase: 0cef6c79948169c924ae325d430ffcfa8a5231c2
CocoaLumberjack: 2e258a064cacc8eb9a2aca318e24d02a0a7fd56d
YapDatabase: 972eccb0c997d0dafe8192dccf7f58351914baf1
PODFILE CHECKSUM: 27f2264941859e807f069adfc2aa0a50167ae03d
PODFILE CHECKSUM: 8dceb5c937bc6e9558d8d75103d141eef959b637
COCOAPODS: 1.2.1
COCOAPODS: 1.4.0

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/CocoaLumberjack" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/CocoaLumberjack
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}

View File

@ -6,6 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
# Used as a return value for each invocation of `strip_invalid_archs` function.
STRIP_BINARY_RETVAL=0
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
# Copies and strips a vendored framework
install_framework()
{
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
@ -23,9 +31,9 @@ install_framework()
source="$(readlink "${source}")"
fi
# use filter instead of exclude so missing patterns dont' throw errors
echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
# Use filter instead of exclude so missing patterns don't throw errors.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
local basename
basename="$(basename -s .framework "$1")"
@ -54,6 +62,34 @@ install_framework()
fi
}
# Copies and strips a vendored dSYM
install_dsym() {
local source="$1"
if [ -r "$source" ]; then
# Copy the dSYM into a the targets temp dir.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
local basename
basename="$(basename -s .framework.dSYM "$source")"
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
# Strip invalid architectures so "fat" simulator / device frameworks work on device
if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
strip_invalid_archs "$binary"
fi
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
# Move the stripped file into its final destination.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
fi
fi
}
# Signs a framework with the provided identity
code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
@ -72,11 +108,19 @@ code_sign_if_enabled() {
# Strip invalid architectures
strip_invalid_archs() {
binary="$1"
# Get architectures for current file
archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
# Get architectures for current target binary
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
# Intersect them with the architectures we are building for
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
# If there are no archs supported by this binary then warn the user
if [[ -z "$intersected_archs" ]]; then
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
STRIP_BINARY_RETVAL=0
return
fi
stripped=""
for arch in $archs; do
if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
for arch in $binary_archs; do
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
# Strip non-valid architectures in-place
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
stripped="$stripped $arch"
@ -85,6 +129,7 @@ strip_invalid_archs() {
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
STRIP_BINARY_RETVAL=1
}
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then

View File

@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
XCASSET_FILES=()
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
case "${TARGETED_DEVICE_FAMILY}" in
1,2)
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
@ -44,29 +48,29 @@ EOM
fi
case $RESOURCE_PATH in
*.storyboard)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
;;
*.xcdatamodel)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
;;
*.xcdatamodeld)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
;;
*.xcmappingmodel)
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
;;
*.xcassets)
@ -74,7 +78,7 @@ EOM
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
;;
*)
echo "$RESOURCE_PATH"
echo "$RESOURCE_PATH" || true
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
;;
esac

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -6,6 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
# Used as a return value for each invocation of `strip_invalid_archs` function.
STRIP_BINARY_RETVAL=0
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
# Copies and strips a vendored framework
install_framework()
{
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
@ -23,9 +31,9 @@ install_framework()
source="$(readlink "${source}")"
fi
# use filter instead of exclude so missing patterns dont' throw errors
echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
# Use filter instead of exclude so missing patterns don't throw errors.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
local basename
basename="$(basename -s .framework "$1")"
@ -54,6 +62,34 @@ install_framework()
fi
}
# Copies and strips a vendored dSYM
install_dsym() {
local source="$1"
if [ -r "$source" ]; then
# Copy the dSYM into a the targets temp dir.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
local basename
basename="$(basename -s .framework.dSYM "$source")"
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
# Strip invalid architectures so "fat" simulator / device frameworks work on device
if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
strip_invalid_archs "$binary"
fi
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
# Move the stripped file into its final destination.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
fi
fi
}
# Signs a framework with the provided identity
code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
@ -72,11 +108,19 @@ code_sign_if_enabled() {
# Strip invalid architectures
strip_invalid_archs() {
binary="$1"
# Get architectures for current file
archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
# Get architectures for current target binary
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
# Intersect them with the architectures we are building for
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
# If there are no archs supported by this binary then warn the user
if [[ -z "$intersected_archs" ]]; then
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
STRIP_BINARY_RETVAL=0
return
fi
stripped=""
for arch in $archs; do
if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
for arch in $binary_archs; do
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
# Strip non-valid architectures in-place
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
stripped="$stripped $arch"
@ -85,6 +129,7 @@ strip_invalid_archs() {
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
STRIP_BINARY_RETVAL=1
}
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then

View File

@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
XCASSET_FILES=()
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
case "${TARGETED_DEVICE_FAMILY}" in
1,2)
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
@ -44,29 +48,29 @@ EOM
fi
case $RESOURCE_PATH in
*.storyboard)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
;;
*.xcdatamodel)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
;;
*.xcdatamodeld)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
;;
*.xcmappingmodel)
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
;;
*.xcassets)
@ -74,7 +78,7 @@ EOM
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
;;
*)
echo "$RESOURCE_PATH"
echo "$RESOURCE_PATH" || true
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
;;
esac

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -6,6 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
# Used as a return value for each invocation of `strip_invalid_archs` function.
STRIP_BINARY_RETVAL=0
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
# Copies and strips a vendored framework
install_framework()
{
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
@ -23,9 +31,9 @@ install_framework()
source="$(readlink "${source}")"
fi
# use filter instead of exclude so missing patterns dont' throw errors
echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
# Use filter instead of exclude so missing patterns don't throw errors.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
local basename
basename="$(basename -s .framework "$1")"
@ -54,6 +62,34 @@ install_framework()
fi
}
# Copies and strips a vendored dSYM
install_dsym() {
local source="$1"
if [ -r "$source" ]; then
# Copy the dSYM into a the targets temp dir.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
local basename
basename="$(basename -s .framework.dSYM "$source")"
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
# Strip invalid architectures so "fat" simulator / device frameworks work on device
if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
strip_invalid_archs "$binary"
fi
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
# Move the stripped file into its final destination.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
fi
fi
}
# Signs a framework with the provided identity
code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
@ -72,11 +108,19 @@ code_sign_if_enabled() {
# Strip invalid architectures
strip_invalid_archs() {
binary="$1"
# Get architectures for current file
archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
# Get architectures for current target binary
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
# Intersect them with the architectures we are building for
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
# If there are no archs supported by this binary then warn the user
if [[ -z "$intersected_archs" ]]; then
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
STRIP_BINARY_RETVAL=0
return
fi
stripped=""
for arch in $archs; do
if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
for arch in $binary_archs; do
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
# Strip non-valid architectures in-place
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
stripped="$stripped $arch"
@ -85,6 +129,7 @@ strip_invalid_archs() {
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
STRIP_BINARY_RETVAL=1
}
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then

View File

@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
XCASSET_FILES=()
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
case "${TARGETED_DEVICE_FAMILY}" in
1,2)
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
@ -44,29 +48,29 @@ EOM
fi
case $RESOURCE_PATH in
*.storyboard)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
;;
*.xcdatamodel)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
;;
*.xcdatamodeld)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
;;
*.xcmappingmodel)
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
;;
*.xcassets)
@ -74,7 +78,7 @@ EOM
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
;;
*)
echo "$RESOURCE_PATH"
echo "$RESOURCE_PATH" || true
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
;;
esac

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -1,11 +1,11 @@
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/YapDatabase
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/YapDatabase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE
OTHER_LDFLAGS = -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../..
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}

View File

@ -436,7 +436,7 @@
isa = PBXProject;
attributes = {
LastTestingUpgradeCheck = 0510;
LastUpgradeCheck = 0820;
LastUpgradeCheck = 0910;
ORGANIZATIONNAME = "Robbie Hanson";
TargetAttributes = {
98987F7E1C71D79600173D90 = {
@ -501,13 +501,16 @@
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-MultiprocessApp-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
32E94495040550E360BC0A06 /* [CP] Check Pods Manifest.lock */ = {
@ -516,13 +519,16 @@
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-YapDatabase-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
3F3B1E8341485E819B1ECFB9 /* [CP] Copy Pods Resources */ = {
@ -591,13 +597,16 @@
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-YapDatabaseTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
DDAB329B4D08BE3FF60F3C63 /* [CP] Copy Pods Resources */ = {
@ -715,7 +724,6 @@
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
};
@ -740,7 +748,6 @@
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_NAME = "$(TARGET_NAME)";
};
@ -753,12 +760,18 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@ -781,7 +794,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.10;
MACOSX_DEPLOYMENT_TARGET = 10.12;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
@ -794,12 +807,18 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@ -815,7 +834,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.10;
MACOSX_DEPLOYMENT_TARGET = 10.12;
SDKROOT = macosx;
};
name = Release;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0820"
LastUpgradeVersion = "0910"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
@ -45,6 +46,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0820"
LastUpgradeVersion = "0910"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,69 +1,72 @@
PODS:
- CocoaLumberjack (3.2.0):
- CocoaLumberjack/Default (= 3.2.0)
- CocoaLumberjack/Extensions (= 3.2.0)
- CocoaLumberjack/Default (3.2.0)
- CocoaLumberjack/Extensions (3.2.0):
- CocoaLumberjack (3.4.1):
- CocoaLumberjack/Default (= 3.4.1)
- CocoaLumberjack/Extensions (= 3.4.1)
- CocoaLumberjack/Default (3.4.1)
- CocoaLumberjack/Extensions (3.4.1):
- CocoaLumberjack/Default
- YapDatabase (3.0):
- YapDatabase/Standard (= 3.0)
- YapDatabase/Standard (3.0):
- YapDatabase/Standard/Core (= 3.0)
- YapDatabase/Standard/Extensions (= 3.0)
- YapDatabase/Standard/Core (3.0):
- YapDatabase (3.0.2):
- YapDatabase/Standard (= 3.0.2)
- YapDatabase/Standard (3.0.2):
- YapDatabase/Standard/Core (= 3.0.2)
- YapDatabase/Standard/Extensions (= 3.0.2)
- YapDatabase/Standard/Core (3.0.2):
- CocoaLumberjack
- YapDatabase/Standard/Extensions (3.0):
- YapDatabase/Standard/Extensions (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ActionManager (= 3.0)
- YapDatabase/Standard/Extensions/AutoView (= 3.0)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0)
- YapDatabase/Standard/Extensions/Hooks (= 3.0)
- YapDatabase/Standard/Extensions/ManualView (= 3.0)
- YapDatabase/Standard/Extensions/Relationships (= 3.0)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0)
- YapDatabase/Standard/Extensions/View (= 3.0)
- YapDatabase/Standard/Extensions/ActionManager (3.0):
- YapDatabase/Standard/Extensions/ActionManager (= 3.0.2)
- YapDatabase/Standard/Extensions/AutoView (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionPool (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0.2)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0.2)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0.2)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0.2)
- YapDatabase/Standard/Extensions/Hooks (= 3.0.2)
- YapDatabase/Standard/Extensions/ManualView (= 3.0.2)
- YapDatabase/Standard/Extensions/Relationships (= 3.0.2)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0.2)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/View (= 3.0.2)
- YapDatabase/Standard/Extensions/ActionManager (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/AutoView (3.0):
- YapDatabase/Standard/Extensions/AutoView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/CloudCore (3.0):
- YapDatabase/Standard/Extensions/CloudCore (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CloudKit (3.0):
- YapDatabase/Standard/Extensions/CloudKit (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0):
- YapDatabase/Standard/Extensions/ConnectionPool (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0):
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0):
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/FullTextSearch (3.0):
- YapDatabase/Standard/Extensions/FullTextSearch (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/Hooks (3.0):
- YapDatabase/Standard/Extensions/Hooks (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ManualView (3.0):
- YapDatabase/Standard/Extensions/ManualView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/Relationships (3.0):
- YapDatabase/Standard/Extensions/Relationships (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/RTreeIndex (3.0):
- YapDatabase/Standard/Extensions/RTreeIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/SearchResultsView (3.0):
- YapDatabase/Standard/Extensions/SearchResultsView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/FullTextSearch
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0):
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View (3.0):
- YapDatabase/Standard/Extensions/View (3.0.2):
- YapDatabase/Standard/Core
DEPENDENCIES:
@ -74,9 +77,9 @@ EXTERNAL SOURCES:
:path: ../../
SPEC CHECKSUMS:
CocoaLumberjack: 9b4aed7073d242f29cc2f62068d995faf67f703a
YapDatabase: 0cef6c79948169c924ae325d430ffcfa8a5231c2
CocoaLumberjack: 2e258a064cacc8eb9a2aca318e24d02a0a7fd56d
YapDatabase: 972eccb0c997d0dafe8192dccf7f58351914baf1
PODFILE CHECKSUM: 56e0faf7e85fac2003da53b861394c2731e637d4
COCOAPODS: 1.2.1
COCOAPODS: 1.4.0

View File

@ -86,10 +86,10 @@ public func DDLogError(_ message: @autoclosure () -> String, level: DDLogLevel =
public func CurrentFileName(_ fileName: StaticString = #file) -> String {
var str = String(describing: fileName)
if let idx = str.range(of: "/", options: .backwards)?.upperBound {
str = str.substring(from: idx)
str = String(str[idx...])
}
if let idx = str.range(of: ".", options: .backwards)?.lowerBound {
str = str.substring(to: idx)
str = String(str[..<idx])
}
return str
}

View File

@ -397,7 +397,7 @@ extern unsigned long long const kDDDefaultLogFilesDiskQuota;
* You can optionally force the current log file to be rolled with this method.
* CompletionBlock will be called on main queue.
*/
- (void)rollLogFileWithCompletionBlock:(void (^)())completionBlock NS_SWIFT_NAME(rollLogFile(withCompletion:));
- (void)rollLogFileWithCompletionBlock:(void (^)(void))completionBlock NS_SWIFT_NAME(rollLogFile(withCompletion:));
/**
* Method is deprecated.

View File

@ -279,47 +279,18 @@ unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20
- (BOOL)isLogFile:(NSString *)fileName {
NSString *appName = [self applicationName];
BOOL hasProperPrefix = [fileName hasPrefix:appName];
// We need to add a space to the name as otherwise we could match applications that have the name prefix.
BOOL hasProperPrefix = [fileName hasPrefix:[appName stringByAppendingString:@" "]];
BOOL hasProperSuffix = [fileName hasSuffix:@".log"];
BOOL hasProperDate = NO;
if (hasProperPrefix && hasProperSuffix) {
NSUInteger lengthOfMiddle = fileName.length - appName.length - @".log".length;
// Date string should have at least 16 characters - " 2013-12-03 17-14"
if (lengthOfMiddle >= 17) {
NSRange range = NSMakeRange(appName.length, lengthOfMiddle);
NSString *middle = [fileName substringWithRange:range];
NSArray *components = [middle componentsSeparatedByString:@" "];
// When creating logfile if there is existing file with the same name, we append attemp number at the end.
// Thats why here we can have three or four components. For details see createNewLogFile method.
//
// Components:
// "", "2013-12-03", "17-14"
// or
// "", "2013-12-03", "17-14", "1"
if (components.count == 3 || components.count == 4) {
NSString *dateString = [NSString stringWithFormat:@"%@ %@", components[1], components[2]];
NSDateFormatter *dateFormatter = [self logFileDateFormatter];
NSDate *date = [dateFormatter dateFromString:dateString];
if (date) {
hasProperDate = YES;
}
}
}
}
return (hasProperPrefix && hasProperDate && hasProperSuffix);
return (hasProperPrefix && hasProperSuffix);
}
// if you change formatter, then change sortedLogFileInfos method also accordingly
- (NSDateFormatter *)logFileDateFormatter {
NSMutableDictionary *dictionary = [[NSThread currentThread]
threadDictionary];
NSString *dateFormat = @"yyyy'-'MM'-'dd' 'HH'-'mm'";
NSString *dateFormat = @"yyyy'-'MM'-'dd'--'HH'-'mm'-'ss'-'SSS'";
NSString *key = [NSString stringWithFormat:@"logFileDateFormatter.%@", dateFormat];
NSDateFormatter *dateFormatter = dictionary[key];
@ -417,13 +388,35 @@ unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20
}
- (NSArray *)sortedLogFileInfos {
return [[self unsortedLogFileInfos] sortedArrayUsingSelector:@selector(reverseCompareByCreationDate:)];
return [[self unsortedLogFileInfos] sortedArrayUsingComparator:^NSComparisonResult(DDLogFileInfo * _Nonnull obj1, DDLogFileInfo * _Nonnull obj2) {
NSDate *date1 = [NSDate new];
NSDate *date2 = [NSDate new];
NSArray<NSString *> *arrayComponent = [[obj1 fileName] componentsSeparatedByString:@" "];
if (arrayComponent.count > 0) {
NSString *stringDate = arrayComponent.lastObject;
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".log" withString:@""];
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".archived" withString:@""];
date1 = [[self logFileDateFormatter] dateFromString:stringDate] ?: [obj1 creationDate];
}
arrayComponent = [[obj2 fileName] componentsSeparatedByString:@" "];
if (arrayComponent.count > 0) {
NSString *stringDate = arrayComponent.lastObject;
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".log" withString:@""];
stringDate = [stringDate stringByReplacingOccurrencesOfString:@".archived" withString:@""];
date2 = [[self logFileDateFormatter] dateFromString:stringDate] ?: [obj2 creationDate];
}
return [date2 compare:date1 ?: [NSDate new]];
}];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Creation
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//if you change newLogFileName , then change isLogFile method also accordingly
- (NSString *)newLogFileName {
NSString *appName = [self applicationName];
@ -779,7 +772,7 @@ unsigned long long const kDDDefaultLogFilesDiskQuota = 20 * 1024 * 1024; // 20
[self rollLogFileWithCompletionBlock:nil];
}
- (void)rollLogFileWithCompletionBlock:(void (^)())completionBlock {
- (void)rollLogFileWithCompletionBlock:(void (^)(void))completionBlock {
// This method is public.
// We need to execute the rolling on our logging thread/queue.

View File

@ -351,17 +351,16 @@ static NSUInteger _numProcessors;
// Dispatch semaphores call down to the kernel only when the calling thread needs to be blocked.
// If the calling semaphore does not need to block, no kernel call is made.
dispatch_semaphore_wait(_queueSemaphore, DISPATCH_TIME_FOREVER);
// We've now sure we won't overflow the queue.
// It is time to queue our log message.
dispatch_block_t logBlock = ^{
dispatch_semaphore_wait(_queueSemaphore, DISPATCH_TIME_FOREVER);
@autoreleasepool {
[self lt_log:logMessage];
}
};
// We've now sure we won't overflow the queue.
// It is time to queue our log message.
if (asyncFlag) {
dispatch_async(_loggingQueue, logBlock);
} else {

View File

@ -25,7 +25,6 @@
/**
* This class provides a logger for the Apple os_log facility.
**/
API_AVAILABLE(ios(10.0), macos(10.12), tvos(10.0), watchos(3.0))
@interface DDOSLogger : DDAbstractLogger <DDLogger>
/**

View File

@ -48,26 +48,30 @@ static DDOSLogger *sharedInstance;
return;
}
NSString * message = _logFormatter ? [_logFormatter formatLogMessage:logMessage] : logMessage->_message;
if (message) {
const char *msg = [message UTF8String];
if(@available(iOS 10.0, macOS 10.12, tvOS 10.0, watchOS 3.0, *)) {
switch (logMessage->_flag) {
case DDLogFlagError :
os_log_error(OS_LOG_DEFAULT, msg);
break;
case DDLogFlagWarning :
case DDLogFlagInfo :
os_log_info(OS_LOG_DEFAULT, msg);
break;
case DDLogFlagDebug :
case DDLogFlagVerbose :
default :
os_log_debug(OS_LOG_DEFAULT, msg);
break;
NSString * message = _logFormatter ? [_logFormatter formatLogMessage:logMessage] : logMessage->_message;
if (message) {
const char *msg = [message UTF8String];
switch (logMessage->_flag) {
case DDLogFlagError :
os_log_error(OS_LOG_DEFAULT, "%{public}s", msg);
break;
case DDLogFlagWarning :
case DDLogFlagInfo :
os_log_info(OS_LOG_DEFAULT, "%{public}s", msg);
break;
case DDLogFlagDebug :
case DDLogFlagVerbose :
default :
os_log_debug(OS_LOG_DEFAULT, "%{public}s", msg);
break;
}
}
}
}
- (NSString *)loggerName {

View File

@ -14,7 +14,7 @@
// prior written permission of Deusty, LLC.
#import "DDContextFilterLogFormatter.h"
#import <libkern/OSAtomic.h>
#import <pthread/pthread.h>
#if !__has_feature(objc_arc)
#error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
@ -131,7 +131,7 @@
@interface DDLoggingContextSet () {
OSSpinLock _lock;
pthread_mutex_t _mutex;
NSMutableSet *_set;
}
@ -143,36 +143,40 @@
- (instancetype)init {
if ((self = [super init])) {
_set = [[NSMutableSet alloc] init];
_lock = OS_SPINLOCK_INIT;
pthread_mutex_init(&_mutex, NULL);
}
return self;
}
- (void)dealloc {
pthread_mutex_destroy(&_mutex);
}
- (void)addToSet:(NSUInteger)loggingContext {
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
[_set addObject:@(loggingContext)];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
}
- (void)removeFromSet:(NSUInteger)loggingContext {
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
[_set removeObject:@(loggingContext)];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
}
- (NSArray *)currentSet {
NSArray *result = nil;
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
result = [_set allObjects];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
return result;
}
@ -180,11 +184,11 @@
- (BOOL)isInSet:(NSUInteger)loggingContext {
BOOL result = NO;
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
result = [_set containsObject:@(loggingContext)];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
return result;
}

View File

@ -14,10 +14,9 @@
// prior written permission of Deusty, LLC.
#import "DDDispatchQueueLogFormatter.h"
#import <libkern/OSAtomic.h>
#import <pthread/pthread.h>
#import <objc/runtime.h>
#if !__has_feature(objc_arc)
#error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif
@ -29,7 +28,7 @@
int32_t _atomicLoggerCount;
NSDateFormatter *_threadUnsafeDateFormatter; // Use [self stringFromDate]
OSSpinLock _lock;
pthread_mutex_t _mutex;
NSUInteger _minQueueLength; // _prefix == Only access via atomic property
NSUInteger _maxQueueLength; // _prefix == Only access via atomic property
@ -63,7 +62,7 @@
_minQueueLength = 0;
_maxQueueLength = 0;
_lock = OS_SPINLOCK_INIT;
pthread_mutex_init(&_mutex, NULL);
_replacements = [[NSMutableDictionary alloc] init];
// Set default replacements:
@ -81,6 +80,10 @@
return self;
}
- (void)dealloc {
pthread_mutex_destroy(&_mutex);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark Configuration
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -91,17 +94,17 @@
- (NSString *)replacementStringForQueueLabel:(NSString *)longLabel {
NSString *result = nil;
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
result = _replacements[longLabel];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
return result;
}
- (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel {
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
if (shortLabel) {
_replacements[longLabel] = shortLabel;
@ -109,7 +112,7 @@
[_replacements removeObjectForKey:longLabel];
}
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -214,11 +217,11 @@
fullLabel = logMessage->_threadName;
}
OSSpinLockLock(&_lock);
pthread_mutex_lock(&_mutex);
{
abrvLabel = _replacements[fullLabel];
}
OSSpinLockUnlock(&_lock);
pthread_mutex_unlock(&_mutex);
if (abrvLabel) {
queueThreadLabel = abrvLabel;

View File

@ -151,14 +151,16 @@ Configure your logging however you want. Change log levels per file (perfect for
### Requirements
The current version of Lumberjack requires:
- Xcode 8 or later
- Swift 3.0 or later
- iOS 5 or later
- OS X 10.7 or later
- Xcode 9 or later
- Swift 4.0 or later
- iOS 6 or later
- OS X 10.8 or later
- WatchOS 2 or later
- TVOS 9 or later
#### Backwards compability
- for iOS 5 and OS X 10.7, use the 3.3 version
- for Xcode 8 and Swift 3, use the 3.2 version
- for Xcode 7.3 and Swift 2.3, use the 2.4.0 version
- for Xcode 7.3 and Swift 2.2, use the 2.3.0 version
- for Xcode 7.2 and 7.1, use the 2.2.0 version

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Extensions/ConnectionPool/YapDatabaseConnectionPool.h

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Utilities/YapDatabaseCryptoUtils.h

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Extensions/ConnectionPool/YapDatabaseConnectionPool.h

View File

@ -0,0 +1 @@
../../../../../../YapDatabase/Utilities/YapDatabaseCryptoUtils.h

View File

@ -1,6 +1,6 @@
{
"name": "YapDatabase",
"version": "3.0",
"version": "3.0.2",
"summary": "A key/value store built atop sqlite for iOS & Mac.",
"homepage": "https://github.com/yapstudios/YapDatabase",
"license": "MIT",
@ -9,10 +9,10 @@
},
"source": {
"git": "https://github.com/yapstudios/YapDatabase.git",
"tag": "3.0"
"tag": "3.0.2"
},
"platforms": {
"osx": "10.9",
"osx": "10.10",
"ios": "8.0",
"tvos": "9.0",
"watchos": "2.0"
@ -139,6 +139,10 @@
"name": "ConnectionProxy",
"source_files": "YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}"
},
{
"name": "ConnectionPool",
"source_files": "YapDatabase/Extensions/ConnectionPool/**/*.{h,m,mm,c}"
},
{
"name": "ActionManager",
"osx": {
@ -288,6 +292,10 @@
"name": "ConnectionProxy",
"source_files": "YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}"
},
{
"name": "ConnectionPool",
"source_files": "YapDatabase/Extensions/ConnectionPool/**/*.{h,m,mm,c}"
},
{
"name": "ActionManager",
"osx": {

View File

@ -1,69 +1,72 @@
PODS:
- CocoaLumberjack (3.2.0):
- CocoaLumberjack/Default (= 3.2.0)
- CocoaLumberjack/Extensions (= 3.2.0)
- CocoaLumberjack/Default (3.2.0)
- CocoaLumberjack/Extensions (3.2.0):
- CocoaLumberjack (3.4.1):
- CocoaLumberjack/Default (= 3.4.1)
- CocoaLumberjack/Extensions (= 3.4.1)
- CocoaLumberjack/Default (3.4.1)
- CocoaLumberjack/Extensions (3.4.1):
- CocoaLumberjack/Default
- YapDatabase (3.0):
- YapDatabase/Standard (= 3.0)
- YapDatabase/Standard (3.0):
- YapDatabase/Standard/Core (= 3.0)
- YapDatabase/Standard/Extensions (= 3.0)
- YapDatabase/Standard/Core (3.0):
- YapDatabase (3.0.2):
- YapDatabase/Standard (= 3.0.2)
- YapDatabase/Standard (3.0.2):
- YapDatabase/Standard/Core (= 3.0.2)
- YapDatabase/Standard/Extensions (= 3.0.2)
- YapDatabase/Standard/Core (3.0.2):
- CocoaLumberjack
- YapDatabase/Standard/Extensions (3.0):
- YapDatabase/Standard/Extensions (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ActionManager (= 3.0)
- YapDatabase/Standard/Extensions/AutoView (= 3.0)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0)
- YapDatabase/Standard/Extensions/Hooks (= 3.0)
- YapDatabase/Standard/Extensions/ManualView (= 3.0)
- YapDatabase/Standard/Extensions/Relationships (= 3.0)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0)
- YapDatabase/Standard/Extensions/View (= 3.0)
- YapDatabase/Standard/Extensions/ActionManager (3.0):
- YapDatabase/Standard/Extensions/ActionManager (= 3.0.2)
- YapDatabase/Standard/Extensions/AutoView (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudCore (= 3.0.2)
- YapDatabase/Standard/Extensions/CloudKit (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionPool (= 3.0.2)
- YapDatabase/Standard/Extensions/ConnectionProxy (= 3.0.2)
- YapDatabase/Standard/Extensions/CrossProcessNotification (= 3.0.2)
- YapDatabase/Standard/Extensions/FilteredView (= 3.0.2)
- YapDatabase/Standard/Extensions/FullTextSearch (= 3.0.2)
- YapDatabase/Standard/Extensions/Hooks (= 3.0.2)
- YapDatabase/Standard/Extensions/ManualView (= 3.0.2)
- YapDatabase/Standard/Extensions/Relationships (= 3.0.2)
- YapDatabase/Standard/Extensions/RTreeIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/SearchResultsView (= 3.0.2)
- YapDatabase/Standard/Extensions/SecondaryIndex (= 3.0.2)
- YapDatabase/Standard/Extensions/View (= 3.0.2)
- YapDatabase/Standard/Extensions/ActionManager (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/AutoView (3.0):
- YapDatabase/Standard/Extensions/AutoView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/CloudCore (3.0):
- YapDatabase/Standard/Extensions/CloudCore (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CloudKit (3.0):
- YapDatabase/Standard/Extensions/CloudKit (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0):
- YapDatabase/Standard/Extensions/ConnectionPool (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0):
- YapDatabase/Standard/Extensions/ConnectionProxy (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0):
- YapDatabase/Standard/Extensions/CrossProcessNotification (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/FilteredView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/FullTextSearch (3.0):
- YapDatabase/Standard/Extensions/FullTextSearch (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/Hooks (3.0):
- YapDatabase/Standard/Extensions/Hooks (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/ManualView (3.0):
- YapDatabase/Standard/Extensions/ManualView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View
- YapDatabase/Standard/Extensions/Relationships (3.0):
- YapDatabase/Standard/Extensions/Relationships (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/RTreeIndex (3.0):
- YapDatabase/Standard/Extensions/RTreeIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/SearchResultsView (3.0):
- YapDatabase/Standard/Extensions/SearchResultsView (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/AutoView
- YapDatabase/Standard/Extensions/FullTextSearch
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0):
- YapDatabase/Standard/Extensions/SecondaryIndex (3.0.2):
- YapDatabase/Standard/Core
- YapDatabase/Standard/Extensions/View (3.0):
- YapDatabase/Standard/Extensions/View (3.0.2):
- YapDatabase/Standard/Core
DEPENDENCIES:
@ -74,9 +77,9 @@ EXTERNAL SOURCES:
:path: ../../
SPEC CHECKSUMS:
CocoaLumberjack: 9b4aed7073d242f29cc2f62068d995faf67f703a
YapDatabase: 0cef6c79948169c924ae325d430ffcfa8a5231c2
CocoaLumberjack: 2e258a064cacc8eb9a2aca318e24d02a0a7fd56d
YapDatabase: 972eccb0c997d0dafe8192dccf7f58351914baf1
PODFILE CHECKSUM: 56e0faf7e85fac2003da53b861394c2731e637d4
COCOAPODS: 1.2.1
COCOAPODS: 1.4.0

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/CocoaLumberjack" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/CocoaLumberjack
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}

View File

@ -6,6 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
# Used as a return value for each invocation of `strip_invalid_archs` function.
STRIP_BINARY_RETVAL=0
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
# Copies and strips a vendored framework
install_framework()
{
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
@ -23,9 +31,9 @@ install_framework()
source="$(readlink "${source}")"
fi
# use filter instead of exclude so missing patterns dont' throw errors
echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
# Use filter instead of exclude so missing patterns don't throw errors.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
local basename
basename="$(basename -s .framework "$1")"
@ -54,6 +62,34 @@ install_framework()
fi
}
# Copies and strips a vendored dSYM
install_dsym() {
local source="$1"
if [ -r "$source" ]; then
# Copy the dSYM into a the targets temp dir.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
local basename
basename="$(basename -s .framework.dSYM "$source")"
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
# Strip invalid architectures so "fat" simulator / device frameworks work on device
if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
strip_invalid_archs "$binary"
fi
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
# Move the stripped file into its final destination.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
fi
fi
}
# Signs a framework with the provided identity
code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
@ -72,11 +108,19 @@ code_sign_if_enabled() {
# Strip invalid architectures
strip_invalid_archs() {
binary="$1"
# Get architectures for current file
archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
# Get architectures for current target binary
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
# Intersect them with the architectures we are building for
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
# If there are no archs supported by this binary then warn the user
if [[ -z "$intersected_archs" ]]; then
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
STRIP_BINARY_RETVAL=0
return
fi
stripped=""
for arch in $archs; do
if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
for arch in $binary_archs; do
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
# Strip non-valid architectures in-place
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
stripped="$stripped $arch"
@ -85,6 +129,7 @@ strip_invalid_archs() {
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
STRIP_BINARY_RETVAL=1
}
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then

View File

@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
XCASSET_FILES=()
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
case "${TARGETED_DEVICE_FAMILY}" in
1,2)
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
@ -44,29 +48,29 @@ EOM
fi
case $RESOURCE_PATH in
*.storyboard)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
;;
*.xcdatamodel)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
;;
*.xcdatamodeld)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
;;
*.xcmappingmodel)
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
;;
*.xcassets)
@ -74,7 +78,7 @@ EOM
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
;;
*)
echo "$RESOURCE_PATH"
echo "$RESOURCE_PATH" || true
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
;;
esac

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -6,6 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
# Used as a return value for each invocation of `strip_invalid_archs` function.
STRIP_BINARY_RETVAL=0
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
# Copies and strips a vendored framework
install_framework()
{
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
@ -23,9 +31,9 @@ install_framework()
source="$(readlink "${source}")"
fi
# use filter instead of exclude so missing patterns dont' throw errors
echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
# Use filter instead of exclude so missing patterns don't throw errors.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
local basename
basename="$(basename -s .framework "$1")"
@ -54,6 +62,34 @@ install_framework()
fi
}
# Copies and strips a vendored dSYM
install_dsym() {
local source="$1"
if [ -r "$source" ]; then
# Copy the dSYM into a the targets temp dir.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
local basename
basename="$(basename -s .framework.dSYM "$source")"
binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
# Strip invalid architectures so "fat" simulator / device frameworks work on device
if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
strip_invalid_archs "$binary"
fi
if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
# Move the stripped file into its final destination.
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
else
# The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
fi
fi
}
# Signs a framework with the provided identity
code_sign_if_enabled() {
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
@ -72,11 +108,19 @@ code_sign_if_enabled() {
# Strip invalid architectures
strip_invalid_archs() {
binary="$1"
# Get architectures for current file
archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
# Get architectures for current target binary
binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
# Intersect them with the architectures we are building for
intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
# If there are no archs supported by this binary then warn the user
if [[ -z "$intersected_archs" ]]; then
echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
STRIP_BINARY_RETVAL=0
return
fi
stripped=""
for arch in $archs; do
if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
for arch in $binary_archs; do
if ! [[ "${ARCHS}" == *"$arch"* ]]; then
# Strip non-valid architectures in-place
lipo -remove "$arch" -output "$binary" "$binary" || exit 1
stripped="$stripped $arch"
@ -85,6 +129,7 @@ strip_invalid_archs() {
if [[ "$stripped" ]]; then
echo "Stripped $binary of architectures:$stripped"
fi
STRIP_BINARY_RETVAL=1
}
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then

View File

@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
XCASSET_FILES=()
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
case "${TARGETED_DEVICE_FAMILY}" in
1,2)
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
@ -44,29 +48,29 @@ EOM
fi
case $RESOURCE_PATH in
*.storyboard)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
;;
*.xcdatamodel)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
;;
*.xcdatamodeld)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
;;
*.xcmappingmodel)
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
;;
*.xcassets)
@ -74,7 +78,7 @@ EOM
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
;;
*)
echo "$RESOURCE_PATH"
echo "$RESOURCE_PATH" || true
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
;;
esac

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -1,9 +1,9 @@
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack" "$PODS_CONFIGURATION_BUILD_DIR/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack" "${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/CocoaLumberjack" -isystem "${PODS_ROOT}/Headers/Public/YapDatabase"
OTHER_LDFLAGS = $(inherited) -ObjC -l"CocoaLumberjack" -l"YapDatabase" -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
PODS_ROOT = ${SRCROOT}/Pods

View File

@ -1,11 +1,11 @@
CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/YapDatabase
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/YapDatabase
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/YapDatabase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CocoaLumberjack" "${PODS_ROOT}/Headers/Public/YapDatabase"
LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/CocoaLumberjack"
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CocoaLumberjack"
OTHER_CFLAGS = $(inherited) -DYAP_STANDARD_SQLITE
OTHER_LDFLAGS = -l"c++" -l"sqlite3" -framework "SystemConfiguration"
PODS_BUILD_DIR = $BUILD_DIR
PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../..
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}

View File

@ -553,13 +553,16 @@
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-YapDatabase-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
3397BBC53BC83C63A5C6FE2F /* [CP] Copy Pods Resources */ = {
@ -626,13 +629,16 @@
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-YapDatabaseTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */

View File

@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "YapDatabase"
s.version = "3.0.2"
s.version = "3.1.1"
s.summary = "A key/value store built atop sqlite for iOS & Mac."
s.homepage = "https://github.com/yapstudios/YapDatabase"
s.license = 'MIT'
@ -13,7 +13,7 @@ Pod::Spec.new do |s|
:tag => s.version.to_s
}
s.osx.deployment_target = '10.9'
s.osx.deployment_target = '10.10'
s.ios.deployment_target = '8.0'
s.tvos.deployment_target = '9.0'
s.watchos.deployment_target = '2.0'
@ -109,6 +109,10 @@ Pod::Spec.new do |s|
sse.subspec 'ConnectionProxy' do |ssee|
ssee.source_files = 'YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}'
end
sse.subspec 'ConnectionPool' do |ssee|
ssee.source_files = 'YapDatabase/Extensions/ConnectionPool/**/*.{h,m,mm,c}'
end
sse.subspec 'ActionManager' do |ssee|
ssee.osx.framework = 'SystemConfiguration'
@ -210,6 +214,10 @@ Pod::Spec.new do |s|
sse.subspec 'ConnectionProxy' do |ssee|
ssee.source_files = 'YapDatabase/Extensions/ConnectionProxy/**/*.{h,m,mm,c}'
end
sse.subspec 'ConnectionPool' do |ssee|
ssee.source_files = 'YapDatabase/Extensions/ConnectionPool/**/*.{h,m,mm,c}'
end
sse.subspec 'ActionManager' do |ssee|
ssee.osx.framework = 'SystemConfiguration'

View File

@ -685,6 +685,94 @@
DCAF52501C4867B000562C92 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DCAF524F1C4867B000562C92 /* main.m */; };
DCAF52541C48681000562C92 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DCAF52521C48681000562C92 /* Main.storyboard */; };
DCAF52581C48685400562C92 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCAF52571C48685400562C92 /* Assets.xcassets */; };
DCB8AD0020604A26000B2D76 /* YapDatabaseConnectionPool.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB8ACFE20604A25000B2D76 /* YapDatabaseConnectionPool.m */; };
DCB8AD0120604A26000B2D76 /* YapDatabaseConnectionPool.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB8ACFF20604A25000B2D76 /* YapDatabaseConnectionPool.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCB8AD0220604A89000B2D76 /* YapDatabaseConnectionPool.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB8ACFE20604A25000B2D76 /* YapDatabaseConnectionPool.m */; };
DCB8AD0320604A8A000B2D76 /* YapDatabaseConnectionPool.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB8ACFE20604A25000B2D76 /* YapDatabaseConnectionPool.m */; };
DCB8AD0420604A8B000B2D76 /* YapDatabaseConnectionPool.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB8ACFE20604A25000B2D76 /* YapDatabaseConnectionPool.m */; };
DCB8AD0520604A9D000B2D76 /* YapDatabaseConnectionPool.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB8ACFF20604A25000B2D76 /* YapDatabaseConnectionPool.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCB8AD0620604A9E000B2D76 /* YapDatabaseConnectionPool.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB8ACFF20604A25000B2D76 /* YapDatabaseConnectionPool.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCB8AD0720604A9E000B2D76 /* YapDatabaseConnectionPool.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB8ACFF20604A25000B2D76 /* YapDatabaseConnectionPool.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C4B1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C331FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m */; };
DCBA3C4C1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C331FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m */; };
DCBA3C4D1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C331FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m */; };
DCBA3C4E1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C331FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m */; };
DCBA3C4F1FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C341FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C501FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C341FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C511FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C341FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C521FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C341FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C531FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C351FAE0EC50086289D /* YapDatabaseCloudCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C541FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C351FAE0EC50086289D /* YapDatabaseCloudCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C551FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C351FAE0EC50086289D /* YapDatabaseCloudCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C561FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C351FAE0EC50086289D /* YapDatabaseCloudCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C571FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C361FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C581FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C361FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C591FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C361FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C5A1FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C361FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C5B1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C381FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h */; };
DCBA3C5C1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C381FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h */; };
DCBA3C5D1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C381FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h */; };
DCBA3C5E1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C381FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h */; };
DCBA3C5F1FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C391FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h */; };
DCBA3C601FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C391FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h */; };
DCBA3C611FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C391FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h */; };
DCBA3C621FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C391FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h */; };
DCBA3C631FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3A1FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h */; };
DCBA3C641FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3A1FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h */; };
DCBA3C651FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3A1FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h */; };
DCBA3C661FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3A1FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h */; };
DCBA3C671FAE0EC50086289D /* YapManyToManyCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3C1FAE0EC50086289D /* YapManyToManyCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C681FAE0EC50086289D /* YapManyToManyCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3C1FAE0EC50086289D /* YapManyToManyCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C691FAE0EC50086289D /* YapManyToManyCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3C1FAE0EC50086289D /* YapManyToManyCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C6A1FAE0EC50086289D /* YapManyToManyCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3C1FAE0EC50086289D /* YapManyToManyCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C6B1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C3E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m */; };
DCBA3C6C1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C3E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m */; };
DCBA3C6D1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C3E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m */; };
DCBA3C6E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C3E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m */; };
DCBA3C6F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C701FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C711FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C721FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C3F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C731FAE0EC50086289D /* YapManyToManyCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C401FAE0EC50086289D /* YapManyToManyCache.m */; };
DCBA3C741FAE0EC50086289D /* YapManyToManyCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C401FAE0EC50086289D /* YapManyToManyCache.m */; };
DCBA3C751FAE0EC50086289D /* YapManyToManyCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C401FAE0EC50086289D /* YapManyToManyCache.m */; };
DCBA3C761FAE0EC50086289D /* YapManyToManyCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C401FAE0EC50086289D /* YapManyToManyCache.m */; };
DCBA3C771FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C421FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m */; };
DCBA3C781FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C421FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m */; };
DCBA3C791FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C421FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m */; };
DCBA3C7A1FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C421FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m */; };
DCBA3C7B1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C431FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C7C1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C431FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C7D1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C431FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C7E1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C431FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C7F1FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C441FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C801FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C441FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C811FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C441FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C821FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C441FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C831FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C451FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m */; };
DCBA3C841FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C451FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m */; };
DCBA3C851FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C451FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m */; };
DCBA3C861FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C451FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m */; };
DCBA3C871FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C461FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C881FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C461FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C891FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C461FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C8A1FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C461FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C8B1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C471FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C8C1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C471FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C8D1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C471FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C8E1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = DCBA3C471FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCBA3C8F1FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C481FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m */; };
DCBA3C901FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C481FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m */; };
DCBA3C911FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C481FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m */; };
DCBA3C921FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C481FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m */; };
DCBA3C931FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C491FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m */; };
DCBA3C941FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C491FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m */; };
DCBA3C951FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C491FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m */; };
DCBA3C961FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C491FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m */; };
DCBA3C971FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C4A1FAE0EC50086289D /* YapDatabaseCloudCore.m */; };
DCBA3C981FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C4A1FAE0EC50086289D /* YapDatabaseCloudCore.m */; };
DCBA3C991FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C4A1FAE0EC50086289D /* YapDatabaseCloudCore.m */; };
DCBA3C9A1FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */ = {isa = PBXBuildFile; fileRef = DCBA3C4A1FAE0EC50086289D /* YapDatabaseCloudCore.m */; };
DCD881441BE941E200317214 /* YapDatabaseSearchQueuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCD881431BE941D200317214 /* YapDatabaseSearchQueuePrivate.h */; };
DCD881451BE941E300317214 /* YapDatabaseSearchQueuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DCD881431BE941D200317214 /* YapDatabaseSearchQueuePrivate.h */; };
DCD881521BE94BC400317214 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DCD881481BE94BC400317214 /* AppDelegate.m */; };
@ -1306,6 +1394,28 @@
DCAF52531C48681000562C92 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Main.storyboard; sourceTree = "<group>"; };
DCAF52551C48683200562C92 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Framework/TestModuleMap-Mac/Info.plist"; sourceTree = "<group>"; };
DCAF52571C48685400562C92 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = "Framework/TestModuleMap-Mac/Assets.xcassets"; sourceTree = "<group>"; };
DCB8ACFE20604A25000B2D76 /* YapDatabaseConnectionPool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseConnectionPool.m; sourceTree = "<group>"; };
DCB8ACFF20604A25000B2D76 /* YapDatabaseConnectionPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseConnectionPool.h; sourceTree = "<group>"; };
DCBA3C331FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreConnection.m; sourceTree = "<group>"; };
DCBA3C341FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreTransaction.h; sourceTree = "<group>"; };
DCBA3C351FAE0EC50086289D /* YapDatabaseCloudCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCore.h; sourceTree = "<group>"; };
DCBA3C361FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreOptions.h; sourceTree = "<group>"; };
DCBA3C381FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePrivate.h; sourceTree = "<group>"; };
DCBA3C391FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreOperationPrivate.h; sourceTree = "<group>"; };
DCBA3C3A1FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipelinePrivate.h; sourceTree = "<group>"; };
DCBA3C3C1FAE0EC50086289D /* YapManyToManyCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapManyToManyCache.h; sourceTree = "<group>"; };
DCBA3C3E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreOperation.m; sourceTree = "<group>"; };
DCBA3C3F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreOperation.h; sourceTree = "<group>"; };
DCBA3C401FAE0EC50086289D /* YapManyToManyCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapManyToManyCache.m; sourceTree = "<group>"; };
DCBA3C421FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreGraph.m; sourceTree = "<group>"; };
DCBA3C431FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipeline.h; sourceTree = "<group>"; };
DCBA3C441FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreGraph.h; sourceTree = "<group>"; };
DCBA3C451FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCorePipeline.m; sourceTree = "<group>"; };
DCBA3C461FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCorePipelineDelegate.h; sourceTree = "<group>"; };
DCBA3C471FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YapDatabaseCloudCoreConnection.h; sourceTree = "<group>"; };
DCBA3C481FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreTransaction.m; sourceTree = "<group>"; };
DCBA3C491FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCoreOptions.m; sourceTree = "<group>"; };
DCBA3C4A1FAE0EC50086289D /* YapDatabaseCloudCore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YapDatabaseCloudCore.m; sourceTree = "<group>"; };
DCD881291BE93C1000317214 /* TestModuleMap-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TestModuleMap-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
DCD881431BE941D200317214 /* YapDatabaseSearchQueuePrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YapDatabaseSearchQueuePrivate.h; sourceTree = "<group>"; };
DCD881471BE94BC400317214 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
@ -1519,9 +1629,11 @@
children = (
DC6C28D91CAAFE3B00166CE4 /* ActionManager */,
371A7B851EF18AB0004176EC /* AutoView */,
DC6C28BC1CAAF8DF00166CE4 /* CrossProcessNotification */,
DCAF523C1C48636C00562C92 /* ConnectionProxy */,
DCBA3C321FAE0EC50086289D /* CloudCore */,
DC651F191BCEC77E00188E23 /* CloudKit */,
DCB8ACFD20604A25000B2D76 /* ConnectionPool */,
DCAF523C1C48636C00562C92 /* ConnectionProxy */,
DC6C28BC1CAAF8DF00166CE4 /* CrossProcessNotification */,
DC651F391BCEC77E00188E23 /* FilteredView */,
DC651F441BCEC77E00188E23 /* FullTextSearch */,
DC651F511BCEC77E00188E23 /* Hooks */,
@ -1996,6 +2108,74 @@
name = "TestModuleMap-Shared";
sourceTree = "<group>";
};
DCB8ACFD20604A25000B2D76 /* ConnectionPool */ = {
isa = PBXGroup;
children = (
DCB8ACFF20604A25000B2D76 /* YapDatabaseConnectionPool.h */,
DCB8ACFE20604A25000B2D76 /* YapDatabaseConnectionPool.m */,
);
path = ConnectionPool;
sourceTree = "<group>";
};
DCBA3C321FAE0EC50086289D /* CloudCore */ = {
isa = PBXGroup;
children = (
DCBA3C371FAE0EC50086289D /* Internal */,
DCBA3C3B1FAE0EC50086289D /* Utilities */,
DCBA3C351FAE0EC50086289D /* YapDatabaseCloudCore.h */,
DCBA3C4A1FAE0EC50086289D /* YapDatabaseCloudCore.m */,
DCBA3C361FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h */,
DCBA3C491FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m */,
DCBA3C471FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h */,
DCBA3C331FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m */,
DCBA3C341FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h */,
DCBA3C481FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m */,
);
path = CloudCore;
sourceTree = "<group>";
};
DCBA3C371FAE0EC50086289D /* Internal */ = {
isa = PBXGroup;
children = (
DCBA3C381FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h */,
DCBA3C391FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h */,
DCBA3C3A1FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h */,
);
path = Internal;
sourceTree = "<group>";
};
DCBA3C3B1FAE0EC50086289D /* Utilities */ = {
isa = PBXGroup;
children = (
DCBA3C3C1FAE0EC50086289D /* YapManyToManyCache.h */,
DCBA3C401FAE0EC50086289D /* YapManyToManyCache.m */,
DCBA3C3D1FAE0EC50086289D /* Operations */,
DCBA3C411FAE0EC50086289D /* Execution */,
);
path = Utilities;
sourceTree = "<group>";
};
DCBA3C3D1FAE0EC50086289D /* Operations */ = {
isa = PBXGroup;
children = (
DCBA3C3F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h */,
DCBA3C3E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m */,
);
path = Operations;
sourceTree = "<group>";
};
DCBA3C411FAE0EC50086289D /* Execution */ = {
isa = PBXGroup;
children = (
DCBA3C461FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h */,
DCBA3C431FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h */,
DCBA3C451FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m */,
DCBA3C441FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h */,
DCBA3C421FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m */,
);
path = Execution;
sourceTree = "<group>";
};
DCD881461BE94BC400317214 /* TestModuleMap-iOS */ = {
isa = PBXGroup;
children = (
@ -2137,8 +2317,10 @@
buildActionMask = 2147483647;
files = (
DCDAF7461D81DC3E00C827C6 /* YapActionable.h in Headers */,
DCBA3C5A1FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */,
DC6266591D80D14B00557968 /* YapDatabaseCrossProcessNotificationConnection.h in Headers */,
DC6266571D80D14400557968 /* YapDatabaseCrossProcessNotification.h in Headers */,
DCB8AD0720604A9E000B2D76 /* YapDatabaseConnectionPool.h in Headers */,
DC62664F1D80D11700557968 /* YapDatabaseExtension.h in Headers */,
DC6266421D80D0EA00557968 /* YapDatabaseStatement.h in Headers */,
DCDAF73C1D81DC2A00C827C6 /* YapReachability.h in Headers */,
@ -2153,7 +2335,9 @@
DC6266BF1D80D33C00557968 /* YapDatabaseFilteredView.h in Headers */,
DC6266451D80D0F300557968 /* YapMemoryTable.h in Headers */,
DC6266851D80D21700557968 /* YapDatabaseRTreeIndexOptions.h in Headers */,
DCBA3C821FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */,
DC6266901D80D24F00557968 /* YapDatabaseSecondaryIndexHandler.h in Headers */,
DCBA3C721FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */,
DCDAF7501D81DC5B00C827C6 /* YapDatabaseActionManagerConnection.h in Headers */,
DC62661B1D80D05C00557968 /* YapDatabaseConnection.h in Headers */,
DC6266A01D80D28F00557968 /* YapDatabaseViewState.h in Headers */,
@ -2163,18 +2347,22 @@
DC6266B61D80D2F800557968 /* YapDatabaseSearchResultsView.h in Headers */,
DCDAF7481D81DC4600C827C6 /* YapActionItem.h in Headers */,
DC6266711D80D1C900557968 /* YapDatabaseRelationshipEdgePrivate.h in Headers */,
DCBA3C561FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */,
DC62665B1D80D15200557968 /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */,
DC62666A1D80D1AA00557968 /* YapDatabaseHooksPrivate.h in Headers */,
DC6266511D80D11F00557968 /* YapDatabaseExtensionConnection.h in Headers */,
DC62664C1D80D10700557968 /* YapTouch.h in Headers */,
DC62662D1D80D0A300557968 /* YapProxyObject.h in Headers */,
DCBA3C521FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */,
DC6266BC1D80D30D00557968 /* YapDatabaseSearchResultsViewTransaction.h in Headers */,
DC6266831D80D21000557968 /* YapDatabaseRTreeIndexHandler.h in Headers */,
DC6266621D80D18500557968 /* YapDatabaseFullTextSearchConnection.h in Headers */,
DC6266C11D80D34300557968 /* YapDatabaseFilteredViewConnection.h in Headers */,
DC6266941D80D25C00557968 /* YapDatabaseSecondaryIndexSetup.h in Headers */,
DCBA3C621FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */,
DC62663B1D80D0D500557968 /* YapDatabaseConnectionState.h in Headers */,
DC6266491D80D0FE00557968 /* YapProxyObjectPrivate.h in Headers */,
DCBA3C7E1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */,
DC6266641D80D18D00557968 /* YapDatabaseFullTextSearchHandler.h in Headers */,
DC6266A41D80D29F00557968 /* YapDatabaseViewMappings.h in Headers */,
4B5B1BE71F13E7EA008A2CDC /* YapDatabaseAtomic.h in Headers */,
@ -2192,6 +2380,7 @@
DC62662F1D80D0AC00557968 /* YapSet.h in Headers */,
DC6266191D80D05300557968 /* YapDatabase.h in Headers */,
DC6266791D80D1E600557968 /* YapDatabaseRelationshipNode.h in Headers */,
DCBA3C5E1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */,
DC6266AC1D80D2BC00557968 /* YapDatabaseViewOptions.h in Headers */,
DCDAF7421D81DC3300C827C6 /* YapActionItemPrivate.h in Headers */,
371A7BA21EF18AC9004176EC /* YapDatabaseAutoViewTransaction.h in Headers */,
@ -2210,11 +2399,13 @@
DC62664A1D80D10100557968 /* YapRowidSet.h in Headers */,
DC6266AE1D80D2C200557968 /* YapDatabaseViewTransaction.h in Headers */,
DC6266BE1D80D33900557968 /* YapDatabaseFilteredViewPrivate.h in Headers */,
DCBA3C661FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */,
DC62669E1D80D28900557968 /* YapDatabaseViewPrivate.h in Headers */,
371A7BB61EF18B36004176EC /* YapDirtyDictionary.h in Headers */,
DC6266211D80D07500557968 /* YapBidirectionalCache.h in Headers */,
DC62666D1D80D1B300557968 /* YapDatabaseHooksConnection.h in Headers */,
DC62664E1D80D11300557968 /* YapDatabaseExtensionPrivate.h in Headers */,
DCBA3C6A1FAE0EC50086289D /* YapManyToManyCache.h in Headers */,
DC6266441D80D0F000557968 /* YapDatabaseString.h in Headers */,
371A7BA01EF18AC9004176EC /* YapDatabaseAutoView.h in Headers */,
DC6266231D80D08000557968 /* YapMutationStack.h in Headers */,
@ -2229,6 +2420,7 @@
DC62661F1D80D06B00557968 /* YapDatabaseTransaction.h in Headers */,
DCDAF74C1D81DC4F00C827C6 /* YapDatabaseActionManager.h in Headers */,
DC62667F1D80D20300557968 /* YapDatabaseRTreeIndex.h in Headers */,
DCBA3C8A1FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */,
DC6266A81D80D2AE00557968 /* YapDatabaseView.h in Headers */,
DC6266381D80D0CC00557968 /* yap_vfs_shim.h in Headers */,
DC62665F1D80D17C00557968 /* YapDatabaseFullTextSearchPrivate.h in Headers */,
@ -2241,6 +2433,7 @@
DCDAF7541D81DC6600C827C6 /* YapDatabaseActionManagerTransaction.h in Headers */,
DC6266271D80D08F00557968 /* YapCollectionKey.h in Headers */,
371A7BA11EF18AC9004176EC /* YapDatabaseAutoViewConnection.h in Headers */,
DCBA3C8E1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */,
DC6266871D80D21E00557968 /* YapDatabaseRTreeIndexSetup.h in Headers */,
DC6266B21D80D2EA00557968 /* YapDatabaseSearchQueuePrivate.h in Headers */,
DC6266601D80D17F00557968 /* YapDatabaseFullTextSearch.h in Headers */,
@ -2258,6 +2451,7 @@
DCE760EB1D78B566009C83A0 /* YapDatabaseCloudKitTypes.h in Headers */,
DCE760D31D78B159009C83A0 /* YapDatabaseExtension.h in Headers */,
DCE760C61D78B127009C83A0 /* YapDatabaseStatement.h in Headers */,
DCBA3C611FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */,
DCE761211D78B652009C83A0 /* YapDatabaseSecondaryIndexOptions.h in Headers */,
DCE760D91D78B16E009C83A0 /* YapDatabaseExtensionTypes.h in Headers */,
DCE760F81D78B592009C83A0 /* YDBCKChangeSet.h in Headers */,
@ -2270,14 +2464,17 @@
DCE761071D78B5E4009C83A0 /* YapDatabaseViewRangeOptionsPrivate.h in Headers */,
DCE761571D78B75D009C83A0 /* YapDatabaseRelationshipOptions.h in Headers */,
DCE760AF1D78B0D5009C83A0 /* YapMurmurHash.h in Headers */,
DCBA3C811FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */,
DCE760F01D78B579009C83A0 /* YDBCKChangeQueue.h in Headers */,
DCE760AD1D78B0CC009C83A0 /* YapDatabaseQuery.h in Headers */,
DCE760D51D78B160009C83A0 /* YapDatabaseExtensionConnection.h in Headers */,
DCBA3C651FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */,
DCE761601D78B784009C83A0 /* YapDatabaseRTreeIndexHandler.h in Headers */,
DCE761081D78B5E7009C83A0 /* YapDatabaseViewState.h in Headers */,
DC55F47B1D78E065007CEF3A /* YapDatabaseCrossProcessNotificationPrivate.h in Headers */,
DCE760E31D78B542009C83A0 /* YapDatabaseCloudKit.h in Headers */,
DCE760D01D78B145009C83A0 /* YapTouch.h in Headers */,
DCBA3C891FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */,
DCE760FA1D78B599009C83A0 /* YDBCKMergeInfo.h in Headers */,
DCE761291D78B677009C83A0 /* YapDatabaseSearchQueue.h in Headers */,
DCE7615E1D78B77E009C83A0 /* YapDatabaseRTreeIndexConnection.h in Headers */,
@ -2290,6 +2487,7 @@
DCE761141D78B612009C83A0 /* YapDatabaseViewOptions.h in Headers */,
DCE975291F6D7EAE00496D00 /* YapDatabaseConnectionConfig.h in Headers */,
DCE7612D1D78B686009C83A0 /* YapDatabaseSearchResultsViewConnection.h in Headers */,
DCBA3C711FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */,
DCE760CD1D78B13B009C83A0 /* YapProxyObjectPrivate.h in Headers */,
DCE761501D78B738009C83A0 /* YapDatabaseRelationship.h in Headers */,
DCE760D71D78B166009C83A0 /* YapDatabaseExtensionTransaction.h in Headers */,
@ -2308,10 +2506,12 @@
DCE761331D78B6B2009C83A0 /* YapDatabaseFullTextSearchPrivate.h in Headers */,
DCE761541D78B74A009C83A0 /* YapDatabaseRelationshipEdge.h in Headers */,
DCE760B31D78B0E5009C83A0 /* YapSet.h in Headers */,
DCBA3C8D1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */,
DCE761121D78B60A009C83A0 /* YapDatabaseViewConnection.h in Headers */,
DCE760F61D78B58B009C83A0 /* YDBCKRecordTableInfo.h in Headers */,
DCE761251D78B660009C83A0 /* YapDatabaseSecondaryIndexTransaction.h in Headers */,
DCE760E51D78B54D009C83A0 /* YapDatabaseCloudKitConnection.h in Headers */,
DCBA3C5D1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */,
DCDAF7471D81DC4500C827C6 /* YapActionItem.h in Headers */,
DCE761591D78B763009C83A0 /* YapDatabaseRelationshipTransaction.h in Headers */,
DCE7609D1D78B06E009C83A0 /* YapDatabase.h in Headers */,
@ -2326,6 +2526,7 @@
371A7BA71EF18AC9004176EC /* YapDatabaseViewTypes.h in Headers */,
DCE761101D78B602009C83A0 /* YapDatabaseView.h in Headers */,
DCE761041D78B5DB009C83A0 /* YapDatabaseViewPageMetadata.h in Headers */,
DCBA3C551FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */,
DCDAF7451D81DC3D00C827C6 /* YapActionable.h in Headers */,
371A7BB71EF18B36004176EC /* YapDirtyDictionary.h in Headers */,
DCE7614F1D78B735009C83A0 /* YapDatabaseRelationshipPrivate.h in Headers */,
@ -2346,10 +2547,12 @@
DCE760A11D78B081009C83A0 /* YapDatabaseOptions.h in Headers */,
DCE760A31D78B089009C83A0 /* YapDatabaseTransaction.h in Headers */,
DCE761021D78B5D5009C83A0 /* YapDatabaseViewPage.h in Headers */,
DCBA3C591FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */,
DCE761271D78B672009C83A0 /* YapDatabaseSearchQueuePrivate.h in Headers */,
DCE7611A1D78B638009C83A0 /* YapDatabaseSecondaryIndexPrivate.h in Headers */,
DCE761001D78B5CF009C83A0 /* YapDatabaseViewChangePrivate.h in Headers */,
DCE761521D78B742009C83A0 /* YapDatabaseRelationshipConnection.h in Headers */,
DCB8AD0620604A9E000B2D76 /* YapDatabaseConnectionPool.h in Headers */,
DCE760E71D78B556009C83A0 /* YapDatabaseCloudKitOptions.h in Headers */,
DCE761361D78B6BC009C83A0 /* YapDatabaseFullTextSearchConnection.h in Headers */,
DCE7615B1D78B775009C83A0 /* YapDatabaseRTreeIndexPrivate.h in Headers */,
@ -2357,12 +2560,14 @@
DCE7614A1D78B71C009C83A0 /* YapDatabaseHooksConnection.h in Headers */,
DCE7614E1D78B732009C83A0 /* YapDatabaseRelationshipEdgePrivate.h in Headers */,
DCDAF7431D81DC3700C827C6 /* YapDatabaseActionManagerPrivate.h in Headers */,
DCBA3C691FAE0EC50086289D /* YapManyToManyCache.h in Headers */,
371A7BA51EF18AC9004176EC /* YapDatabaseAutoViewConnection.h in Headers */,
DCE7613A1D78B6CC009C83A0 /* YapDatabaseFullTextSearchSnippetOptions.h in Headers */,
DCE760BC1D78B108009C83A0 /* yap_vfs_shim.h in Headers */,
DC55F47E1D78E071007CEF3A /* YapDatabaseCrossProcessNotificationConnection.h in Headers */,
DCE760C31D78B11E009C83A0 /* YapDatabaseManager.h in Headers */,
DCE760FE1D78B5A8009C83A0 /* YDBCKRecordInfo.h in Headers */,
DCBA3C511FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */,
DCE760B51D78B0EC009C83A0 /* YapWhitelistBlacklist.h in Headers */,
DCE7610E1D78B5FB009C83A0 /* YapDatabaseViewRangeOptions.h in Headers */,
DCE760AB1D78B0C4009C83A0 /* YapCollectionKey.h in Headers */,
@ -2370,6 +2575,7 @@
DCE760B71D78B0F7009C83A0 /* NSDate+YapDatabase.h in Headers */,
DCE7611B1D78B63B009C83A0 /* YapDatabaseSecondaryIndex.h in Headers */,
DCE7615C1D78B778009C83A0 /* YapDatabaseRTreeIndex.h in Headers */,
DCBA3C7D1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */,
DCDAF7531D81DC6600C827C6 /* YapDatabaseActionManagerTransaction.h in Headers */,
DCE761661D78B799009C83A0 /* YapDatabaseRTreeIndexTransaction.h in Headers */,
DC55F4801D78E078007CEF3A /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */,
@ -2390,6 +2596,7 @@
DCD881441BE941E200317214 /* YapDatabaseSearchQueuePrivate.h in Headers */,
DC6C28EA1CAAFE3B00166CE4 /* YapActionable.h in Headers */,
DC6521451BCEC77E00188E23 /* YapMurmurHash.h in Headers */,
DCBA3C5F1FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */,
DC6C28EC1CAAFE3B00166CE4 /* YapActionItem.h in Headers */,
DC6520591BCEC77E00188E23 /* YapDatabaseHooksTransaction.h in Headers */,
DC65203B1BCEC77E00188E23 /* YapDatabaseFullTextSearch.h in Headers */,
@ -2402,14 +2609,17 @@
DC6520831BCEC77E00188E23 /* YapDatabaseRelationshipTransaction.h in Headers */,
DC65205F1BCEC77E00188E23 /* YapDatabaseExtension.h in Headers */,
DC6520BF1BCEC77E00188E23 /* YapDatabaseSecondaryIndexConnection.h in Headers */,
DCBA3C7F1FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */,
DC6520471BCEC77E00188E23 /* YapDatabaseFullTextSearchSnippetOptions.h in Headers */,
DC6520FF1BCEC77E00188E23 /* YapDatabaseViewTransaction.h in Headers */,
DC6520FB1BCEC77E00188E23 /* YapDatabaseViewOptions.h in Headers */,
DCBA3C631FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */,
DC65200B1BCEC77E00188E23 /* YDBCKRecord.h in Headers */,
DC6520991BCEC77E00188E23 /* YapDatabaseRTreeIndexSetup.h in Headers */,
DC6520AD1BCEC77E00188E23 /* YapDatabaseSearchResultsViewConnection.h in Headers */,
DC65202D1BCEC77E00188E23 /* YapDatabaseFilteredViewConnection.h in Headers */,
DC6521551BCEC77E00188E23 /* YapDatabase.h in Headers */,
DCBA3C871FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */,
DC6C28F81CAAFE3B00166CE4 /* YapDatabaseActionManagerTransaction.h in Headers */,
DC6520EB1BCEC77E00188E23 /* YapDatabaseViewMappings.h in Headers */,
DC65206B1BCEC77E00188E23 /* YapDatabaseExtensionTypes.h in Headers */,
@ -2422,6 +2632,7 @@
DC6C28E61CAAFE3B00166CE4 /* YapActionItemPrivate.h in Headers */,
DCE975271F6D7EAE00496D00 /* YapDatabaseConnectionConfig.h in Headers */,
DC65209D1BCEC77E00188E23 /* YapDatabaseRTreeIndexTransaction.h in Headers */,
DCBA3C6F1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */,
DC6520CF1BCEC77E00188E23 /* YapDatabaseSecondaryIndexTransaction.h in Headers */,
DC65207D1BCEC77E00188E23 /* YapDatabaseRelationshipNode.h in Headers */,
371A7BAC1EF18ACA004176EC /* YapDatabaseAutoView.h in Headers */,
@ -2440,10 +2651,12 @@
DC65201B1BCEC77E00188E23 /* YapDatabaseCloudKitOptions.h in Headers */,
DC6520551BCEC77E00188E23 /* YapDatabaseHooksConnection.h in Headers */,
DC6C28CF1CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */,
DCBA3C8B1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */,
DC65208D1BCEC77E00188E23 /* YapDatabaseRTreeIndexConnection.h in Headers */,
DC6521391BCEC77E00188E23 /* YapCache.h in Headers */,
DC6C28FE1CAAFE7F00166CE4 /* NSDate+YapDatabase.h in Headers */,
DC65204B1BCEC77E00188E23 /* YapDatabaseFullTextSearchTransaction.h in Headers */,
DCBA3C5B1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */,
DC6520171BCEC77E00188E23 /* YapDatabaseCloudKitConnection.h in Headers */,
DC6520631BCEC77E00188E23 /* YapDatabaseExtensionConnection.h in Headers */,
DC6520E71BCEC77E00188E23 /* YapDatabaseViewChange.h in Headers */,
@ -2458,6 +2671,7 @@
DC6520071BCEC77E00188E23 /* YDBCKMergeInfo.h in Headers */,
371A7BAF1EF18ACA004176EC /* YapDatabaseViewTypes.h in Headers */,
DC6520BB1BCEC77E00188E23 /* YapDatabaseSecondaryIndex.h in Headers */,
DCBA3C531FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */,
DC6520A31BCEC77E00188E23 /* YapDatabaseSearchQueue.h in Headers */,
DC6520EF1BCEC77E00188E23 /* YapDatabaseViewRangeOptions.h in Headers */,
371A7BB91EF18B37004176EC /* YapDirtyDictionary.h in Headers */,
@ -2478,10 +2692,12 @@
DC651FFB1BCEC77E00188E23 /* YDBCKMappingTableInfo.h in Headers */,
65580CA61BF36A020055E65C /* yap_vfs_shim.h in Headers */,
DC651FF31BCEC77E00188E23 /* YDBCKChangeQueue.h in Headers */,
DCBA3C571FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */,
DC6520B91BCEC77E00188E23 /* YapDatabaseSecondaryIndexPrivate.h in Headers */,
DC65204F1BCEC77E00188E23 /* YapDatabaseHooksPrivate.h in Headers */,
DC6520871BCEC77E00188E23 /* YapDatabaseRTreeIndexPrivate.h in Headers */,
DC65212F1BCEC77E00188E23 /* YapProxyObjectPrivate.h in Headers */,
DCB8AD0120604A26000B2D76 /* YapDatabaseConnectionPool.h in Headers */,
DC6C28C51CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationPrivate.h in Headers */,
DC6521351BCEC77E00188E23 /* YapTouch.h in Headers */,
DC6C28F01CAAFE3B00166CE4 /* YapDatabaseActionManager.h in Headers */,
@ -2489,12 +2705,14 @@
DC6520E31BCEC77E00188E23 /* YapDatabaseViewState.h in Headers */,
DC6520D51BCEC77E00188E23 /* YapDatabaseViewMappingsPrivate.h in Headers */,
DC65211D1BCEC77E00188E23 /* YapDatabaseStatement.h in Headers */,
DCBA3C671FAE0EC50086289D /* YapManyToManyCache.h in Headers */,
371A7BAD1EF18ACA004176EC /* YapDatabaseAutoViewConnection.h in Headers */,
DC6C28941CAAF03200166CE4 /* YapBidirectionalCache.h in Headers */,
DC6520A11BCEC77E00188E23 /* YapDatabaseSearchResultsViewPrivate.h in Headers */,
DC65212B1BCEC77E00188E23 /* YapNull.h in Headers */,
DC6521071BCEC77E00188E23 /* NSDictionary+YapDatabase.h in Headers */,
DC6521271BCEC77E00188E23 /* YapMemoryTable.h in Headers */,
DCBA3C4F1FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */,
DC65210F1BCEC77E00188E23 /* YapDatabaseConnectionState.h in Headers */,
DC6521131BCEC77E00188E23 /* YapDatabaseLogging.h in Headers */,
DC6521311BCEC77E00188E23 /* YapRowidSet.h in Headers */,
@ -2502,6 +2720,7 @@
DC6520DB1BCEC77E00188E23 /* YapDatabaseViewPageMetadata.h in Headers */,
DC6521171BCEC77E00188E23 /* YapDatabaseManager.h in Headers */,
DC6C28CB1CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationConnection.h in Headers */,
DCBA3C7B1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */,
DC6520DF1BCEC77E00188E23 /* YapDatabaseViewPrivate.h in Headers */,
DC6520E11BCEC77E00188E23 /* YapDatabaseViewRangeOptionsPrivate.h in Headers */,
DC65206F1BCEC77E00188E23 /* YapDatabaseRelationshipPrivate.h in Headers */,
@ -2522,6 +2741,7 @@
DCD881451BE941E300317214 /* YapDatabaseSearchQueuePrivate.h in Headers */,
DC6C28EB1CAAFE3B00166CE4 /* YapActionable.h in Headers */,
DC6521461BCEC77E00188E23 /* YapMurmurHash.h in Headers */,
DCBA3C601FAE0EC50086289D /* YapDatabaseCloudCoreOperationPrivate.h in Headers */,
DC6C28ED1CAAFE3B00166CE4 /* YapActionItem.h in Headers */,
DC65205A1BCEC77E00188E23 /* YapDatabaseHooksTransaction.h in Headers */,
DC65203C1BCEC77E00188E23 /* YapDatabaseFullTextSearch.h in Headers */,
@ -2534,14 +2754,17 @@
DC6520841BCEC77E00188E23 /* YapDatabaseRelationshipTransaction.h in Headers */,
DC6520601BCEC77E00188E23 /* YapDatabaseExtension.h in Headers */,
DC6520C01BCEC77E00188E23 /* YapDatabaseSecondaryIndexConnection.h in Headers */,
DCBA3C801FAE0EC50086289D /* YapDatabaseCloudCoreGraph.h in Headers */,
DC6520481BCEC77E00188E23 /* YapDatabaseFullTextSearchSnippetOptions.h in Headers */,
DC6521001BCEC77E00188E23 /* YapDatabaseViewTransaction.h in Headers */,
DC6520FC1BCEC77E00188E23 /* YapDatabaseViewOptions.h in Headers */,
DCBA3C641FAE0EC50086289D /* YapDatabaseCloudCorePipelinePrivate.h in Headers */,
DC65200C1BCEC77E00188E23 /* YDBCKRecord.h in Headers */,
DC65209A1BCEC77E00188E23 /* YapDatabaseRTreeIndexSetup.h in Headers */,
DC6520AE1BCEC77E00188E23 /* YapDatabaseSearchResultsViewConnection.h in Headers */,
DC65202E1BCEC77E00188E23 /* YapDatabaseFilteredViewConnection.h in Headers */,
DC6521561BCEC77E00188E23 /* YapDatabase.h in Headers */,
DCBA3C881FAE0EC50086289D /* YapDatabaseCloudCorePipelineDelegate.h in Headers */,
DC6C28F91CAAFE3B00166CE4 /* YapDatabaseActionManagerTransaction.h in Headers */,
DC6520EC1BCEC77E00188E23 /* YapDatabaseViewMappings.h in Headers */,
DC65206C1BCEC77E00188E23 /* YapDatabaseExtensionTypes.h in Headers */,
@ -2554,6 +2777,7 @@
DC6C28E71CAAFE3B00166CE4 /* YapActionItemPrivate.h in Headers */,
DCE975281F6D7EAE00496D00 /* YapDatabaseConnectionConfig.h in Headers */,
DC65209E1BCEC77E00188E23 /* YapDatabaseRTreeIndexTransaction.h in Headers */,
DCBA3C701FAE0EC50086289D /* YapDatabaseCloudCoreOperation.h in Headers */,
DC6520D01BCEC77E00188E23 /* YapDatabaseSecondaryIndexTransaction.h in Headers */,
DC65207E1BCEC77E00188E23 /* YapDatabaseRelationshipNode.h in Headers */,
371A7BA81EF18AC9004176EC /* YapDatabaseAutoView.h in Headers */,
@ -2572,10 +2796,12 @@
DC65201C1BCEC77E00188E23 /* YapDatabaseCloudKitOptions.h in Headers */,
DC6520561BCEC77E00188E23 /* YapDatabaseHooksConnection.h in Headers */,
DC6C28D01CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationTransaction.h in Headers */,
DCBA3C8C1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.h in Headers */,
DC65208E1BCEC77E00188E23 /* YapDatabaseRTreeIndexConnection.h in Headers */,
DC65213A1BCEC77E00188E23 /* YapCache.h in Headers */,
DC6C28FF1CAAFE7F00166CE4 /* NSDate+YapDatabase.h in Headers */,
DC65204C1BCEC77E00188E23 /* YapDatabaseFullTextSearchTransaction.h in Headers */,
DCBA3C5C1FAE0EC50086289D /* YapDatabaseCloudCorePrivate.h in Headers */,
DC6520181BCEC77E00188E23 /* YapDatabaseCloudKitConnection.h in Headers */,
DC6520641BCEC77E00188E23 /* YapDatabaseExtensionConnection.h in Headers */,
DC6520E81BCEC77E00188E23 /* YapDatabaseViewChange.h in Headers */,
@ -2590,6 +2816,7 @@
DC6520081BCEC77E00188E23 /* YDBCKMergeInfo.h in Headers */,
371A7BAB1EF18AC9004176EC /* YapDatabaseViewTypes.h in Headers */,
DC6520BC1BCEC77E00188E23 /* YapDatabaseSecondaryIndex.h in Headers */,
DCBA3C541FAE0EC50086289D /* YapDatabaseCloudCore.h in Headers */,
DC6520A41BCEC77E00188E23 /* YapDatabaseSearchQueue.h in Headers */,
DC6520F01BCEC77E00188E23 /* YapDatabaseViewRangeOptions.h in Headers */,
371A7BB81EF18B37004176EC /* YapDirtyDictionary.h in Headers */,
@ -2610,10 +2837,12 @@
DC651FFC1BCEC77E00188E23 /* YDBCKMappingTableInfo.h in Headers */,
65580CA81BF36AA20055E65C /* yap_vfs_shim.h in Headers */,
DC651FF41BCEC77E00188E23 /* YDBCKChangeQueue.h in Headers */,
DCBA3C581FAE0EC50086289D /* YapDatabaseCloudCoreOptions.h in Headers */,
DC6520BA1BCEC77E00188E23 /* YapDatabaseSecondaryIndexPrivate.h in Headers */,
DC6520501BCEC77E00188E23 /* YapDatabaseHooksPrivate.h in Headers */,
DC6520881BCEC77E00188E23 /* YapDatabaseRTreeIndexPrivate.h in Headers */,
DC6521301BCEC77E00188E23 /* YapProxyObjectPrivate.h in Headers */,
DCB8AD0520604A9D000B2D76 /* YapDatabaseConnectionPool.h in Headers */,
DC6C28C61CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationPrivate.h in Headers */,
DC6521361BCEC77E00188E23 /* YapTouch.h in Headers */,
DC6C28F11CAAFE3B00166CE4 /* YapDatabaseActionManager.h in Headers */,
@ -2621,12 +2850,14 @@
DC6520E41BCEC77E00188E23 /* YapDatabaseViewState.h in Headers */,
DC6520D61BCEC77E00188E23 /* YapDatabaseViewMappingsPrivate.h in Headers */,
DC65211E1BCEC77E00188E23 /* YapDatabaseStatement.h in Headers */,
DCBA3C681FAE0EC50086289D /* YapManyToManyCache.h in Headers */,
371A7BA91EF18AC9004176EC /* YapDatabaseAutoViewConnection.h in Headers */,
DC6C28951CAAF03200166CE4 /* YapBidirectionalCache.h in Headers */,
DC6520A21BCEC77E00188E23 /* YapDatabaseSearchResultsViewPrivate.h in Headers */,
DC65212C1BCEC77E00188E23 /* YapNull.h in Headers */,
DC6521081BCEC77E00188E23 /* NSDictionary+YapDatabase.h in Headers */,
DC6521281BCEC77E00188E23 /* YapMemoryTable.h in Headers */,
DCBA3C501FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.h in Headers */,
DC6521101BCEC77E00188E23 /* YapDatabaseConnectionState.h in Headers */,
DC6521141BCEC77E00188E23 /* YapDatabaseLogging.h in Headers */,
DC6521321BCEC77E00188E23 /* YapRowidSet.h in Headers */,
@ -2634,6 +2865,7 @@
DC6520DC1BCEC77E00188E23 /* YapDatabaseViewPageMetadata.h in Headers */,
DC6521181BCEC77E00188E23 /* YapDatabaseManager.h in Headers */,
DC6C28CC1CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationConnection.h in Headers */,
DCBA3C7C1FAE0EC50086289D /* YapDatabaseCloudCorePipeline.h in Headers */,
DC6520E01BCEC77E00188E23 /* YapDatabaseViewPrivate.h in Headers */,
DC6520E21BCEC77E00188E23 /* YapDatabaseViewRangeOptionsPrivate.h in Headers */,
DC6520701BCEC77E00188E23 /* YapDatabaseRelationshipPrivate.h in Headers */,
@ -2972,6 +3204,7 @@
DCDAF7561D81DC6D00C827C6 /* YapDatabaseActionManagerTransaction.m in Sources */,
DC6266A71D80D2AA00557968 /* YapDatabaseViewRangeOptions.m in Sources */,
DC62661E1D80D06700557968 /* YapDatabaseOptions.m in Sources */,
DCBA3C6E1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */,
DC6266501D80D11B00557968 /* YapDatabaseExtension.m in Sources */,
DCE975261F6D7EAE00496D00 /* YapDatabaseConnectionConfig.m in Sources */,
DC62670E1D80E46600557968 /* yap_vfs_shim.m in Sources */,
@ -2980,6 +3213,7 @@
DC6266521D80D12300557968 /* YapDatabaseExtensionConnection.m in Sources */,
DC6266A11D80D29100557968 /* YapDatabaseViewState.m in Sources */,
DC6266C01D80D34000557968 /* YapDatabaseFilteredView.m in Sources */,
DCBA3C861FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */,
DC6266691D80D19F00557968 /* YapDatabaseFullTextSearchTransaction.m in Sources */,
DC6266B51D80D2F500557968 /* YapDatabaseSearchQueue.m in Sources */,
DC6266701D80D1BE00557968 /* YapDatabaseHooksTransaction.m in Sources */,
@ -2988,6 +3222,7 @@
DC6266781D80D1E300557968 /* YapDatabaseRelationshipEdge.m in Sources */,
DC62665E1D80D16400557968 /* YapDatabaseConnectionProxy.m in Sources */,
DC6266801D80D20700557968 /* YapDatabaseRTreeIndex.m in Sources */,
DCB8AD0420604A8B000B2D76 /* YapDatabaseConnectionPool.m in Sources */,
DC6266A51D80D2A300557968 /* YapDatabaseViewMappings.m in Sources */,
DC62665C1D80D15600557968 /* YapDatabaseCrossProcessNotificationTransaction.m in Sources */,
DC6266261D80D08C00557968 /* YapCache.m in Sources */,
@ -2995,11 +3230,13 @@
DC6266301D80D0B000557968 /* YapSet.m in Sources */,
DC6266281D80D09300557968 /* YapCollectionKey.m in Sources */,
DC6266AD1D80D2C000557968 /* YapDatabaseViewOptions.m in Sources */,
DCBA3C4E1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */,
DC6266BB1D80D30A00557968 /* YapDatabaseSearchResultsViewOptions.m in Sources */,
DC6266A31D80D29C00557968 /* YapDatabaseViewChange.m in Sources */,
DC6266651D80D19100557968 /* YapDatabaseFullTextSearchHandler.m in Sources */,
DC6266931D80D25900557968 /* YapDatabaseSecondaryIndexOptions.m in Sources */,
DC6266971D80D26700557968 /* YapDatabaseSecondaryIndexTransaction.m in Sources */,
DCBA3C921FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */,
DC62664B1D80D10400557968 /* YapRowidSet.mm in Sources */,
DC6266C61D80D35600557968 /* YapDatabaseFilteredViewTypes.m in Sources */,
371A7B931EF18ABA004176EC /* YapDatabaseViewTypes.m in Sources */,
@ -3030,14 +3267,18 @@
DC6266671D80D19700557968 /* YapDatabaseFullTextSearchSnippetOptions.m in Sources */,
DC6266541D80D12B00557968 /* YapDatabaseExtensionTransaction.m in Sources */,
DC62661C1D80D06000557968 /* YapDatabaseConnection.m in Sources */,
DCBA3C961FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */,
DC62664D1D80D10900557968 /* YapTouch.m in Sources */,
DCBA3C761FAE0EC50086289D /* YapManyToManyCache.m in Sources */,
DC6266AB1D80D2B900557968 /* YapDatabaseViewConnection.m in Sources */,
DC6266861D80D21B00557968 /* YapDatabaseRTreeIndexOptions.m in Sources */,
DCBA3C7A1FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */,
DC6266321D80D0B800557968 /* YapWhitelistBlacklist.m in Sources */,
DC62666E1D80D1B700557968 /* YapDatabaseHooksConnection.m in Sources */,
DC6266BD1D80D31100557968 /* YapDatabaseSearchResultsViewTransaction.m in Sources */,
DC6266911D80D25300557968 /* YapDatabaseSecondaryIndexHandler.m in Sources */,
DC62665A1D80D14F00557968 /* YapDatabaseCrossProcessNotificationConnection.m in Sources */,
DCBA3C9A1FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */,
DCDAF7521D81DC6200C827C6 /* YapDatabaseActionManagerConnection.m in Sources */,
DC6266361D80D0C600557968 /* NSDictionary+YapDatabase.m in Sources */,
DC6266AF1D80D2C600557968 /* YapDatabaseViewTransaction.m in Sources */,
@ -3089,6 +3330,7 @@
DCE760A41D78B08D009C83A0 /* YapDatabaseTransaction.m in Sources */,
DCE760F71D78B58E009C83A0 /* YDBCKRecordTableInfo.m in Sources */,
DCE7613D1D78B6D8009C83A0 /* YapDatabaseFullTextSearchTransaction.m in Sources */,
DCBA3C851FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */,
DCE760E81D78B55A009C83A0 /* YapDatabaseCloudKitOptions.m in Sources */,
DCE760C41D78B121009C83A0 /* YapDatabaseManager.m in Sources */,
DCE760A21D78B086009C83A0 /* YapDatabaseOptions.m in Sources */,
@ -3103,6 +3345,7 @@
DCE761321D78B699009C83A0 /* YapDatabaseSearchResultsViewTransaction.m in Sources */,
DCDAF7511D81DC6100C827C6 /* YapDatabaseActionManagerConnection.m in Sources */,
DC55F4811D78E07D007CEF3A /* YapDatabaseCrossProcessNotificationTransaction.m in Sources */,
DCBA3C751FAE0EC50086289D /* YapManyToManyCache.m in Sources */,
DCE761531D78B747009C83A0 /* YapDatabaseRelationshipConnection.m in Sources */,
DCE7612C1D78B683009C83A0 /* YapDatabaseSearchResultsView.m in Sources */,
DCE761651D78B796009C83A0 /* YapDatabaseRTreeIndexSetup.m in Sources */,
@ -3113,6 +3356,8 @@
DCE761031D78B5D8009C83A0 /* YapDatabaseViewPage.mm in Sources */,
DCE761301D78B691009C83A0 /* YapDatabaseSearchResultsViewOptions.m in Sources */,
DCE760D61D78B163009C83A0 /* YapDatabaseExtensionConnection.m in Sources */,
DCBA3C911FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */,
DCBA3C951FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */,
DCE761491D78B719009C83A0 /* YapDatabaseHooks.m in Sources */,
DC55F47F1D78E075007CEF3A /* YapDatabaseCrossProcessNotificationConnection.m in Sources */,
DCE760F11D78B57C009C83A0 /* YDBCKChangeQueue.m in Sources */,
@ -3144,9 +3389,11 @@
DCE760F31D78B582009C83A0 /* YDBCKChangeRecord.m in Sources */,
DCE7612A1D78B67B009C83A0 /* YapDatabaseSearchQueue.m in Sources */,
DCE7610B1D78B5F1009C83A0 /* YapDatabaseViewChange.m in Sources */,
DCB8AD0320604A8A000B2D76 /* YapDatabaseConnectionPool.m in Sources */,
DCE760B01D78B0DA009C83A0 /* YapMurmurHash.m in Sources */,
DCE761091D78B5EA009C83A0 /* YapDatabaseViewState.m in Sources */,
DCE7609E1D78B075009C83A0 /* YapDatabase.m in Sources */,
DCBA3C791FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */,
DCE761371D78B6C1009C83A0 /* YapDatabaseFullTextSearchConnection.m in Sources */,
DCE760E41D78B54A009C83A0 /* YapDatabaseCloudKit.m in Sources */,
DCDAF7551D81DC6C00C827C6 /* YapDatabaseActionManagerTransaction.m in Sources */,
@ -3155,8 +3402,11 @@
DCE760C21D78B11A009C83A0 /* YapDatabaseLogging.m in Sources */,
DCE761201D78B64E009C83A0 /* YapDatabaseSecondaryIndexHandler.m in Sources */,
371A7B951EF18ABB004176EC /* YapDatabaseAutoViewConnection.m in Sources */,
DCBA3C991FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */,
DCE760CC1D78B138009C83A0 /* YapNull.m in Sources */,
DCBA3C6D1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */,
DC55F47D1D78E06D007CEF3A /* YapDatabaseCrossProcessNotification.m in Sources */,
DCBA3C4D1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */,
DCE760EC1D78B56B009C83A0 /* YapDatabaseCloudKitTypes.m in Sources */,
DCE760EA1D78B563009C83A0 /* YapDatabaseCloudKitTransaction.m in Sources */,
371A7B941EF18ABB004176EC /* YapDatabaseAutoView.m in Sources */,
@ -3208,6 +3458,7 @@
DC6C28CD1CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationConnection.m in Sources */,
DC6521531BCEC77E00188E23 /* YapWhitelistBlacklist.m in Sources */,
DC65212D1BCEC77E00188E23 /* YapNull.m in Sources */,
DCBA3C831FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */,
DC6520DD1BCEC77E00188E23 /* YapDatabaseViewPageMetadata.m in Sources */,
DC6520451BCEC77E00188E23 /* YapDatabaseFullTextSearchHandler.m in Sources */,
DCDAF73D1D81DC2A00C827C6 /* YapReachability.m in Sources */,
@ -3222,6 +3473,7 @@
DC65211F1BCEC77E00188E23 /* YapDatabaseStatement.m in Sources */,
DC651FF51BCEC77E00188E23 /* YDBCKChangeQueue.m in Sources */,
DC62670B1D80E46600557968 /* yap_vfs_shim.m in Sources */,
DCBA3C731FAE0EC50086289D /* YapManyToManyCache.m in Sources */,
DC651FF91BCEC77E00188E23 /* YDBCKChangeRecord.m in Sources */,
DC6521151BCEC77E00188E23 /* YapDatabaseLogging.m in Sources */,
DC651FFD1BCEC77E00188E23 /* YDBCKMappingTableInfo.m in Sources */,
@ -3232,6 +3484,8 @@
DC6520F51BCEC77E00188E23 /* YapDatabaseView.m in Sources */,
DC6521291BCEC77E00188E23 /* YapMemoryTable.m in Sources */,
DCAF52411C48636C00562C92 /* YapDatabaseConnectionProxy.m in Sources */,
DCBA3C8F1FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */,
DCBA3C931FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */,
DC302B491BE98DAC009F8C4D /* YapMutationStack.m in Sources */,
DC65201D1BCEC77E00188E23 /* YapDatabaseCloudKitOptions.m in Sources */,
DC65203D1BCEC77E00188E23 /* YapDatabaseFullTextSearch.m in Sources */,
@ -3263,9 +3517,11 @@
DC6520531BCEC77E00188E23 /* YapDatabaseHooks.m in Sources */,
DC6521571BCEC77E00188E23 /* YapDatabase.m in Sources */,
DC6520FD1BCEC77E00188E23 /* YapDatabaseViewOptions.m in Sources */,
DCB8AD0020604A26000B2D76 /* YapDatabaseConnectionPool.m in Sources */,
DC6520411BCEC77E00188E23 /* YapDatabaseFullTextSearchConnection.m in Sources */,
DC6520BD1BCEC77E00188E23 /* YapDatabaseSecondaryIndex.m in Sources */,
DC6C28C91CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotification.m in Sources */,
DCBA3C771FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */,
DC6520771BCEC77E00188E23 /* YapDatabaseRelationshipConnection.m in Sources */,
DC6520111BCEC77E00188E23 /* YDBCKRecordInfo.m in Sources */,
DC6520D11BCEC77E00188E23 /* YapDatabaseSecondaryIndexTransaction.m in Sources */,
@ -3274,8 +3530,11 @@
DC6520811BCEC77E00188E23 /* YapDatabaseRelationshipOptions.m in Sources */,
DC6520ED1BCEC77E00188E23 /* YapDatabaseViewMappings.m in Sources */,
371A7B9D1EF18ABC004176EC /* YapDatabaseAutoViewConnection.m in Sources */,
DCBA3C971FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */,
DC6C28EE1CAAFE3B00166CE4 /* YapActionItem.m in Sources */,
DCBA3C6B1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */,
DC6520F91BCEC77E00188E23 /* YapDatabaseViewConnection.m in Sources */,
DCBA3C4B1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */,
DC6C29001CAAFE7F00166CE4 /* NSDate+YapDatabase.m in Sources */,
DC6520AF1BCEC77E00188E23 /* YapDatabaseSearchResultsViewConnection.m in Sources */,
371A7B9C1EF18ABC004176EC /* YapDatabaseAutoView.m in Sources */,
@ -3316,6 +3575,7 @@
DC6C28CE1CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotificationConnection.m in Sources */,
DC6521541BCEC77E00188E23 /* YapWhitelistBlacklist.m in Sources */,
DC65212E1BCEC77E00188E23 /* YapNull.m in Sources */,
DCBA3C841FAE0EC50086289D /* YapDatabaseCloudCorePipeline.m in Sources */,
DC6520DE1BCEC77E00188E23 /* YapDatabaseViewPageMetadata.m in Sources */,
DC6520461BCEC77E00188E23 /* YapDatabaseFullTextSearchHandler.m in Sources */,
DCDAF73E1D81DC2A00C827C6 /* YapReachability.m in Sources */,
@ -3330,6 +3590,7 @@
DC6521201BCEC77E00188E23 /* YapDatabaseStatement.m in Sources */,
DC651FF61BCEC77E00188E23 /* YDBCKChangeQueue.m in Sources */,
DC62670C1D80E46600557968 /* yap_vfs_shim.m in Sources */,
DCBA3C741FAE0EC50086289D /* YapManyToManyCache.m in Sources */,
DC651FFA1BCEC77E00188E23 /* YDBCKChangeRecord.m in Sources */,
DC6521161BCEC77E00188E23 /* YapDatabaseLogging.m in Sources */,
DC651FFE1BCEC77E00188E23 /* YDBCKMappingTableInfo.m in Sources */,
@ -3340,6 +3601,8 @@
DC6520F61BCEC77E00188E23 /* YapDatabaseView.m in Sources */,
DC65212A1BCEC77E00188E23 /* YapMemoryTable.m in Sources */,
DCAF52421C48636C00562C92 /* YapDatabaseConnectionProxy.m in Sources */,
DCBA3C901FAE0EC50086289D /* YapDatabaseCloudCoreTransaction.m in Sources */,
DCBA3C941FAE0EC50086289D /* YapDatabaseCloudCoreOptions.m in Sources */,
DC302B4A1BE98DAC009F8C4D /* YapMutationStack.m in Sources */,
DC65201E1BCEC77E00188E23 /* YapDatabaseCloudKitOptions.m in Sources */,
DC65203E1BCEC77E00188E23 /* YapDatabaseFullTextSearch.m in Sources */,
@ -3371,9 +3634,11 @@
DC6520541BCEC77E00188E23 /* YapDatabaseHooks.m in Sources */,
DC6521581BCEC77E00188E23 /* YapDatabase.m in Sources */,
DC6520FE1BCEC77E00188E23 /* YapDatabaseViewOptions.m in Sources */,
DCB8AD0220604A89000B2D76 /* YapDatabaseConnectionPool.m in Sources */,
DC6520421BCEC77E00188E23 /* YapDatabaseFullTextSearchConnection.m in Sources */,
DC6520BE1BCEC77E00188E23 /* YapDatabaseSecondaryIndex.m in Sources */,
DC6C28CA1CAAF8DF00166CE4 /* YapDatabaseCrossProcessNotification.m in Sources */,
DCBA3C781FAE0EC50086289D /* YapDatabaseCloudCoreGraph.m in Sources */,
DC6520781BCEC77E00188E23 /* YapDatabaseRelationshipConnection.m in Sources */,
DC6520121BCEC77E00188E23 /* YDBCKRecordInfo.m in Sources */,
DC6520D21BCEC77E00188E23 /* YapDatabaseSecondaryIndexTransaction.m in Sources */,
@ -3382,8 +3647,11 @@
DC6520821BCEC77E00188E23 /* YapDatabaseRelationshipOptions.m in Sources */,
DC6520EE1BCEC77E00188E23 /* YapDatabaseViewMappings.m in Sources */,
371A7B991EF18ABB004176EC /* YapDatabaseAutoViewConnection.m in Sources */,
DCBA3C981FAE0EC50086289D /* YapDatabaseCloudCore.m in Sources */,
DC6C28EF1CAAFE3B00166CE4 /* YapActionItem.m in Sources */,
DCBA3C6C1FAE0EC50086289D /* YapDatabaseCloudCoreOperation.m in Sources */,
DC6520FA1BCEC77E00188E23 /* YapDatabaseViewConnection.m in Sources */,
DCBA3C4C1FAE0EC50086289D /* YapDatabaseCloudCoreConnection.m in Sources */,
DC6C29011CAAFE7F00166CE4 /* NSDate+YapDatabase.m in Sources */,
DC6520B01BCEC77E00188E23 /* YapDatabaseSearchResultsViewConnection.m in Sources */,
371A7B981EF18ABB004176EC /* YapDatabaseAutoView.m in Sources */,

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DCD881281BE93C1000317214"
BuildableName = "TestModuleMap-iOS.app"
BlueprintName = "TestModuleMap-iOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
launchAutomaticallySubstyle = "4">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/TestModuleMap-iOS">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
launchAutomaticallySubstyle = "4">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/TestModuleMap-iOS">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DCD881281BE93C1000317214"
BuildableName = "TestModuleMap-iOS.app"
BlueprintName = "TestModuleMap-iOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
launchAutomaticallySubstyle = "8">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/TestModuleMap-iOS">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES"
launchAutomaticallySubstyle = "8">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/TestModuleMap-iOS">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DCD881281BE93C1000317214"
BuildableName = "TestModuleMap-iOS.app"
BlueprintName = "TestModuleMap-iOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/TestModuleMap-iOS">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<RemoteRunnable
runnableDebuggingMode = "2"
BundleIdentifier = "com.apple.Carousel"
RemotePath = "/TestModuleMap-iOS">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</RemoteRunnable>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC6266C81D80D3E000557968"
BuildableName = "TestModuleMap-watchOS.app"
BlueprintName = "TestModuleMap-watchOS"
ReferencedContainer = "container:YapDatabase.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -12,7 +12,7 @@
* See YapDatabaseLogging.h for more information.
**/
#if DEBUG
static const int ydbLogLevel = YDB_LOG_LEVEL_VERBOSE | YDB_LOG_FLAG_TRACE;
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
#else
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
#endif
@ -549,6 +549,8 @@
}
} usingBlock:^(NSString *collection, NSString *key, id object, NSUInteger index, BOOL *stop) {
#pragma clang diagnostic push // silence warnings: synchronous access
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
//
// Processing Block
@ -583,6 +585,8 @@
}
}
}
#pragma clang diagnostic pop
}];
}

View File

@ -124,9 +124,13 @@
__block YapDatabaseViewSorting *mostRecentSorting = nil;
dispatch_block_t block = ^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
mostRecentGrouping = grouping;
mostRecentSorting = sorting;
#pragma clang diagnostic pop
};
__strong YapDatabase *database = self.registeredDatabase;

View File

@ -33,6 +33,9 @@
- (BOOL)populateView
{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YDBLogAutoTrace();
// Remove everything from the database
@ -389,6 +392,8 @@
}
return YES;
#pragma clang diagnostic pop
}
- (void)repopulateView
@ -417,6 +422,8 @@
// The changeset mechanism will automatically consolidate all changes to the minimum.
[self enumerateGroupsUsingBlock:^(NSString *group, BOOL __unused *outerStop) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
// We must add the changes in reverse order.
// Either that, or the change index of each item would have to be zero,
@ -433,6 +440,8 @@
}];
[parentConnection->changes addObject:[YapDatabaseViewSectionChange deleteGroup:group]];
#pragma clang diagnostic pop
}];
isRepopulate = YES;
@ -519,6 +528,8 @@
// This block will be invoked repeatedly as we calculate the insertion index.
NSComparisonResult (^compare)(NSUInteger) = ^NSComparisonResult (NSUInteger index){
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
int64_t anotherRowid = 0;
[self getRowid:&anotherRowid atIndex:index inGroup:group];
@ -581,6 +592,8 @@
collectionKey.collection, collectionKey.key, object, metadata,
another.collection, another.key, anotherObject, anotherMetadata);
}
#pragma clang diagnostic pop
};
NSComparisonResult cmp;
@ -1320,6 +1333,8 @@
(YapDatabaseViewFindWithKeyBlock)find.findBlock;
compare = ^NSComparisonResult (NSUInteger index){
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
int64_t rowid = 0;
[self getRowid:&rowid atIndex:index inGroup:group];
@ -1327,6 +1342,8 @@
YapCollectionKey *ck = [databaseTransaction collectionKeyForRowid:rowid];
return findBlock(ck.collection, ck.key);
#pragma clang diagnostic pop
};
break;
@ -1337,6 +1354,8 @@
(YapDatabaseViewFindWithObjectBlock)find.findBlock;
compare = ^NSComparisonResult (NSUInteger index){
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
int64_t rowid = 0;
[self getRowid:&rowid atIndex:index inGroup:group];
@ -1346,6 +1365,8 @@
[databaseTransaction getCollectionKey:&ck object:&object forRowid:rowid];
return findBlock(ck.collection, ck.key, object);
#pragma clang diagnostic pop
};
break;
@ -1356,6 +1377,8 @@
(YapDatabaseViewFindWithMetadataBlock)find.findBlock;
compare = ^NSComparisonResult (NSUInteger index){
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
int64_t rowid = 0;
[self getRowid:&rowid atIndex:index inGroup:group];
@ -1365,6 +1388,8 @@
[databaseTransaction getCollectionKey:&ck metadata:&metadata forRowid:rowid];
return findBlock(ck.collection, ck.key, metadata);
#pragma clang diagnostic pop
};
break;
@ -1375,6 +1400,8 @@
(YapDatabaseViewFindWithRowBlock)find.findBlock;
compare = ^NSComparisonResult (NSUInteger index){
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
int64_t rowid = 0;
[self getRowid:&rowid atIndex:index inGroup:group];
@ -1385,6 +1412,8 @@
[databaseTransaction getCollectionKey:&ck object:&object metadata:&metadata forRowid:rowid];
return findBlock(ck.collection, ck.key, object, metadata);
#pragma clang diagnostic pop
};
}
@ -1527,6 +1556,8 @@
NSDictionary *extensionDependencies = databaseTransaction->connection->extensionDependencies;
[extensionDependencies enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL __unused *stop){
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
__unsafe_unretained NSString *extName = (NSString *)key;
__unsafe_unretained NSSet *extDependencies = (NSSet *)obj;
@ -1541,6 +1572,8 @@
[(id <YapDatabaseViewDependency>)extTransaction view:registeredName didRepopulateWithFlags:flags];
}
}
#pragma clang diagnostic pop
}];
}

View File

@ -120,12 +120,16 @@
[newOperations addObjectsFromArray:insertedOperations];
[indexesToReplace enumerateIndexesUsingBlock:^(NSUInteger index, BOOL *stop) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapDatabaseCloudCoreOperation *oldOperation = operations[index];
YapDatabaseCloudCoreOperation *newOperation = modifiedOperations[oldOperation.uuid];
[newOperations replaceObjectAtIndex:index withObject:newOperation];
[matchedModifiedOperations addObject:newOperation];
#pragma clang diagnostic pop
}];
operations = [[self class] sortOperationsByPriority:newOperations];

View File

@ -127,8 +127,12 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block YapDatabaseCloudCore *owner = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
owner = _atomic_owner;
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -144,12 +148,16 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block BOOL wasOwnerSet = NO;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (!_atomic_owner && inOwner)
{
_atomic_owner = inOwner;
wasOwnerSet = YES;
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -176,6 +184,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block YapDatabaseCloudCoreOperation *match = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
for (YapDatabaseCloudCoreGraph *graph in graphs)
{
@ -188,6 +198,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
}
}
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -213,6 +225,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block NSMutableArray<NSArray<YapDatabaseCloudCoreOperation *> *> *graphOperations = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
graphOperations = [NSMutableArray arrayWithCapacity:graphs.count];
@ -220,6 +234,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
{
[graphOperations addObject:graph.operations];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -250,8 +266,12 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block NSUInteger graphCount = 0;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
graphCount = graphs.count;
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -267,6 +287,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block NSMutableArray<NSArray<YapDatabaseCloudCoreOperation *> *> *graphOperations = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
graphOperations = [NSMutableArray arrayWithCapacity:graphs.count];
@ -274,6 +296,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
{
[graphOperations addObject:graph.operations];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -290,12 +314,16 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block uint64_t graphID = 0;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (idx <= graphs.count)
{
found = YES;
graphID = graphs[idx].persistentOrder;
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -312,12 +340,16 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block uint64_t nextGraphID = 0;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapDatabaseCloudCoreGraph *lastGraph = [graphs lastObject];
if (lastGraph)
{
nextGraphID = lastGraph.persistentOrder + 1;
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -343,9 +375,13 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block id result = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
NSMutableDictionary *opInfo = ephemeralInfo[opUUID];
result = opInfo[key];
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -365,6 +401,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
if (uuid == nil) return;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
NSMutableDictionary *opInfo = ephemeralInfo[uuid];
if (opInfo)
@ -383,6 +421,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
opInfo[key] = object;
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -396,6 +436,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block BOOL allowed = YES;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
NSMutableDictionary *opInfo = ephemeralInfo[uuid];
if (opInfo == nil)
@ -421,6 +463,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
{
opInfo[YDBCloudCore_EphemeralKey_Status] = @(status);
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -443,6 +487,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block NSDate *hold = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
NSMutableDictionary *opInfo = ephemeralInfo[opUUID];
if (opInfo)
@ -451,6 +497,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
status = opInfo[YDBCloudCore_EphemeralKey_Status];
hold = opInfo[YDBCloudCore_EphemeralKey_Hold];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -505,11 +553,16 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
{
if (opUUID == nil) return;
__weak YapDatabaseCloudCorePipeline *weakSelf = self;
dispatch_block_t block = ^{ @autoreleasepool {
if ([self _setStatus:YDBCloudOperationStatus_Started forOperationUUID:opUUID])
__strong YapDatabaseCloudCorePipeline *strongSelf = weakSelf;
if (strongSelf == nil) return;
if ([strongSelf _setStatus:YDBCloudOperationStatus_Started forOperationUUID:opUUID])
{
[startedOpUUIDs addObject:opUUID];
[strongSelf->startedOpUUIDs addObject:opUUID];
}
}};
@ -528,13 +581,18 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
{
if (opUUID == nil) return;
__weak YapDatabaseCloudCorePipeline *weakSelf = self;
dispatch_block_t block = ^{ @autoreleasepool {
BOOL changed = [self _setStatus:YDBCloudOperationStatus_Pending forOperationUUID:opUUID];
__strong YapDatabaseCloudCorePipeline *strongSelf = weakSelf;
if (strongSelf == nil) return;
BOOL changed = [strongSelf _setStatus:YDBCloudOperationStatus_Pending forOperationUUID:opUUID];
if (changed)
{
[startedOpUUIDs removeObject:opUUID];
[self startNextOperationIfPossible];
[strongSelf->startedOpUUIDs removeObject:opUUID];
[strongSelf startNextOperationIfPossible];
}
}};
@ -555,21 +613,27 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
retryDelay:(NSTimeInterval)delay
{
NSDate *hold = nil;
if (delay > 0.0)
if (delay > 0.0) {
hold = [NSDate dateWithTimeIntervalSinceNow:delay];
}
__weak YapDatabaseCloudCorePipeline *weakSelf = self;
dispatch_block_t block = ^{ @autoreleasepool {
BOOL changed = [self _setStatus:YDBCloudOperationStatus_Pending forOperationUUID:opUUID];
__strong YapDatabaseCloudCorePipeline *strongSelf = weakSelf;
if (strongSelf == nil) return;
BOOL changed = [strongSelf _setStatus:YDBCloudOperationStatus_Pending forOperationUUID:opUUID];
if (changed)
{
[self _setEphemeralInfo:hold
forKey:YDBCloudCore_EphemeralKey_Hold
operationUUID:opUUID];
[strongSelf _setEphemeralInfo:hold
forKey:YDBCloudCore_EphemeralKey_Hold
operationUUID:opUUID];
[startedOpUUIDs removeObject:opUUID];
[self updateHoldTimer];
[self startNextOperationIfPossible];
[strongSelf->startedOpUUIDs removeObject:opUUID];
[strongSelf updateHoldTimer];
[strongSelf startNextOperationIfPossible];
}
}};
@ -889,8 +953,12 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
__block BOOL status = NO;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
status = isActive;
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -982,17 +1050,22 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
{
YDBLogAutoTrace();
__weak YapDatabaseCloudCorePipeline *weakSelf = self;
dispatch_block_t block = ^{ @autoreleasepool {
__strong YapDatabaseCloudCorePipeline *strongSelf = weakSelf;
if (strongSelf == nil) return;
for (YapDatabaseCloudCoreGraph *graph in inGraphs)
{
graph.pipeline = self;
}
[graphs addObjectsFromArray:inGraphs];
[strongSelf->graphs addObjectsFromArray:inGraphs];
if (graphs.count > 0) {
[self startNextOperationIfPossible];
if (strongSelf->graphs.count > 0) {
[strongSelf startNextOperationIfPossible];
}
}};
@ -1009,6 +1082,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
YDBLogAutoTrace();
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (graph)
{
@ -1073,6 +1148,8 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
// Notify listeners that the operation list in the queue changed.
[self postQueueChangedNotification];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -1097,14 +1174,19 @@ NSString *const YDBCloudCore_EphemeralKey_Hold = @"hold";
int const flagOn = 1;
BOOL didSetFlagOn = OSAtomicCompareAndSwapInt(flagOff, flagOn, &needsStartNextOperationFlag);
if (didSetFlagOn)
{
__weak YapDatabaseCloudCorePipeline *weakSelf = self;
dispatch_async(queue, ^{ @autoreleasepool {
OSAtomicCompareAndSwapInt(flagOn, flagOff, &needsStartNextOperationFlag);
[self startNextOperationIfPossible];
__strong YapDatabaseCloudCorePipeline *strongSelf = weakSelf;
if (strongSelf)
{
OSAtomicCompareAndSwapInt(flagOn, flagOff, &strongSelf->needsStartNextOperationFlag);
[strongSelf startNextOperationIfPossible];
}
}});
}
}

View File

@ -152,6 +152,7 @@
/**
* Compares the receiver with the given operation.
* Subclasses should override this method, and add their own comparisons.
**/
- (BOOL)isEqualToOperation:(YapDatabaseCloudCoreOperation *)operation;

View File

@ -241,7 +241,7 @@ NSString *const YDBCloudCoreOperationIsReadyToStartNotification = @"YDBCloudCore
- (BOOL)pendingStatusIsSkippedOrCompleted
{
if (pendingStatus)
if (pendingStatus != nil)
{
YDBCloudCoreOperationStatus status = (YDBCloudCoreOperationStatus)[pendingStatus integerValue];
@ -255,7 +255,7 @@ NSString *const YDBCloudCoreOperationIsReadyToStartNotification = @"YDBCloudCore
- (BOOL)pendingStatusIsCompleted
{
if (pendingStatus)
if (pendingStatus != nil)
return ([pendingStatus integerValue] == YDBCloudOperationStatus_Completed);
else
return NO;
@ -263,7 +263,7 @@ NSString *const YDBCloudCoreOperationIsReadyToStartNotification = @"YDBCloudCore
- (BOOL)pendingStatusIsSkipped
{
if (pendingStatus)
if (pendingStatus != nil)
return ([pendingStatus integerValue] == YDBCloudOperationStatus_Skipped);
else
return NO;

View File

@ -4,6 +4,8 @@
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/**
* A many-to-many cache has the following features:
*
@ -89,7 +91,7 @@
* And then the key/value tuple is moved to the beginning of the most-recently-used linked-list.
**/
- (void)insertKey:(id)key value:(id)value;
- (void)insertKey:(id)key value:(id)value metadata:(id)metadata;
- (void)insertKey:(id)key value:(id)value metadata:(nullable id)metadata;
/**
* Returns whether or not the cache contains the key/value tuple.
@ -107,7 +109,7 @@
*
* If the key/value tuple exists, it's moved to the beginning of the most-recently-used linked-list.
**/
- (id)metadataForKey:(id)key value:(id)value;
- (nullable id)metadataForKey:(id)key value:(id)value;
/**
* Returns YES if the given key or value has 1 or more entries in the cache.
@ -128,15 +130,15 @@
*
* All key/value tuples accessed during enumeration are moved to the beginning of the most-recently-used linked-list.
**/
- (void)enumerateValuesForKey:(id)key withBlock:(void (^)(id value, id metadata, BOOL *stop))block;
- (void)enumerateKeysForValue:(id)value withBlock:(void (^)(id value, id metadata, BOOL *stop))block;
- (void)enumerateValuesForKey:(id)key withBlock:(void (^)(id value, __nullable id metadata, BOOL *stop))block;
- (void)enumerateKeysForValue:(id)value withBlock:(void (^)(id value, __nullable id metadata, BOOL *stop))block;
/**
* Enumerates all key/value pairs in the cache.
*
* As this method is designed to enumerate all values, it ddes not affect the most-recently-used linked-list.
**/
- (void)enumerateWithBlock:(void (^)(id key, id value, id metadata, BOOL *stop))block;
- (void)enumerateWithBlock:(void (^)(id key, id value, __nullable id metadata, BOOL *stop))block;
/**
* Removes the tuple that matches the given key/value pair.
@ -161,3 +163,5 @@
- (void)debug;
@end
NS_ASSUME_NONNULL_END

View File

@ -190,9 +190,10 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
**/
- (YapDatabaseExtensionConnection *)newConnection:(YapDatabaseConnection *)databaseConnection
{
NSAssert(NO, @"Missing required method(%@) in subclass(%@)", NSStringFromSelector(_cmd), [self class]);
// Subclasses should override this method,
// and return an instance of their own subclass.
return nil;
return [[YapDatabaseCloudCoreConnection alloc] initWithParent:self databaseConnection:databaseConnection];
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -275,6 +276,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block YapDatabaseCloudCorePipeline *pipeline = nil;
dispatch_block_t block = ^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
pipeline = pipelines[name];
@ -286,6 +289,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
pipeline = pipelines[alias];
}
}
#pragma clang diagnostic pop
};
if (dispatch_get_specific(IsOnQueueKey))
@ -315,6 +320,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block BOOL result = YES;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (pipelines[pipeline.name] != nil)
{
@ -341,6 +348,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
if (suspendCount > 0) {
[pipeline suspendWithCount:suspendCount];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -359,8 +368,12 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block NSArray *allPipelines = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
allPipelines = [pipelines allValues];
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -379,8 +392,12 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block NSArray *allPipelineNames = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
allPipelineNames = [pipelines allKeys];
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -400,8 +417,12 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block NSArray *allNames = nil;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
allNames = [pipelines allKeys];
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -429,7 +450,12 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block NSUInteger result = 0;
dispatch_block_t block = ^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
result = suspendCount;
#pragma clang diagnostic pop
};
if (dispatch_get_specific(IsOnQueueKey))
@ -450,6 +476,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block NSUInteger newSuspendCount = 0;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (suspendCount <= (NSUIntegerMax - suspendCountIncrement))
suspendCount += suspendCountIncrement;
@ -463,6 +491,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
{
[pipeline suspendWithCount:suspendCountIncrement];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -478,7 +508,9 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
__block NSUInteger newSuspendCount = 0;
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (suspendCount > 0) {
suspendCount--;
}
@ -489,6 +521,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
{
[pipeline resume];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -512,6 +546,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
YDBLogAutoTrace();
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
[rowidsToPipelineName enumerateKeysAndObjectsUsingBlock:^(NSNumber *rowid, NSString *pipelineName, BOOL *stop){
@ -521,6 +557,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
pipeline.rowid = [rowid longLongValue];
}
}];
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -537,6 +575,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
YDBLogAutoTrace();
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
[sortedGraphsPerPipeline enumerateKeysAndObjectsUsingBlock:
^(NSString *pipelineName, NSArray *sortedGraphs, BOOL *stop)
@ -547,6 +587,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
[pipeline restoreGraphs:sortedGraphs];
}
}];
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))
@ -572,6 +614,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
}
dispatch_block_t block = ^{ @autoreleasepool {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
for (YapDatabaseCloudCorePipeline *pipeline in [pipelines objectEnumerator])
{
@ -582,6 +626,8 @@ withRegisteredExtensions:(NSDictionary __unused *)registeredExtensions
insertedOperations:insertedForPipeline
modifiedOperations:modifiedOperations];
}
#pragma clang diagnostic pop
}};
if (dispatch_get_specific(IsOnQueueKey))

View File

@ -142,17 +142,13 @@
{
YDBLogAutoTrace();
NSAssert(NO, @"Missing required method(%@) in subclass(%@)", NSStringFromSelector(_cmd), [self class]);
return nil;
// Subclasses should override this method,
// and return an instance of their own subclass.
/* Subclasses should do something like this:
MYCloudTransaction *transaction =
[[MYCloudTransaction alloc] initWithParentConnection:self
databaseTransaction:databaseTransaction];
YapDatabaseCloudCoreTransaction *extTransaction =
[[YapDatabaseCloudCoreTransaction alloc] initWithParentConnection:self databaseTransaction:databaseTransaction];
return transaction;
*/
return extTransaction;
}
/**
@ -162,18 +158,14 @@
{
YDBLogAutoTrace();
NSAssert(NO, @"Missing required method(%@) in subclass(%@)", NSStringFromSelector(_cmd), [self class]);
return nil;
// Subclasses should override this method,
// and return an instance of their own subclass.
/* Subclasses should do something like this:
MYCloudTransaction *transaction =
[[MYCloudTransaction alloc] initWithParentConnection:self
databaseTransaction:databaseTransaction];
YapDatabaseCloudCoreTransaction *extTransaction =
[[YapDatabaseCloudCoreTransaction alloc] initWithParentConnection:self databaseTransaction:databaseTransaction];
[self prepareForReadWriteTransaction]; // <-- Do NOT forget this step !!
return transaction;
*/
[self prepareForReadWriteTransaction]; // <-- Do NOT forget this step in your subclass !!
return extTransaction;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -326,11 +318,15 @@
else
{
[modifiedMappings enumerateWithBlock:^(NSNumber *rowid, NSString *path, id metadata, BOOL *stop) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (metadata == YDBCloudCore_DiryMappingMetadata_NeedsRemove)
{
[cleanMappingCache removeItemWithKey:rowid value:path];
}
#pragma clang diagnostic pop
}];
}

View File

@ -110,6 +110,18 @@
**/
- (YapDatabaseCloudCoreOperation *)operationWithUUID:(NSUUID *)uuid inPipeline:(NSString *)pipelineName;
/**
* Fetches the graph index that corresponds to newly added operations.
* That is, operations that are added during this commit (read-write transaction).
*
* This may be useful if you need to find and modify operations added during the current read/write transaction.
*
* @return
* The index of the graph that will contain newly added operations from this commit.
* Or NSNotFound if the pipeline isn't found.
**/
- (NSUInteger)graphForAddedOperationsInPipeline:(NSString *)pipelineName;
/**
* @param operation
* The operation to search for.
@ -158,6 +170,25 @@
usingBlock:(void (^)(YapDatabaseCloudCoreOperation *operation,
NSUInteger graphIdx, BOOL *stop))enumBlock;
/**
* Enumerates only those operations that have been added during this commit.
*
* That is, the operations added via the `addOperation:` method,
* within the current readWriteTransaction.
**/
- (void)enumerateAddedOperationsUsingBlock:(void (^)(YapDatabaseCloudCorePipeline *pipeline,
YapDatabaseCloudCoreOperation *operation,
NSUInteger graphIdx, BOOL *stop))enumBlock;
/**
* Enumerates only those operations that have been added during this commit.
*
* That is, the operations added via the `addOperation:` method,
* within the current readWriteTransaction.
**/
- (void)enumerateAddedOperationsInPipeline:(NSString *)pipeline
usingBlock:(void (^)(YapDatabaseCloudCoreOperation *operation,
NSUInteger graphIdx, BOOL *stop))enumBlock;
#pragma mark Tag Support
/**

View File

@ -2402,6 +2402,26 @@ static NSString *const ext_key_versionTag = @"versionTag";
return matchedOp;
}
/**
* Fetches the graph index that corresponds to newly added operations.
* That is, operations that are added during this commit (read-write transaction).
*
* This may be useful if you need to find and modify operations added during the current read/write transaction.
*
* @return
* The index of the graph that will contain newly added operations from this commit.
* Or NSNotFound if the pipeline isn't found.
**/
- (NSUInteger)graphForAddedOperationsInPipeline:(NSString *)pipelineName
{
YapDatabaseCloudCorePipeline *pipeline = [parentConnection->parent pipelineWithName:pipelineName];
if (pipeline)
return pipeline.graphCount;
else
return NSNotFound;
}
/**
* @param operation
* The operation to search for.
@ -2506,6 +2526,49 @@ static NSString *const ext_key_versionTag = @"versionTag";
}];
}
/**
* Public API
**/
- (void)enumerateAddedOperationsUsingBlock:(void (^)(YapDatabaseCloudCorePipeline *pipeline,
YapDatabaseCloudCoreOperation *operation,
NSUInteger graphIdx, BOOL *stop))enumBlock
{
if (enumBlock == nil) return;
if (databaseTransaction->isReadWriteTransaction == NO) return;
[self _enumerateAndModifyOperations:YDBCloudCore_EnumOps_Added
usingBlock:
^YapDatabaseCloudCoreOperation *(YapDatabaseCloudCorePipeline *pipeline,
YapDatabaseCloudCoreOperation *operation,
NSUInteger graphIdx, BOOL *stop)
{
enumBlock(pipeline, [operation copy], graphIdx, stop);
return nil;
}];
}
/**
* Public API
**/
- (void)enumerateAddedOperationsInPipeline:(NSString *)pipelineName
usingBlock:(void (^)(YapDatabaseCloudCoreOperation *operation,
NSUInteger graphIdx, BOOL *stop))enumBlock
{
if (enumBlock == nil) return;
if (databaseTransaction->isReadWriteTransaction == NO) return;
YapDatabaseCloudCorePipeline *pipeline = [parentConnection->parent pipelineWithName:pipelineName];
[self _enumerateAndModifyOperations:YDBCloudCore_EnumOps_All
inPipeline:pipeline
usingBlock:
^YapDatabaseCloudCoreOperation *(YapDatabaseCloudCoreOperation *operation, NSUInteger graphIdx, BOOL *stop)
{
enumBlock([operation copy], graphIdx, stop);
return nil;
}];
}
/**
* Internal enumerate method.
*
@ -2640,33 +2703,52 @@ static NSString *const ext_key_versionTag = @"versionTag";
if (enumBlock == nil) return;
__block BOOL stop = NO;
__block BOOL pipelineHasOps = NO;
__block NSUInteger lastGraphIdx = 0;
[pipeline _enumerateOperationsUsingBlock:
^(YapDatabaseCloudCoreOperation *queuedOp, NSUInteger graphIdx, BOOL *innerStop)
NSArray<NSArray<YapDatabaseCloudCoreOperation *> *> *graphOperations = pipeline.graphOperations;
[graphOperations enumerateObjectsUsingBlock:
^(NSArray<YapDatabaseCloudCoreOperation *> *operations, NSUInteger idx, BOOL *innerStop)
{
pipelineHasOps = YES;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
if (lastGraphIdx != graphIdx)
if (flags & YDBCloudCore_EnumOps_Existing)
{
if (flags & YDBCloudCore_EnumOps_Inserted)
for (YapDatabaseCloudCoreOperation *queuedOp in operations)
{
NSDictionary *insertedGraphs = parentConnection->operations_inserted[pipeline.name];
NSMutableArray<YapDatabaseCloudCoreOperation *> *insertedOps = insertedGraphs[@(lastGraphIdx)];
for (NSUInteger i = 0; i < insertedOps.count; i++)
YapDatabaseCloudCoreOperation *modifiedOp = parentConnection->operations_modified[queuedOp.uuid];
if (modifiedOp)
modifiedOp = enumBlock(modifiedOp, idx, &stop);
else
modifiedOp = enumBlock(queuedOp, idx, &stop);
if (modifiedOp)
{
YapDatabaseCloudCoreOperation *op = insertedOps[i];
YapDatabaseCloudCoreOperation *modifiedOp = enumBlock(op, lastGraphIdx, &stop);
if (modifiedOp)
{
insertedOps[i] = modifiedOp;
}
if (stop) break;
parentConnection->operations_modified[modifiedOp.uuid] = modifiedOp;
}
if (stop) {
*innerStop = YES;
return;
}
}
}
if (flags & YDBCloudCore_EnumOps_Inserted)
{
NSDictionary *insertedGraphs = parentConnection->operations_inserted[pipeline.name];
NSMutableArray<YapDatabaseCloudCoreOperation *> *insertedOps = insertedGraphs[@(idx)];
for (NSUInteger i = 0; i < insertedOps.count; i++)
{
YapDatabaseCloudCoreOperation *op = insertedOps[i];
YapDatabaseCloudCoreOperation *modifiedOp = enumBlock(op, idx, &stop);
if (modifiedOp)
{
insertedOps[i] = modifiedOp;
}
if (stop) {
@ -2674,31 +2756,15 @@ static NSString *const ext_key_versionTag = @"versionTag";
return;
}
}
lastGraphIdx = graphIdx;
}
if (flags & YDBCloudCore_EnumOps_Existing)
{
YapDatabaseCloudCoreOperation *modifiedOp = parentConnection->operations_modified[queuedOp.uuid];
if (modifiedOp)
modifiedOp = enumBlock(modifiedOp, graphIdx, &stop);
else
modifiedOp = enumBlock(queuedOp, graphIdx, &stop);
if (modifiedOp)
{
parentConnection->operations_modified[modifiedOp.uuid] = modifiedOp;
}
if (stop) *innerStop = YES;
}
#pragma clang diagnostic pop
}];
if (!stop && (flags & YDBCloudCore_EnumOps_Added))
{
NSUInteger nextGraphIdx = pipelineHasOps ? (lastGraphIdx + 1) : 0;
NSUInteger lastGraphIdx = graphOperations.count;
NSUInteger nextGraphIdx = (lastGraphIdx == 0) ? 0 : (lastGraphIdx + 1);
NSMutableArray<YapDatabaseCloudCoreOperation *> *addedOps =
parentConnection->operations_added[pipeline.name];
@ -3323,18 +3389,23 @@ static NSString *const ext_key_versionTag = @"versionTag";
[parentConnection->operations_added enumerateKeysAndObjectsUsingBlock:
^(NSString *pipelineName, NSArray *allAddedOperationsForPipeline, BOOL *stop)
{
YapDatabaseCloudCorePipeline *pipeline = [parentConnection->parent pipelineWithName:pipelineName];
NSUInteger graphIdx = pipeline.graphCount;
{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapDatabaseCloudCorePipeline *pipeline = [parentConnection->parent pipelineWithName:pipelineName];
NSUInteger graphIdx = pipeline.graphCount;
NSArray *processedOperationsForPipeline =
[self processOperations:allAddedOperationsForPipeline inPipeline:pipeline withGraphIdx:graphIdx];
if (processedOperationsForPipeline.count > 0)
{
processedAddedOps[pipelineName] = processedOperationsForPipeline;
}
}];
NSArray *processedOperationsForPipeline =
[self processOperations:allAddedOperationsForPipeline inPipeline:pipeline withGraphIdx:graphIdx];
if (processedOperationsForPipeline.count > 0)
{
processedAddedOps[pipelineName] = processedOperationsForPipeline;
}
#pragma clang diagnostic pop
}];
}
// Step 3 of 5:
@ -3344,6 +3415,9 @@ static NSString *const ext_key_versionTag = @"versionTag";
[processedAddedOps enumerateKeysAndObjectsUsingBlock:
^(NSString *pipelineName, NSArray *operations, BOOL *stop)
{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapDatabaseCloudCorePipeline *pipeline = [parentConnection->parent pipelineWithName:pipelineName];
uint64_t nextGraphID = [pipeline nextGraphID];
@ -3355,6 +3429,8 @@ static NSString *const ext_key_versionTag = @"versionTag";
[[YapDatabaseCloudCoreGraph alloc] initWithPersistentOrder:nextGraphID operations:operations];
[parentConnection->graphs_added setObject:graph forKey:pipelineName];
#pragma clang diagnostic pop
}];
for (YapDatabaseCloudCorePipeline *pipeline in pipelines)
@ -3398,7 +3474,7 @@ static NSString *const ext_key_versionTag = @"versionTag";
{
[self mappingTable_insertRowWithRowid:[rowid unsignedLongLongValue] cloudURI:cloudURI];
[parentConnection->cleanMappingCache insertKey:rowid value:cloudURI];
[self->parentConnection->cleanMappingCache insertKey:rowid value:cloudURI];
}
else if (metadata == YDBCloudCore_DiryMappingMetadata_NeedsRemove)
{
@ -3429,7 +3505,7 @@ static NSString *const ext_key_versionTag = @"versionTag";
{
[self tagTable_insertOrUpdateRowWithKey:key identifier:identifier tag:tag];
[parentConnection->tagCache setObject:tag forKey:tuple];
[self->parentConnection->tagCache setObject:tag forKey:tuple];
}
}];
}

View File

@ -132,10 +132,10 @@
[inOriginalValues enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([originalValues objectForKey:key] == nil)
if ([self->originalValues objectForKey:key] == nil)
{
if (newOriginalValues == nil)
newOriginalValues = [originalValues mutableCopy];
newOriginalValues = [self->originalValues mutableCopy];
[newOriginalValues setObject:obj forKey:key];
}

View File

@ -53,9 +53,9 @@
{
[newerOriginalValues enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([originalValues objectForKey:key] == nil)
if ([self->originalValues objectForKey:key] == nil)
{
[originalValues setObject:obj forKey:key];
[self->originalValues setObject:obj forKey:key];
}
}];
}

View File

@ -479,63 +479,70 @@ NSString *const YapDatabaseCloudKitInFlightChangeSetChangedNotification = @"YDBC
{
YDBLogAutoTrace();
// The 'forceNotification' parameter will be YES when this method
// is being called after successfully completing a previous operation.
__weak YapDatabaseCloudKit *weakSelf = self;
dispatch_queue_t bgQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(bgQueue, ^{ @autoreleasepool {
if (self.isSuspended) // this method is thread-safe
{
YDBLogVerbose(@"Skipping dispatch operation - suspended");
if (forceNotification) {
[self postInFlightChangeSetChangedNotification:[masterQueue currentChangeSetUUID]];
}
return;
}
BOOL isAlreadyInFlight = NO;
YDBCKChangeSet *nextChangeSet = nil;
nextChangeSet = [masterQueue makeInFlightChangeSet:&isAlreadyInFlight]; // this method is thread-safe
if (nextChangeSet == nil)
{
if (isAlreadyInFlight) { // <- { brackets } required when YapDatabaseLoggingTechnique_Disabled
YDBLogVerbose(@"Skipping dispatch operation - upload in progress");
}
else {
YDBLogVerbose(@"Skipping dispatch operation - nothing to upload");
}
if (forceNotification) {
[self postInFlightChangeSetChangedNotification:[masterQueue currentChangeSetUUID]];
}
return;
}
if ([nextChangeSet->deletedRecordIDs count] == 0 &&
[nextChangeSet->modifiedRecords count] == 0)
{
YDBLogVerbose(@"Dropping empty queued operation: %@", nextChangeSet);
NSString *changeSetUUID = nextChangeSet.uuid;
[self handleCompletedOperationWithChangeSet:nextChangeSet savedRecords:nil deletedRecordIDs:nil];
[self postInFlightChangeSetChangedNotification:changeSetUUID];
}
else
{
YDBLogVerbose(@"Queueing operation: %@", nextChangeSet);
NSString *changeSetUUID = nextChangeSet.uuid;
[self queueOperationForChangeSet:nextChangeSet];
[self postInFlightChangeSetChangedNotification:changeSetUUID];
}
__strong YapDatabaseCloudKit *strongSelf = weakSelf;
[strongSelf maybeDispatchNextOperation:forceNotification];
}});
}
- (void)maybeDispatchNextOperation:(BOOL)forceNotification
{
// The 'forceNotification' parameter will be YES when this method
// is being called after successfully completing a previous operation.
if (self.isSuspended) // this method is thread-safe
{
YDBLogVerbose(@"Skipping dispatch operation - suspended");
if (forceNotification) {
[self postInFlightChangeSetChangedNotification:[masterQueue currentChangeSetUUID]];
}
return;
}
BOOL isAlreadyInFlight = NO;
YDBCKChangeSet *nextChangeSet = nil;
nextChangeSet = [masterQueue makeInFlightChangeSet:&isAlreadyInFlight]; // this method is thread-safe
if (nextChangeSet == nil)
{
if (isAlreadyInFlight) { // <- { brackets } required when YapDatabaseLoggingTechnique_Disabled
YDBLogVerbose(@"Skipping dispatch operation - upload in progress");
}
else {
YDBLogVerbose(@"Skipping dispatch operation - nothing to upload");
}
if (forceNotification) {
[self postInFlightChangeSetChangedNotification:[masterQueue currentChangeSetUUID]];
}
return;
}
if ([nextChangeSet->deletedRecordIDs count] == 0 &&
[nextChangeSet->modifiedRecords count] == 0)
{
YDBLogVerbose(@"Dropping empty queued operation: %@", nextChangeSet);
NSString *changeSetUUID = nextChangeSet.uuid;
[self handleCompletedOperationWithChangeSet:nextChangeSet savedRecords:nil deletedRecordIDs:nil];
[self postInFlightChangeSetChangedNotification:changeSetUUID];
}
else
{
YDBLogVerbose(@"Queueing operation: %@", nextChangeSet);
NSString *changeSetUUID = nextChangeSet.uuid;
[self queueOperationForChangeSet:nextChangeSet];
[self postInFlightChangeSetChangedNotification:changeSetUUID];
}
}
- (YapDatabaseConnection *)completionDatabaseConnection
{
@ -677,8 +684,12 @@ NSString *const YapDatabaseCloudKitInFlightChangeSetChangedNotification = @"YDBC
NSString *databaseIdentifier = changeSet.databaseIdentifier;
dispatch_async(dispatch_get_main_queue(), ^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
opErrorBlock(databaseIdentifier, operationError);
#pragma clang diagnostic pop
});
}
@ -741,10 +752,13 @@ NSString *const YapDatabaseCloudKitInFlightChangeSetChangedNotification = @"YDBC
deletedRecordIDs:success_deletedRecordIDs];
} completionBlock:^{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
// Inform the user about the problem via the operationErrorBlock.
opErrorBlock(databaseIdentifier, operationError);
#pragma clang diagnostic pop
}];
}

View File

@ -472,12 +472,16 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
(YapDatabaseCloudKitRecordWithKeyBlock)recordHandler->block;
RestoreRecordBlock = ^(int64_t rowid, CKRecord **inOutRecord, YDBCKRecordInfo *recordInfo) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapCollectionKey *ck = [databaseTransaction collectionKeyForRowid:rowid];
if (ck)
{
recordBlock(databaseTransaction, inOutRecord, recordInfo, ck.collection, ck.key);
}
#pragma clang diagnostic pop
};
}
else if (recordHandler->blockType == YapDatabaseBlockTypeWithObject)
@ -486,6 +490,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
(YapDatabaseCloudKitRecordWithObjectBlock)recordHandler->block;
RestoreRecordBlock = ^(int64_t rowid, CKRecord **inOutRecord, YDBCKRecordInfo *recordInfo) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapCollectionKey *ck = nil;
id object = nil;
@ -494,6 +500,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
{
recordBlock(databaseTransaction, inOutRecord, recordInfo, ck.collection, ck.key, object);
}
#pragma clang diagnostic pop
};
}
else if (recordHandler->blockType == YapDatabaseBlockTypeWithMetadata)
@ -502,6 +510,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
(YapDatabaseCloudKitRecordWithMetadataBlock)recordHandler->block;
RestoreRecordBlock = ^(int64_t rowid, CKRecord **inOutRecord, YDBCKRecordInfo *recordInfo) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapCollectionKey *ck = nil;
id metadata = nil;
@ -510,6 +520,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
{
recordBlock(databaseTransaction, inOutRecord, recordInfo, ck.collection, ck.key, metadata);
}
#pragma clang diagnostic pop
};
}
else // if (recordHandler->blockType == YapDatabaseBlockTypeWithRow)
@ -518,6 +530,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
(YapDatabaseCloudKitRecordWithRowBlock)recordHandler->block;
RestoreRecordBlock = ^(int64_t rowid, CKRecord **inOutRecord, YDBCKRecordInfo *recordInfo) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
YapCollectionKey *ck = nil;
id object = nil;
@ -527,6 +541,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
{
recordBlock(databaseTransaction, inOutRecord, recordInfo, ck.collection, ck.key, object, metadata);
}
#pragma clang diagnostic pop
};
}
@ -576,6 +592,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
void (^InsertRecord)(CKRecord*, YDBCKRecordInfo*, int64_t);
InsertRecord = ^(CKRecord *record, YDBCKRecordInfo *recordInfo, int64_t rowid) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
NSString *databaseIdentifier = recordInfo.databaseIdentifier;
NSString *hash = [self hashRecordID:record.recordID databaseIdentifier:databaseIdentifier];
@ -615,6 +633,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
[dirtyRecordTableInfo incrementOwnerCount];
[dirtyRecordTableInfo mergeOriginalValues:recordInfo.originalValues];
}
#pragma clang diagnostic pop
};
YDBCKRecordInfo *recordInfo = [[YDBCKRecordInfo alloc] init];
@ -636,7 +656,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
recordInfo.databaseIdentifier = nil;
recordInfo.originalValues = nil;
recordBlock(databaseTransaction, &record, recordInfo, collection, key);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key);
if (record) {
InsertRecord(record, recordInfo, rowid);
@ -649,7 +669,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateKeysInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateKeysInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -670,7 +690,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
recordInfo.databaseIdentifier = nil;
recordInfo.originalValues = nil;
recordBlock(databaseTransaction, &record, recordInfo, collection, key, object);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key, object);
if (record) {
InsertRecord(record, recordInfo, rowid);
@ -683,7 +703,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateKeysAndObjectsInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateKeysAndObjectsInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -704,7 +724,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
recordInfo.databaseIdentifier = nil;
recordInfo.originalValues = nil;
recordBlock(databaseTransaction, &record, recordInfo, collection, key, metadata);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key, metadata);
if (record) {
InsertRecord(record, recordInfo, rowid);
@ -717,7 +737,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateKeysAndMetadataInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateKeysAndMetadataInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -738,7 +758,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
recordInfo.databaseIdentifier = nil;
recordInfo.originalValues = nil;
recordBlock(databaseTransaction, &record, recordInfo, collection, key, object, metadata);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key, object, metadata);
if (record) {
InsertRecord(record, recordInfo, rowid);
@ -751,7 +771,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateRowsInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateRowsInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -816,7 +836,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
enumBlock = ^(int64_t rowid, NSString *collection, NSString *key, BOOL *stop) {
enumHelperBlock(rowid);
recordBlock(databaseTransaction, &record, recordInfo, collection, key);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key);
[self processRecord:record recordInfo:recordInfo
preCalculatedHash:nil
@ -832,7 +852,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateKeysInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateKeysInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -850,7 +870,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
enumBlock = ^(int64_t rowid, NSString *collection, NSString *key, id object, BOOL *stop) {
enumHelperBlock(rowid);
recordBlock(databaseTransaction, &record, recordInfo, collection, key, object);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key, object);
[self processRecord:record recordInfo:recordInfo
preCalculatedHash:nil
@ -866,7 +886,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateKeysAndObjectsInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateKeysAndObjectsInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -884,7 +904,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
enumBlock = ^(int64_t rowid, NSString *collection, NSString *key, id metadata, BOOL *stop) {
enumHelperBlock(rowid);
recordBlock(databaseTransaction, &record, recordInfo, collection, key, metadata);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key, metadata);
[self processRecord:record recordInfo:recordInfo
preCalculatedHash:nil
@ -900,7 +920,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateKeysAndMetadataInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateKeysAndMetadataInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -918,7 +938,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
enumBlock = ^(int64_t rowid, NSString *collection, NSString *key, id object, id metadata, BOOL *stop) {
enumHelperBlock(rowid);
recordBlock(databaseTransaction, &record, recordInfo, collection, key, object, metadata);
recordBlock(self->databaseTransaction, &record, recordInfo, collection, key, object, metadata);
[self processRecord:record recordInfo:recordInfo
preCalculatedHash:nil
@ -934,7 +954,7 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
if ([allowedCollections isAllowed:collection])
{
[databaseTransaction _enumerateRowsInCollections:@[ collection ] usingBlock:enumBlock];
[self->databaseTransaction _enumerateRowsInCollections:@[ collection ] usingBlock:enumBlock];
}
}];
}
@ -2898,6 +2918,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
// Update mapping table.
[parentConnection->dirtyMappingTableInfoDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
__unsafe_unretained NSNumber *rowidNumber = (NSNumber *)key;
__unsafe_unretained YDBCKDirtyMappingTableInfo *dirtyMappingTableInfo = (YDBCKDirtyMappingTableInfo *)obj;
@ -2923,6 +2945,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
[parentConnection->changeset_mappingTableInfo setObject:cleanMappingTableInfo forKey:rowidNumber];
[parentConnection->cleanMappingTableInfoCache setObject:cleanMappingTableInfo forKey:rowidNumber];
}
#pragma clang diagnostic pop
}];
// Step 2 of 6:
@ -2930,6 +2954,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
// Update record table.
[parentConnection->dirtyRecordTableInfoDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"
__unsafe_unretained NSString *hash = (NSString *)key;
__unsafe_unretained YDBCKDirtyRecordTableInfo *dirtyRecordTableInfo = (YDBCKDirtyRecordTableInfo *)obj;
@ -2985,6 +3011,8 @@ static BOOL ClassVersionsAreCompatible(int oldClassVersion, int newClassVersion)
[parentConnection->changeset_recordTableInfo setObject:cleanRecordTableInfo forKey:hash];
[parentConnection->cleanRecordTableInfoCache setObject:cleanRecordTableInfo forKey:hash];
}
#pragma clang diagnostic pop
}];
// Step 3 of 6:

View File

@ -31,19 +31,19 @@ NS_ASSUME_NONNULL_BEGIN
typedef id YapDatabaseCloudKitRecordBlock; // One of the YapDatabaseCloutKitGetRecordX types below.
typedef void (^YapDatabaseCloudKitRecordWithKeyBlock)
(YapDatabaseReadTransaction *transaction, CKRecord *_Nonnull *_Nullable inOutRecordPtr, YDBCKRecordInfo *recordInfo,
(YapDatabaseReadTransaction *transaction, CKRecord *_Nullable *_Nonnull inOutRecordPtr, YDBCKRecordInfo *recordInfo,
NSString *collection, NSString *key);
typedef void (^YapDatabaseCloudKitRecordWithObjectBlock)
(YapDatabaseReadTransaction *transaction, CKRecord *_Nonnull *_Nullable inOutRecordPtr, YDBCKRecordInfo *recordInfo,
(YapDatabaseReadTransaction *transaction, CKRecord *_Nullable *_Nonnull inOutRecordPtr, YDBCKRecordInfo *recordInfo,
NSString *collection, NSString *key, id object);
typedef void (^YapDatabaseCloudKitRecordWithMetadataBlock)
(YapDatabaseReadTransaction *transaction, CKRecord *_Nonnull *_Nullable inOutRecordPtr, YDBCKRecordInfo *recordInfo,
(YapDatabaseReadTransaction *transaction, CKRecord *_Nullable *_Nonnull inOutRecordPtr, YDBCKRecordInfo *recordInfo,
NSString *collection, NSString *key, __nullable id metadata);
typedef void (^YapDatabaseCloudKitRecordWithRowBlock)
(YapDatabaseReadTransaction *transaction, CKRecord *_Nonnull *_Nullable inOutRecordPtr, YDBCKRecordInfo *recordInfo,
(YapDatabaseReadTransaction *transaction, CKRecord *_Nullable *_Nonnull inOutRecordPtr, YDBCKRecordInfo *recordInfo,
NSString *collection, NSString *key, id object, __nullable id metadata);
+ (instancetype)withKeyBlock:(YapDatabaseCloudKitRecordWithKeyBlock)recordBlock;

Some files were not shown because too many files have changed in this diff Show More