motion-yapper 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -2
- data/.travis.yml +2 -0
- data/Gemfile +1 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/lib/motion-yapper.rb +1 -0
- data/lib/yapper.rb +3 -5
- data/lib/yapper/config.rb +2 -0
- data/lib/yapper/db.rb +105 -40
- data/lib/yapper/document.rb +7 -4
- data/lib/yapper/document/callbacks.rb +0 -7
- data/lib/yapper/document/{persistance.rb → persistence.rb} +27 -21
- data/lib/yapper/document/relation.rb +29 -22
- data/lib/yapper/document/selection.rb +122 -54
- data/lib/yapper/extensions.rb +12 -24
- data/lib/yapper/settings.rb +43 -0
- data/lib/yapper/timestamps.rb +2 -0
- data/lib/yapper/version.rb +1 -1
- data/{yapper.gemspec → motion-yapper.gemspec} +0 -0
- data/spec/integration/{where_spec.rb → criteria_spec.rb} +78 -10
- data/spec/integration/db_spec.rb +70 -0
- data/spec/integration/defaults_spec.rb +37 -0
- data/spec/integration/extensions_spec.rb +14 -0
- data/spec/integration/{persistance_spec.rb → persistence_spec.rb} +0 -0
- data/spec/integration/relation_spec.rb +4 -4
- data/vendor/Podfile.lock +9 -11
- data/vendor/Pods/.build/libPods-CocoaLumberjack.a +0 -0
- data/vendor/Pods/.build/libPods-NSData+MD5Digest.a +0 -0
- data/vendor/Pods/.build/libPods-YapDatabase.a +0 -0
- data/vendor/Pods/.build/libPods.a +0 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDASLLogger.h +4 -4
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDAbstractDatabaseLogger.h +14 -14
- data/vendor/Pods/{CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.h → BuildHeaders/CocoaLumberjack/DDContextFilterLogFormatter.h} +6 -8
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDFileLogger.h +67 -32
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog+LOGV.h +99 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog.h +98 -65
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDMultiFormatter.h +30 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDTTYLogger.h +39 -25
- data/vendor/Pods/BuildHeaders/YapDatabase/NSDictionary+YapDatabase.h +8 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCache.h +1 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCollectionKey.h +3 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabase.h +4 -4
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnection.h +21 -19
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseDefaults.h +1 -1
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionPrivate.h +35 -31
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredView.h +8 -35
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewPrivate.h +0 -2
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTransaction.h +17 -17
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTypes.h +32 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchPrivate.h +8 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabasePrivate.h +43 -21
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationship.h +35 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipConnection.h +29 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdge.h +163 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdgePrivate.h +79 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipNode.h +99 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipOptions.h +59 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipPrivate.h +125 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipTransaction.h +384 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndex.h +49 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +10 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetupPrivate.h +18 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseTransaction.h +131 -21
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseView.h +48 -107
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChange.h +2 -2
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewConnection.h +1 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappings.h +17 -0
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewOptions.h +10 -3
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPrivate.h +18 -1
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTransaction.h +75 -24
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTypes.h +99 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.h +4 -4
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.m +51 -50
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.h +14 -14
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m +546 -546
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.h +67 -32
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.m +1093 -907
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog+LOGV.h +99 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.h +98 -65
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.m +873 -748
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.h +39 -25
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.m +1284 -1243
- data/vendor/Pods/{BuildHeaders/CocoaLumberjack/ContextFilterLogFormatter.h → CocoaLumberjack/Lumberjack/Extensions/DDContextFilterLogFormatter.h} +6 -8
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/{ContextFilterLogFormatter.m → DDContextFilterLogFormatter.m} +70 -70
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDDispatchQueueLogFormatter.m +253 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.h +30 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.m +127 -0
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/README.txt +1 -1
- data/vendor/Pods/CocoaLumberjack/README.markdown +52 -15
- data/vendor/Pods/Headers/CocoaLumberjack/DDASLLogger.h +4 -4
- data/vendor/Pods/Headers/CocoaLumberjack/DDAbstractDatabaseLogger.h +14 -14
- data/vendor/Pods/Headers/CocoaLumberjack/{ContextFilterLogFormatter.h → DDContextFilterLogFormatter.h} +6 -8
- data/vendor/Pods/Headers/CocoaLumberjack/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
- data/vendor/Pods/Headers/CocoaLumberjack/DDFileLogger.h +67 -32
- data/vendor/Pods/Headers/CocoaLumberjack/DDLog+LOGV.h +99 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDLog.h +98 -65
- data/vendor/Pods/Headers/CocoaLumberjack/DDMultiFormatter.h +30 -0
- data/vendor/Pods/Headers/CocoaLumberjack/DDTTYLogger.h +39 -25
- data/vendor/Pods/Headers/YapDatabase/YapCollectionKey.h +3 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabase.h +4 -4
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnection.h +21 -19
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredView.h +8 -35
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTransaction.h +17 -17
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTypes.h +32 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationship.h +35 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipConnection.h +29 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipEdge.h +163 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipNode.h +99 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipOptions.h +59 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipTransaction.h +384 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndex.h +49 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseTransaction.h +131 -21
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseView.h +48 -107
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChange.h +2 -2
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewConnection.h +1 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappings.h +17 -0
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewOptions.h +10 -3
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTransaction.h +75 -24
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTypes.h +99 -0
- data/vendor/Pods/Headers/____Pods-CocoaLumberjack-prefix.h +2 -0
- data/vendor/Pods/Headers/____Pods-environment.h +15 -15
- data/vendor/Pods/Manifest.lock +9 -11
- data/vendor/Pods/Pods-CocoaLumberjack-Private.xcconfig +1 -1
- data/vendor/Pods/Pods-CocoaLumberjack-prefix.pch +2 -0
- data/vendor/Pods/Pods-NSData+MD5Digest-Private.xcconfig +1 -1
- data/vendor/Pods/Pods-YapDatabase-Private.xcconfig +1 -1
- data/vendor/Pods/{Pods-Acknowledgements.markdown → Pods-acknowledgements.markdown} +0 -37
- data/vendor/Pods/{Pods-Acknowledgements.plist → Pods-acknowledgements.plist} +0 -45
- data/vendor/Pods/Pods-environment.h +15 -15
- data/vendor/Pods/Pods.xcconfig +3 -3
- data/vendor/Pods/Pods.xcodeproj/project.pbxproj +2426 -3155
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-CocoaLumberjack.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-NSData+MD5Digest.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-YapDatabase.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods.xcscheme +59 -0
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/xcschememanagement.plist +31 -0
- data/vendor/Pods/YapDatabase/README.md +3 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/Internal/YapDatabaseFilteredViewPrivate.h +0 -2
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.h +8 -35
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.m +25 -41
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.h +17 -17
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.m +403 -134
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTypes.h +32 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/Internal/YapDatabaseFullTextSearchPrivate.h +8 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m +8 -8
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m +113 -62
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h +35 -31
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.m +25 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.m +1 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.m +25 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipEdgePrivate.h +79 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipPrivate.h +125 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.h +35 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.m +129 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.h +29 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.m +802 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.h +163 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.m +408 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipNode.h +99 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.h +59 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.m +29 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.h +384 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.m +5254 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexPrivate.h +10 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexSetupPrivate.h +18 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h +49 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m +12 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m +9 -8
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m +62 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m +148 -45
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPrivate.h +18 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.h +2 -2
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.m +15 -9
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.h +17 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.m +211 -64
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.h +48 -107
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.m +10 -7
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.h +1 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.m +13 -22
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.h +10 -3
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.h +75 -24
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.m +725 -244
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTypes.h +99 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.h +8 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.m +19 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.h +1 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.m +12 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.h +1 -1
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.m +3 -3
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabasePrivate.h +43 -21
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.m +4 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.h +3 -0
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.m +5 -0
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.h +4 -4
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.m +84 -93
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.h +21 -19
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.m +381 -209
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.h +131 -21
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.m +587 -267
- data/vendor/Pods/{Pods.bridgesupport → build-iPhoneSimulator/Pods.bridgesupport} +633 -2557
- data/vendor/Pods/build-iPhoneSimulator/libPods.a +0 -0
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.bridgesupport +2 -1
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.h +2 -1
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.m +4 -2
- metadata +80 -108
- data/Gemfile.lock +0 -63
- data/lib/yapper/attachment.rb +0 -48
- data/lib/yapper/document/attachment.rb +0 -26
- data/lib/yapper/sync.rb +0 -134
- data/lib/yapper/sync/data.rb +0 -12
- data/lib/yapper/sync/event.rb +0 -194
- data/lib/yapper/sync/queue.rb +0 -164
- data/spec/integration/all_spec.rb +0 -40
- data/spec/integration/sync_spec.rb +0 -42
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +0 -641
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +0 -1396
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +0 -133
- data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +0 -327
- data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +0 -113
- data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +0 -321
- data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +0 -71
- data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +0 -150
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +0 -157
- data/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +0 -43
- data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +0 -68
- data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +0 -143
- data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +0 -370
- data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +0 -848
- data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +0 -89
- data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +0 -167
- data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +0 -78
- data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +0 -191
- data/vendor/Pods/AFNetworking/LICENSE +0 -19
- data/vendor/Pods/AFNetworking/README.md +0 -208
- data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +0 -641
- data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +0 -133
- data/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +0 -113
- data/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +0 -71
- data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
- data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +0 -43
- data/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +0 -68
- data/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +0 -370
- data/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +0 -89
- data/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +0 -78
- data/vendor/Pods/BuildHeaders/Reachability/Reachability.h +0 -109
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.m +0 -251
- data/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +0 -641
- data/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +0 -133
- data/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +0 -113
- data/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +0 -71
- data/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
- data/vendor/Pods/Headers/AFNetworking/AFNetworking.h +0 -43
- data/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +0 -68
- data/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +0 -370
- data/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +0 -89
- data/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +0 -78
- data/vendor/Pods/Headers/Reachability/Reachability.h +0 -109
- data/vendor/Pods/Headers/YapDatabase/YapCache.h +0 -90
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnectionState.h +0 -29
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseDefaults.h +0 -37
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionPrivate.h +0 -440
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewPrivate.h +0 -19
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchPrivate.h +0 -69
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseLogging.h +0 -158
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseManager.h +0 -17
- data/vendor/Pods/Headers/YapDatabase/YapDatabasePrivate.h +0 -424
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +0 -73
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseStatement.h +0 -13
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseString.h +0 -121
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChangePrivate.h +0 -94
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappingsPrivate.h +0 -72
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPage.h +0 -36
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPageMetadata.h +0 -27
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPrivate.h +0 -153
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +0 -17
- data/vendor/Pods/Headers/YapDatabase/YapMemoryTable.h +0 -74
- data/vendor/Pods/Headers/YapDatabase/YapNull.h +0 -17
- data/vendor/Pods/Headers/YapDatabase/YapTouch.h +0 -15
- data/vendor/Pods/Headers/____Pods-AFNetworking-prefix.h +0 -17
- data/vendor/Pods/Headers/____Pods-Reachability-prefix.h +0 -5
- data/vendor/Pods/Pods-AFNetworking-Private.xcconfig +0 -5
- data/vendor/Pods/Pods-AFNetworking-dummy.m +0 -5
- data/vendor/Pods/Pods-AFNetworking-prefix.pch +0 -17
- data/vendor/Pods/Pods-AFNetworking.xcconfig +0 -1
- data/vendor/Pods/Pods-Reachability-Private.xcconfig +0 -5
- data/vendor/Pods/Pods-Reachability-dummy.m +0 -5
- data/vendor/Pods/Pods-Reachability-prefix.pch +0 -5
- data/vendor/Pods/Pods-Reachability.xcconfig +0 -1
- data/vendor/Pods/Reachability/LICENCE.txt +0 -24
- data/vendor/Pods/Reachability/README.md +0 -65
- data/vendor/Pods/Reachability/Reachability.h +0 -109
- data/vendor/Pods/Reachability/Reachability.m +0 -527
@@ -29,12 +29,14 @@
|
|
29
29
|
* But for conncurrent access between multiple threads you must use multiple connections.
|
30
30
|
**/
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
enum {
|
33
|
+
YapDatabaseConnectionFlushMemoryFlags_None = 0,
|
34
|
+
YapDatabaseConnectionFlushMemoryFlags_Caches = 1 << 0,
|
35
|
+
YapDatabaseConnectionFlushMemoryFlags_Statements = 1 << 1,
|
36
|
+
YapDatabaseConnectionFlushMemoryFlags_All = (YapDatabaseConnectionFlushMemoryFlags_Caches |
|
37
|
+
YapDatabaseConnectionFlushMemoryFlags_Statements),
|
38
|
+
};
|
39
|
+
typedef int YapDatabaseConnectionFlushMemoryFlags;
|
38
40
|
|
39
41
|
typedef enum {
|
40
42
|
YapDatabasePolicyContainment = 0,
|
@@ -418,30 +420,30 @@ typedef enum {
|
|
418
420
|
* Depending upon how often you use the database connection,
|
419
421
|
* you may want to be more or less aggressive on how much stuff you flush.
|
420
422
|
*
|
421
|
-
*
|
422
|
-
* No-op. Doesn't flush
|
423
|
+
* YapDatabaseConnectionFlushMemoryFlags_None:
|
424
|
+
* No-op. Doesn't flush anything.
|
423
425
|
*
|
424
|
-
*
|
425
|
-
* Flushes the object cache and metadata cache.
|
426
|
+
* YapDatabaseConnectionFlushMemoryFlags_Caches:
|
427
|
+
* Flushes all caches, including the object cache and metadata cache.
|
426
428
|
*
|
427
|
-
*
|
428
|
-
*
|
429
|
+
* YapDatabaseConnectionFlushMemoryFlags_Statements:
|
430
|
+
* Flushes all pre-compiled sqlite statements.
|
429
431
|
*
|
430
|
-
*
|
431
|
-
* Full flush of all caches and
|
432
|
+
* YapDatabaseConnectionFlushMemoryFlags_All:
|
433
|
+
* Full flush of all caches and pre-compiled sqlite statements.
|
432
434
|
**/
|
433
|
-
- (void)
|
435
|
+
- (void)flushMemoryWithFlags:(YapDatabaseConnectionFlushMemoryFlags)flags;
|
434
436
|
|
435
437
|
#if TARGET_OS_IPHONE
|
436
438
|
/**
|
437
439
|
* When a UIApplicationDidReceiveMemoryWarningNotification is received,
|
438
|
-
* the code automatically invokes
|
440
|
+
* the code automatically invokes flushMemoryWithFlags and passes the set flags.
|
439
441
|
*
|
440
|
-
* The default value is
|
442
|
+
* The default value is YapDatabaseConnectionFlushMemoryFlags_All.
|
441
443
|
*
|
442
|
-
* @see
|
444
|
+
* @see flushMemoryWithFlags:
|
443
445
|
**/
|
444
|
-
@property (atomic, assign, readwrite)
|
446
|
+
@property (atomic, assign, readwrite) YapDatabaseConnectionFlushMemoryFlags autoFlushMemoryFlags;
|
445
447
|
#endif
|
446
448
|
|
447
449
|
@end
|
@@ -29,6 +29,8 @@
|
|
29
29
|
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
|
30
30
|
#endif
|
31
31
|
|
32
|
+
#define UNLIMITED_CACHE_LIMIT 0
|
33
|
+
#define MIN_KEY_CACHE_LIMIT 500
|
32
34
|
#define DEFAULT_OBJECT_CACHE_LIMIT 250
|
33
35
|
#define DEFAULT_METADATA_CACHE_LIMIT 500
|
34
36
|
|
@@ -42,6 +44,7 @@
|
|
42
44
|
|
43
45
|
sqlite3_stmt *yapGetDataForKeyStatement; // Against "yap" database, for internal use
|
44
46
|
sqlite3_stmt *yapSetDataForKeyStatement; // Against "yap" database, for internal use
|
47
|
+
sqlite3_stmt *yapRemoveForKeyStatement; // Against "yap" database, for internal use
|
45
48
|
sqlite3_stmt *yapRemoveExtensionStatement; // Against "yap" database, for internal use
|
46
49
|
|
47
50
|
sqlite3_stmt *getCollectionCountStatement;
|
@@ -50,15 +53,15 @@
|
|
50
53
|
sqlite3_stmt *getCountForRowidStatement;
|
51
54
|
sqlite3_stmt *getRowidForKeyStatement;
|
52
55
|
sqlite3_stmt *getKeyForRowidStatement;
|
53
|
-
sqlite3_stmt *getKeyDataForRowidStatement;
|
54
|
-
sqlite3_stmt *getKeyMetadataForRowidStatement;
|
55
56
|
sqlite3_stmt *getDataForRowidStatement;
|
57
|
+
sqlite3_stmt *getMetadataForRowidStatement;
|
56
58
|
sqlite3_stmt *getAllForRowidStatement;
|
57
59
|
sqlite3_stmt *getDataForKeyStatement;
|
58
60
|
sqlite3_stmt *getMetadataForKeyStatement;
|
59
61
|
sqlite3_stmt *getAllForKeyStatement;
|
60
62
|
sqlite3_stmt *insertForRowidStatement;
|
61
63
|
sqlite3_stmt *updateAllForRowidStatement;
|
64
|
+
sqlite3_stmt *updateObjectForRowidStatement;
|
62
65
|
sqlite3_stmt *updateMetadataForRowidStatement;
|
63
66
|
sqlite3_stmt *removeForRowidStatement;
|
64
67
|
sqlite3_stmt *removeCollectionStatement;
|
@@ -123,21 +126,41 @@
|
|
123
126
|
|
124
127
|
YapDatabaseDefaults *defaults = [database defaults];
|
125
128
|
|
129
|
+
NSUInteger keyCacheLimit = MIN_KEY_CACHE_LIMIT;
|
130
|
+
|
126
131
|
if (defaults.objectCacheEnabled)
|
127
132
|
{
|
128
133
|
objectCacheLimit = defaults.objectCacheLimit;
|
129
134
|
objectCache = [[YapCache alloc] initWithKeyClass:[YapCollectionKey class]];
|
130
135
|
objectCache.countLimit = objectCacheLimit;
|
136
|
+
|
137
|
+
if (keyCacheLimit != UNLIMITED_CACHE_LIMIT)
|
138
|
+
{
|
139
|
+
if (objectCacheLimit == UNLIMITED_CACHE_LIMIT)
|
140
|
+
keyCacheLimit = UNLIMITED_CACHE_LIMIT;
|
141
|
+
else
|
142
|
+
keyCacheLimit = MAX(keyCacheLimit, objectCacheLimit);
|
143
|
+
}
|
131
144
|
}
|
132
145
|
if (defaults.metadataCacheEnabled)
|
133
146
|
{
|
134
147
|
metadataCacheLimit = defaults.metadataCacheLimit;
|
135
148
|
metadataCache = [[YapCache alloc] initWithKeyClass:[YapCollectionKey class]];
|
136
149
|
metadataCache.countLimit = metadataCacheLimit;
|
150
|
+
|
151
|
+
if (keyCacheLimit != UNLIMITED_CACHE_LIMIT)
|
152
|
+
{
|
153
|
+
if (metadataCacheLimit == UNLIMITED_CACHE_LIMIT)
|
154
|
+
keyCacheLimit = UNLIMITED_CACHE_LIMIT;
|
155
|
+
else
|
156
|
+
keyCacheLimit = MAX(keyCacheLimit, objectCacheLimit);
|
157
|
+
}
|
137
158
|
}
|
138
159
|
|
160
|
+
keyCache = [[YapCache alloc] initWithKeyClass:[NSNumber class] countLimit:keyCacheLimit];
|
161
|
+
|
139
162
|
#if TARGET_OS_IPHONE
|
140
|
-
self.
|
163
|
+
self.autoFlushMemoryFlags = defaults.autoFlushMemoryFlags;
|
141
164
|
#endif
|
142
165
|
|
143
166
|
lock = OS_SPINLOCK_INIT;
|
@@ -214,6 +237,7 @@
|
|
214
237
|
registeredExtensions = [database registeredExtensions];
|
215
238
|
registeredTables = [database registeredTables];
|
216
239
|
extensionsOrder = [database extensionsOrder];
|
240
|
+
extensionDependencies = [database extensionDependencies];
|
217
241
|
|
218
242
|
extensionsReady = ([registeredExtensions count] == 0);
|
219
243
|
}
|
@@ -240,12 +264,43 @@
|
|
240
264
|
|
241
265
|
[extensions removeAllObjects];
|
242
266
|
|
267
|
+
[self _flushStatements];
|
268
|
+
|
269
|
+
if (db)
|
270
|
+
{
|
271
|
+
if (![database connectionPoolEnqueue:db])
|
272
|
+
{
|
273
|
+
int status = sqlite3_close(db);
|
274
|
+
if (status != SQLITE_OK)
|
275
|
+
{
|
276
|
+
YDBLogError(@"Error in sqlite_close: %d %s", status, sqlite3_errmsg(db));
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
db = NULL;
|
281
|
+
}
|
282
|
+
|
283
|
+
[database removeConnection:self];
|
284
|
+
|
285
|
+
#if !OS_OBJECT_USE_OBJC
|
286
|
+
if (connectionQueue)
|
287
|
+
dispatch_release(connectionQueue);
|
288
|
+
#endif
|
289
|
+
}
|
290
|
+
|
291
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
292
|
+
#pragma mark Memory
|
293
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
294
|
+
|
295
|
+
- (void)_flushStatements
|
296
|
+
{
|
243
297
|
sqlite_finalize_null(&beginTransactionStatement);
|
244
298
|
sqlite_finalize_null(&commitTransactionStatement);
|
245
299
|
sqlite_finalize_null(&rollbackTransactionStatement);
|
246
300
|
|
247
301
|
sqlite_finalize_null(&yapGetDataForKeyStatement);
|
248
302
|
sqlite_finalize_null(&yapSetDataForKeyStatement);
|
303
|
+
sqlite_finalize_null(&yapRemoveForKeyStatement);
|
249
304
|
sqlite_finalize_null(&yapRemoveExtensionStatement);
|
250
305
|
|
251
306
|
sqlite_finalize_null(&getCollectionCountStatement);
|
@@ -254,13 +309,15 @@
|
|
254
309
|
sqlite_finalize_null(&getCountForRowidStatement);
|
255
310
|
sqlite_finalize_null(&getRowidForKeyStatement);
|
256
311
|
sqlite_finalize_null(&getKeyForRowidStatement);
|
257
|
-
sqlite_finalize_null(&getKeyDataForRowidStatement);
|
258
|
-
sqlite_finalize_null(&getKeyMetadataForRowidStatement);
|
259
312
|
sqlite_finalize_null(&getDataForRowidStatement);
|
313
|
+
sqlite_finalize_null(&getMetadataForRowidStatement);
|
260
314
|
sqlite_finalize_null(&getAllForRowidStatement);
|
261
315
|
sqlite_finalize_null(&getDataForKeyStatement);
|
316
|
+
sqlite_finalize_null(&getMetadataForKeyStatement);
|
317
|
+
sqlite_finalize_null(&getAllForKeyStatement);
|
262
318
|
sqlite_finalize_null(&insertForRowidStatement);
|
263
319
|
sqlite_finalize_null(&updateAllForRowidStatement);
|
320
|
+
sqlite_finalize_null(&updateObjectForRowidStatement);
|
264
321
|
sqlite_finalize_null(&updateMetadataForRowidStatement);
|
265
322
|
sqlite_finalize_null(&removeForRowidStatement);
|
266
323
|
sqlite_finalize_null(&removeCollectionStatement);
|
@@ -275,91 +332,25 @@
|
|
275
332
|
sqlite_finalize_null(&enumerateKeysAndObjectsInAllCollectionsStatement);
|
276
333
|
sqlite_finalize_null(&enumerateRowsInCollectionStatement);
|
277
334
|
sqlite_finalize_null(&enumerateRowsInAllCollectionsStatement);
|
278
|
-
|
279
|
-
if (db)
|
280
|
-
{
|
281
|
-
if (![database connectionPoolEnqueue:db])
|
282
|
-
{
|
283
|
-
int status = sqlite3_close(db);
|
284
|
-
if (status != SQLITE_OK)
|
285
|
-
{
|
286
|
-
YDBLogError(@"Error in sqlite_close: %d %s", status, sqlite3_errmsg(db));
|
287
|
-
}
|
288
|
-
}
|
289
|
-
|
290
|
-
db = NULL;
|
291
|
-
}
|
292
|
-
|
293
|
-
[database removeConnection:self];
|
294
|
-
|
295
|
-
#if !OS_OBJECT_USE_OBJC
|
296
|
-
if (connectionQueue)
|
297
|
-
dispatch_release(connectionQueue);
|
298
|
-
#endif
|
299
335
|
}
|
300
336
|
|
301
|
-
|
302
|
-
#pragma mark Memory
|
303
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
304
|
-
|
305
|
-
/**
|
306
|
-
* Optional override hook.
|
307
|
-
* Don't forget to invoke [super _flushMemoryWithLevel:level].
|
308
|
-
**/
|
309
|
-
- (void)_flushMemoryWithLevel:(int)level
|
337
|
+
- (void)_flushMemoryWithFlags:(YapDatabaseConnectionFlushMemoryFlags)flags
|
310
338
|
{
|
311
|
-
if (
|
339
|
+
if (flags & YapDatabaseConnectionFlushMemoryFlags_Caches)
|
312
340
|
{
|
341
|
+
[keyCache removeAllObjects];
|
313
342
|
[objectCache removeAllObjects];
|
314
343
|
[metadataCache removeAllObjects];
|
315
344
|
}
|
316
345
|
|
317
|
-
if (
|
318
|
-
{
|
319
|
-
|
320
|
-
sqlite_finalize_null(&rollbackTransactionStatement);
|
321
|
-
|
322
|
-
sqlite_finalize_null(&getCollectionCountStatement);
|
323
|
-
sqlite_finalize_null(&getKeyCountForCollectionStatement);
|
324
|
-
sqlite_finalize_null(&getKeyCountForAllStatement);
|
325
|
-
sqlite_finalize_null(&getCountForRowidStatement);
|
326
|
-
sqlite_finalize_null(&getKeyForRowidStatement);
|
327
|
-
sqlite_finalize_null(&getKeyDataForRowidStatement);
|
328
|
-
sqlite_finalize_null(&getKeyMetadataForRowidStatement);
|
329
|
-
sqlite_finalize_null(&getDataForRowidStatement);
|
330
|
-
sqlite_finalize_null(&getAllForRowidStatement);
|
331
|
-
sqlite_finalize_null(&updateMetadataForRowidStatement);
|
332
|
-
sqlite_finalize_null(&removeForRowidStatement);
|
333
|
-
sqlite_finalize_null(&removeCollectionStatement);
|
334
|
-
sqlite_finalize_null(&removeAllStatement);
|
335
|
-
sqlite_finalize_null(&enumerateCollectionsStatement);
|
336
|
-
sqlite_finalize_null(&enumerateCollectionsForKeyStatement);
|
337
|
-
sqlite_finalize_null(&enumerateKeysInCollectionStatement);
|
338
|
-
sqlite_finalize_null(&enumerateKeysInAllCollectionsStatement);
|
339
|
-
sqlite_finalize_null(&enumerateKeysAndMetadataInCollectionStatement);
|
340
|
-
sqlite_finalize_null(&enumerateKeysAndMetadataInAllCollectionsStatement);
|
341
|
-
sqlite_finalize_null(&enumerateKeysAndObjectsInCollectionStatement);
|
342
|
-
sqlite_finalize_null(&enumerateKeysAndObjectsInAllCollectionsStatement);
|
343
|
-
sqlite_finalize_null(&enumerateRowsInCollectionStatement);
|
344
|
-
sqlite_finalize_null(&enumerateRowsInAllCollectionsStatement);
|
345
|
-
}
|
346
|
-
|
347
|
-
if (level >= YapDatabaseConnectionFlushMemoryLevelFull)
|
348
|
-
{
|
349
|
-
sqlite_finalize_null(&yapGetDataForKeyStatement);
|
350
|
-
sqlite_finalize_null(&yapSetDataForKeyStatement);
|
351
|
-
sqlite_finalize_null(&beginTransactionStatement);
|
352
|
-
sqlite_finalize_null(&commitTransactionStatement);
|
353
|
-
|
354
|
-
sqlite_finalize_null(&getRowidForKeyStatement);
|
355
|
-
sqlite_finalize_null(&getDataForKeyStatement);
|
356
|
-
sqlite_finalize_null(&insertForRowidStatement);
|
357
|
-
sqlite_finalize_null(&updateAllForRowidStatement);
|
346
|
+
if (flags & YapDatabaseConnectionFlushMemoryFlags_Statements)
|
347
|
+
{
|
348
|
+
[self _flushStatements];
|
358
349
|
}
|
359
350
|
|
360
351
|
[extensions enumerateKeysAndObjectsUsingBlock:^(id extNameObj, id extConnectionObj, BOOL *stop) {
|
361
352
|
|
362
|
-
[(YapDatabaseExtensionConnection *)extConnectionObj
|
353
|
+
[(YapDatabaseExtensionConnection *)extConnectionObj _flushMemoryWithFlags:flags];
|
363
354
|
}];
|
364
355
|
}
|
365
356
|
|
@@ -381,11 +372,11 @@
|
|
381
372
|
* YapDatabaseConnectionFlushMemoryLevelFull (3):
|
382
373
|
* Full flush of all caches and removes all pre-compiled sqlite statements.
|
383
374
|
**/
|
384
|
-
- (void)
|
375
|
+
- (void)flushMemoryWithFlags:(YapDatabaseConnectionFlushMemoryFlags)flags
|
385
376
|
{
|
386
377
|
dispatch_block_t block = ^{
|
387
378
|
|
388
|
-
[self
|
379
|
+
[self _flushMemoryWithFlags:flags];
|
389
380
|
};
|
390
381
|
|
391
382
|
if (dispatch_get_specific(IsOnConnectionQueueKey))
|
@@ -397,7 +388,7 @@
|
|
397
388
|
#if TARGET_OS_IPHONE
|
398
389
|
- (void)didReceiveMemoryWarning:(NSNotification *)notification
|
399
390
|
{
|
400
|
-
[self
|
391
|
+
[self flushMemoryWithFlags:[self autoFlushMemoryFlags]];
|
401
392
|
}
|
402
393
|
#endif
|
403
394
|
|
@@ -408,10 +399,8 @@
|
|
408
399
|
@synthesize database = database;
|
409
400
|
@synthesize name = _name;
|
410
401
|
|
411
|
-
//@synthesize connectionQueue = connectionQueue;
|
412
|
-
|
413
402
|
#if TARGET_OS_IPHONE
|
414
|
-
@synthesize
|
403
|
+
@synthesize autoFlushMemoryFlags;
|
415
404
|
#endif
|
416
405
|
|
417
406
|
- (BOOL)objectCacheEnabled
|
@@ -446,6 +435,8 @@
|
|
446
435
|
{
|
447
436
|
objectCache = nil;
|
448
437
|
}
|
438
|
+
|
439
|
+
[self updateKeyCacheLimit];
|
449
440
|
};
|
450
441
|
|
451
442
|
if (dispatch_get_specific(IsOnConnectionQueueKey))
|
@@ -480,11 +471,12 @@
|
|
480
471
|
|
481
472
|
if (objectCache == nil)
|
482
473
|
{
|
483
|
-
|
474
|
+
// Limit changed, but objectCache is still disabled
|
484
475
|
}
|
485
476
|
else
|
486
477
|
{
|
487
478
|
objectCache.countLimit = objectCacheLimit;
|
479
|
+
[self updateKeyCacheLimit];
|
488
480
|
}
|
489
481
|
}
|
490
482
|
};
|
@@ -527,6 +519,8 @@
|
|
527
519
|
{
|
528
520
|
metadataCache = nil;
|
529
521
|
}
|
522
|
+
|
523
|
+
[self updateKeyCacheLimit];
|
530
524
|
};
|
531
525
|
|
532
526
|
if (dispatch_get_specific(IsOnConnectionQueueKey))
|
@@ -561,11 +555,12 @@
|
|
561
555
|
|
562
556
|
if (metadataCache == nil)
|
563
557
|
{
|
564
|
-
|
558
|
+
// Limit changed but metadataCache still disabled
|
565
559
|
}
|
566
560
|
else
|
567
561
|
{
|
568
562
|
metadataCache.countLimit = metadataCacheLimit;
|
563
|
+
[self updateKeyCacheLimit];
|
569
564
|
}
|
570
565
|
}
|
571
566
|
};
|
@@ -664,6 +659,39 @@
|
|
664
659
|
return result;
|
665
660
|
}
|
666
661
|
|
662
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
663
|
+
#pragma mark Utilities
|
664
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
665
|
+
|
666
|
+
- (void)updateKeyCacheLimit
|
667
|
+
{
|
668
|
+
NSUInteger keyCacheLimit = MIN_KEY_CACHE_LIMIT;
|
669
|
+
|
670
|
+
if (keyCacheLimit != UNLIMITED_CACHE_LIMIT)
|
671
|
+
{
|
672
|
+
if (objectCache)
|
673
|
+
{
|
674
|
+
if (objectCacheLimit == UNLIMITED_CACHE_LIMIT)
|
675
|
+
keyCacheLimit = UNLIMITED_CACHE_LIMIT;
|
676
|
+
else
|
677
|
+
keyCacheLimit = MAX(keyCacheLimit, objectCacheLimit);
|
678
|
+
}
|
679
|
+
}
|
680
|
+
|
681
|
+
if (keyCacheLimit != UNLIMITED_CACHE_LIMIT)
|
682
|
+
{
|
683
|
+
if (metadataCache)
|
684
|
+
{
|
685
|
+
if (objectCacheLimit == UNLIMITED_CACHE_LIMIT)
|
686
|
+
keyCacheLimit = UNLIMITED_CACHE_LIMIT;
|
687
|
+
else
|
688
|
+
keyCacheLimit = MAX(keyCacheLimit, objectCacheLimit);
|
689
|
+
}
|
690
|
+
}
|
691
|
+
|
692
|
+
keyCache.countLimit = keyCacheLimit;
|
693
|
+
}
|
694
|
+
|
667
695
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
668
696
|
#pragma mark Statements
|
669
697
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
@@ -678,7 +706,7 @@
|
|
678
706
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &beginTransactionStatement, NULL);
|
679
707
|
if (status != SQLITE_OK)
|
680
708
|
{
|
681
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
709
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
682
710
|
}
|
683
711
|
}
|
684
712
|
|
@@ -695,7 +723,7 @@
|
|
695
723
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &commitTransactionStatement, NULL);
|
696
724
|
if (status != SQLITE_OK)
|
697
725
|
{
|
698
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
726
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
699
727
|
}
|
700
728
|
}
|
701
729
|
|
@@ -712,7 +740,7 @@
|
|
712
740
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &rollbackTransactionStatement, NULL);
|
713
741
|
if (status != SQLITE_OK)
|
714
742
|
{
|
715
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
743
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
716
744
|
}
|
717
745
|
}
|
718
746
|
|
@@ -729,7 +757,7 @@
|
|
729
757
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &yapGetDataForKeyStatement, NULL);
|
730
758
|
if (status != SQLITE_OK)
|
731
759
|
{
|
732
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
760
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
733
761
|
}
|
734
762
|
}
|
735
763
|
|
@@ -746,13 +774,30 @@
|
|
746
774
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &yapSetDataForKeyStatement, NULL);
|
747
775
|
if (status != SQLITE_OK)
|
748
776
|
{
|
749
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
777
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
750
778
|
}
|
751
779
|
}
|
752
780
|
|
753
781
|
return yapSetDataForKeyStatement;
|
754
782
|
}
|
755
783
|
|
784
|
+
- (sqlite3_stmt *)yapRemoveForKeyStatement
|
785
|
+
{
|
786
|
+
if (yapRemoveForKeyStatement == NULL)
|
787
|
+
{
|
788
|
+
char *stmt = "DELETE FROM \"yap2\" WHERE \"extension\" = ? AND \"key\" = ?;";
|
789
|
+
int stmtLen = (int)strlen(stmt);
|
790
|
+
|
791
|
+
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &yapRemoveForKeyStatement, NULL);
|
792
|
+
if (status != SQLITE_OK)
|
793
|
+
{
|
794
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
795
|
+
}
|
796
|
+
}
|
797
|
+
|
798
|
+
return yapRemoveForKeyStatement;
|
799
|
+
}
|
800
|
+
|
756
801
|
- (sqlite3_stmt *)yapRemoveExtensionStatement
|
757
802
|
{
|
758
803
|
if (yapRemoveExtensionStatement == NULL)
|
@@ -763,7 +808,7 @@
|
|
763
808
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &yapRemoveExtensionStatement, NULL);
|
764
809
|
if (status != SQLITE_OK)
|
765
810
|
{
|
766
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
811
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
767
812
|
}
|
768
813
|
}
|
769
814
|
|
@@ -780,7 +825,7 @@
|
|
780
825
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getCollectionCountStatement, NULL);
|
781
826
|
if (status != SQLITE_OK)
|
782
827
|
{
|
783
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
828
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
784
829
|
}
|
785
830
|
}
|
786
831
|
|
@@ -797,7 +842,7 @@
|
|
797
842
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getKeyCountForCollectionStatement, NULL);
|
798
843
|
if (status != SQLITE_OK)
|
799
844
|
{
|
800
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
845
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
801
846
|
}
|
802
847
|
}
|
803
848
|
|
@@ -814,7 +859,7 @@
|
|
814
859
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getKeyCountForAllStatement, NULL);
|
815
860
|
if (status != SQLITE_OK)
|
816
861
|
{
|
817
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
862
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
818
863
|
}
|
819
864
|
}
|
820
865
|
|
@@ -831,7 +876,7 @@
|
|
831
876
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getCountForRowidStatement, NULL);
|
832
877
|
if (status != SQLITE_OK)
|
833
878
|
{
|
834
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
879
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
835
880
|
}
|
836
881
|
}
|
837
882
|
|
@@ -848,7 +893,7 @@
|
|
848
893
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getRowidForKeyStatement, NULL);
|
849
894
|
if (status != SQLITE_OK)
|
850
895
|
{
|
851
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
896
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
852
897
|
}
|
853
898
|
}
|
854
899
|
|
@@ -865,75 +910,58 @@
|
|
865
910
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getKeyForRowidStatement, NULL);
|
866
911
|
if (status != SQLITE_OK)
|
867
912
|
{
|
868
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
913
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
869
914
|
}
|
870
915
|
}
|
871
916
|
|
872
917
|
return getKeyForRowidStatement;
|
873
918
|
}
|
874
919
|
|
875
|
-
- (sqlite3_stmt *)
|
876
|
-
{
|
877
|
-
if (getKeyDataForRowidStatement == NULL)
|
878
|
-
{
|
879
|
-
char *stmt = "SELECT \"collection\", \"key\", \"data\" FROM \"database2\" WHERE \"rowid\" = ?;";
|
880
|
-
int stmtLen = (int)strlen(stmt);
|
881
|
-
|
882
|
-
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getKeyDataForRowidStatement, NULL);
|
883
|
-
if (status != SQLITE_OK)
|
884
|
-
{
|
885
|
-
YDBLogError(@"Error creating '%@': %d %s", NSStringFromSelector(_cmd), status, sqlite3_errmsg(db));
|
886
|
-
}
|
887
|
-
}
|
888
|
-
|
889
|
-
return getKeyDataForRowidStatement;
|
890
|
-
}
|
891
|
-
|
892
|
-
- (sqlite3_stmt *)getKeyMetadataForRowidStatement
|
920
|
+
- (sqlite3_stmt *)getDataForRowidStatement
|
893
921
|
{
|
894
|
-
if (
|
922
|
+
if (getDataForRowidStatement == NULL)
|
895
923
|
{
|
896
|
-
char *stmt = "SELECT \"
|
924
|
+
char *stmt = "SELECT \"data\" FROM \"database2\" WHERE \"rowid\" = ?;";
|
897
925
|
int stmtLen = (int)strlen(stmt);
|
898
926
|
|
899
|
-
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &
|
927
|
+
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getDataForRowidStatement, NULL);
|
900
928
|
if (status != SQLITE_OK)
|
901
929
|
{
|
902
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
930
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
903
931
|
}
|
904
932
|
}
|
905
933
|
|
906
|
-
return
|
934
|
+
return getDataForRowidStatement;
|
907
935
|
}
|
908
936
|
|
909
|
-
- (sqlite3_stmt *)
|
937
|
+
- (sqlite3_stmt *)getMetadataForRowidStatement
|
910
938
|
{
|
911
|
-
if (
|
939
|
+
if (getMetadataForRowidStatement == NULL)
|
912
940
|
{
|
913
|
-
char *stmt = "SELECT \"
|
941
|
+
char *stmt = "SELECT \"metadata\" FROM \"database2\" WHERE \"rowid\" = ?;";
|
914
942
|
int stmtLen = (int)strlen(stmt);
|
915
943
|
|
916
|
-
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &
|
944
|
+
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getMetadataForRowidStatement, NULL);
|
917
945
|
if (status != SQLITE_OK)
|
918
946
|
{
|
919
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
947
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
920
948
|
}
|
921
949
|
}
|
922
950
|
|
923
|
-
return
|
951
|
+
return getMetadataForRowidStatement;
|
924
952
|
}
|
925
953
|
|
926
954
|
- (sqlite3_stmt *)getAllForRowidStatement
|
927
955
|
{
|
928
956
|
if (getAllForRowidStatement == NULL)
|
929
957
|
{
|
930
|
-
char *stmt = "SELECT \"
|
958
|
+
char *stmt = "SELECT \"data\", \"metadata\" FROM \"database2\" WHERE \"rowid\" = ?;";
|
931
959
|
int stmtLen = (int)strlen(stmt);
|
932
960
|
|
933
961
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getAllForRowidStatement, NULL);
|
934
962
|
if (status != SQLITE_OK)
|
935
963
|
{
|
936
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
964
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
937
965
|
}
|
938
966
|
}
|
939
967
|
|
@@ -950,7 +978,7 @@
|
|
950
978
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getDataForKeyStatement, NULL);
|
951
979
|
if (status != SQLITE_OK)
|
952
980
|
{
|
953
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
981
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
954
982
|
}
|
955
983
|
}
|
956
984
|
|
@@ -967,7 +995,7 @@
|
|
967
995
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getMetadataForKeyStatement, NULL);
|
968
996
|
if (status != SQLITE_OK)
|
969
997
|
{
|
970
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
998
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
971
999
|
}
|
972
1000
|
}
|
973
1001
|
|
@@ -984,7 +1012,7 @@
|
|
984
1012
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &getAllForKeyStatement, NULL);
|
985
1013
|
if (status != SQLITE_OK)
|
986
1014
|
{
|
987
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1015
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
988
1016
|
}
|
989
1017
|
}
|
990
1018
|
|
@@ -1002,7 +1030,7 @@
|
|
1002
1030
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &insertForRowidStatement, NULL);
|
1003
1031
|
if (status != SQLITE_OK)
|
1004
1032
|
{
|
1005
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1033
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1006
1034
|
}
|
1007
1035
|
}
|
1008
1036
|
|
@@ -1019,13 +1047,30 @@
|
|
1019
1047
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &updateAllForRowidStatement, NULL);
|
1020
1048
|
if (status != SQLITE_OK)
|
1021
1049
|
{
|
1022
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1050
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1023
1051
|
}
|
1024
1052
|
}
|
1025
1053
|
|
1026
1054
|
return updateAllForRowidStatement;
|
1027
1055
|
}
|
1028
1056
|
|
1057
|
+
- (sqlite3_stmt *)updateObjectForRowidStatement
|
1058
|
+
{
|
1059
|
+
if (updateObjectForRowidStatement == NULL)
|
1060
|
+
{
|
1061
|
+
char *stmt = "UPDATE \"database2\" SET \"data\" = ? WHERE \"rowid\" = ?;";
|
1062
|
+
int stmtLen = (int)strlen(stmt);
|
1063
|
+
|
1064
|
+
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &updateObjectForRowidStatement, NULL);
|
1065
|
+
if (status != SQLITE_OK)
|
1066
|
+
{
|
1067
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1068
|
+
}
|
1069
|
+
}
|
1070
|
+
|
1071
|
+
return updateObjectForRowidStatement;
|
1072
|
+
}
|
1073
|
+
|
1029
1074
|
- (sqlite3_stmt *)updateMetadataForRowidStatement
|
1030
1075
|
{
|
1031
1076
|
if (updateMetadataForRowidStatement == NULL)
|
@@ -1036,7 +1081,7 @@
|
|
1036
1081
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &updateMetadataForRowidStatement, NULL);
|
1037
1082
|
if (status != SQLITE_OK)
|
1038
1083
|
{
|
1039
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1084
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1040
1085
|
}
|
1041
1086
|
}
|
1042
1087
|
|
@@ -1053,7 +1098,7 @@
|
|
1053
1098
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &removeForRowidStatement, NULL);
|
1054
1099
|
if (status != SQLITE_OK)
|
1055
1100
|
{
|
1056
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1101
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1057
1102
|
}
|
1058
1103
|
}
|
1059
1104
|
|
@@ -1070,7 +1115,7 @@
|
|
1070
1115
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &removeCollectionStatement, NULL);
|
1071
1116
|
if (status != SQLITE_OK)
|
1072
1117
|
{
|
1073
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1118
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1074
1119
|
}
|
1075
1120
|
}
|
1076
1121
|
|
@@ -1087,7 +1132,7 @@
|
|
1087
1132
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &removeAllStatement, NULL);
|
1088
1133
|
if (status != SQLITE_OK)
|
1089
1134
|
{
|
1090
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1135
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1091
1136
|
}
|
1092
1137
|
}
|
1093
1138
|
|
@@ -1104,7 +1149,7 @@
|
|
1104
1149
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateCollectionsStatement, NULL);
|
1105
1150
|
if (status != SQLITE_OK)
|
1106
1151
|
{
|
1107
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1152
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1108
1153
|
}
|
1109
1154
|
}
|
1110
1155
|
|
@@ -1121,7 +1166,7 @@
|
|
1121
1166
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateCollectionsForKeyStatement, NULL);
|
1122
1167
|
if (status != SQLITE_OK)
|
1123
1168
|
{
|
1124
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1169
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1125
1170
|
}
|
1126
1171
|
}
|
1127
1172
|
|
@@ -1138,7 +1183,7 @@
|
|
1138
1183
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateKeysInCollectionStatement, NULL);
|
1139
1184
|
if (status != SQLITE_OK)
|
1140
1185
|
{
|
1141
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1186
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1142
1187
|
}
|
1143
1188
|
}
|
1144
1189
|
|
@@ -1155,7 +1200,7 @@
|
|
1155
1200
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateKeysInAllCollectionsStatement, NULL);
|
1156
1201
|
if (status != SQLITE_OK)
|
1157
1202
|
{
|
1158
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1203
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1159
1204
|
}
|
1160
1205
|
}
|
1161
1206
|
|
@@ -1172,7 +1217,7 @@
|
|
1172
1217
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateKeysAndMetadataInCollectionStatement, NULL);
|
1173
1218
|
if (status != SQLITE_OK)
|
1174
1219
|
{
|
1175
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1220
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1176
1221
|
}
|
1177
1222
|
}
|
1178
1223
|
|
@@ -1190,7 +1235,7 @@
|
|
1190
1235
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateKeysAndMetadataInAllCollectionsStatement, NULL);
|
1191
1236
|
if (status != SQLITE_OK)
|
1192
1237
|
{
|
1193
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1238
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1194
1239
|
}
|
1195
1240
|
}
|
1196
1241
|
|
@@ -1207,7 +1252,7 @@
|
|
1207
1252
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateKeysAndObjectsInCollectionStatement, NULL);
|
1208
1253
|
if (status != SQLITE_OK)
|
1209
1254
|
{
|
1210
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1255
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1211
1256
|
}
|
1212
1257
|
}
|
1213
1258
|
|
@@ -1225,7 +1270,7 @@
|
|
1225
1270
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateKeysAndObjectsInAllCollectionsStatement, NULL);
|
1226
1271
|
if (status != SQLITE_OK)
|
1227
1272
|
{
|
1228
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1273
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1229
1274
|
}
|
1230
1275
|
}
|
1231
1276
|
|
@@ -1242,7 +1287,7 @@
|
|
1242
1287
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateRowsInCollectionStatement, NULL);
|
1243
1288
|
if (status != SQLITE_OK)
|
1244
1289
|
{
|
1245
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1290
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1246
1291
|
}
|
1247
1292
|
}
|
1248
1293
|
|
@@ -1261,7 +1306,7 @@
|
|
1261
1306
|
int status = sqlite3_prepare_v2(db, stmt, stmtLen+1, &enumerateRowsInAllCollectionsStatement, NULL);
|
1262
1307
|
if (status != SQLITE_OK)
|
1263
1308
|
{
|
1264
|
-
YDBLogError(@"Error creating '%@': %d %s",
|
1309
|
+
YDBLogError(@"Error creating '%@': %d %s", THIS_METHOD, status, sqlite3_errmsg(db));
|
1265
1310
|
}
|
1266
1311
|
}
|
1267
1312
|
|
@@ -1876,13 +1921,19 @@
|
|
1876
1921
|
|
1877
1922
|
if (objectChanges == nil)
|
1878
1923
|
objectChanges = [[NSMutableDictionary alloc] init];
|
1924
|
+
|
1879
1925
|
if (metadataChanges == nil)
|
1880
1926
|
metadataChanges = [[NSMutableDictionary alloc] init];
|
1927
|
+
|
1881
1928
|
if (removedKeys == nil)
|
1882
1929
|
removedKeys = [[NSMutableSet alloc] init];
|
1930
|
+
|
1883
1931
|
if (removedCollections == nil)
|
1884
1932
|
removedCollections = [[NSMutableSet alloc] init];
|
1885
1933
|
|
1934
|
+
if (removedRowids == nil)
|
1935
|
+
removedRowids = [[NSMutableSet alloc] init];
|
1936
|
+
|
1886
1937
|
allKeysRemoved = NO;
|
1887
1938
|
|
1888
1939
|
// Pre-Write-Transaction: Step 5 of 5
|
@@ -2010,35 +2061,7 @@
|
|
2010
2061
|
{
|
2011
2062
|
if ([registeredExtensions objectForKey:prevExtensionName] == nil)
|
2012
2063
|
{
|
2013
|
-
|
2014
|
-
Class class = NSClassFromString(className);
|
2015
|
-
|
2016
|
-
if (className == nil)
|
2017
|
-
{
|
2018
|
-
YDBLogWarn(@"Unable to auto-unregister extension(%@). Doesn't appear to be registered.",
|
2019
|
-
prevExtensionName);
|
2020
|
-
}
|
2021
|
-
else if (class == NULL)
|
2022
|
-
{
|
2023
|
-
YDBLogError(@"Unable to auto-unregister extension(%@) with unknown class(%@)",
|
2024
|
-
prevExtensionName, className);
|
2025
|
-
}
|
2026
|
-
if (![class isSubclassOfClass:[YapDatabaseExtension class]])
|
2027
|
-
{
|
2028
|
-
YDBLogError(@"Unable to auto-unregister extension(%@) with improper class(%@)",
|
2029
|
-
prevExtensionName, className);
|
2030
|
-
}
|
2031
|
-
else
|
2032
|
-
{
|
2033
|
-
YDBLogInfo(@"Auto-unregistering extension(%@) with class(%@)",
|
2034
|
-
prevExtensionName, className);
|
2035
|
-
|
2036
|
-
// Drop tables
|
2037
|
-
[class dropTablesForRegisteredName:prevExtensionName withTransaction:transaction];
|
2038
|
-
|
2039
|
-
// Drop preferences (rows in yap2 table)
|
2040
|
-
[transaction removeAllValuesForExtension:prevExtensionName];
|
2041
|
-
}
|
2064
|
+
[self _unregisterExtension:prevExtensionName withTransaction:transaction];
|
2042
2065
|
}
|
2043
2066
|
}
|
2044
2067
|
|
@@ -2224,13 +2247,19 @@
|
|
2224
2247
|
|
2225
2248
|
if ([objectChanges count] > 0)
|
2226
2249
|
objectChanges = nil;
|
2250
|
+
|
2227
2251
|
if ([metadataChanges count] > 0)
|
2228
2252
|
metadataChanges = nil;
|
2253
|
+
|
2229
2254
|
if ([removedKeys count] > 0)
|
2230
2255
|
removedKeys = nil;
|
2256
|
+
|
2231
2257
|
if ([removedCollections count] > 0)
|
2232
2258
|
removedCollections = nil;
|
2233
2259
|
|
2260
|
+
if ([removedRowids count] > 0)
|
2261
|
+
removedRowids = nil;
|
2262
|
+
|
2234
2263
|
// Post-Write-Transaction: Step 11 of 11
|
2235
2264
|
//
|
2236
2265
|
// Drop IsOnConnectionQueueKey flag from writeQueue since we're exiting writeQueue.
|
@@ -2386,12 +2415,18 @@
|
|
2386
2415
|
|
2387
2416
|
if ([objectChanges count] > 0)
|
2388
2417
|
objectChanges = nil;
|
2418
|
+
|
2389
2419
|
if ([metadataChanges count] > 0)
|
2390
2420
|
metadataChanges = nil;
|
2421
|
+
|
2391
2422
|
if ([removedKeys count] > 0)
|
2392
2423
|
removedKeys = nil;
|
2424
|
+
|
2393
2425
|
if ([removedCollections count] > 0)
|
2394
2426
|
removedCollections = nil;
|
2427
|
+
|
2428
|
+
if ([removedRowids count] > 0)
|
2429
|
+
removedRowids = nil;
|
2395
2430
|
}
|
2396
2431
|
|
2397
2432
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
@@ -2541,11 +2576,13 @@
|
|
2541
2576
|
YapDatabaseRegisteredExtensionsKey,
|
2542
2577
|
YapDatabaseRegisteredTablesKey,
|
2543
2578
|
YapDatabaseExtensionsOrderKey,
|
2579
|
+
YapDatabaseExtensionDependenciesKey,
|
2544
2580
|
YapDatabaseNotificationKey,
|
2545
2581
|
YapDatabaseObjectChangesKey,
|
2546
2582
|
YapDatabaseMetadataChangesKey,
|
2547
2583
|
YapDatabaseRemovedKeysKey,
|
2548
2584
|
YapDatabaseRemovedCollectionsKey,
|
2585
|
+
YapDatabaseRemovedRowidsKey,
|
2549
2586
|
YapDatabaseAllKeysRemovedKey ];
|
2550
2587
|
}
|
2551
2588
|
|
@@ -2644,6 +2681,7 @@
|
|
2644
2681
|
|
2645
2682
|
[internalChangeset setObject:registeredExtensions forKey:YapDatabaseRegisteredExtensionsKey];
|
2646
2683
|
[internalChangeset setObject:extensionsOrder forKey:YapDatabaseExtensionsOrderKey];
|
2684
|
+
[internalChangeset setObject:extensionDependencies forKey:YapDatabaseExtensionDependenciesKey];
|
2647
2685
|
}
|
2648
2686
|
|
2649
2687
|
if (registeredTablesChanged)
|
@@ -2662,7 +2700,8 @@
|
|
2662
2700
|
if ([objectChanges count] > 0 ||
|
2663
2701
|
[metadataChanges count] > 0 ||
|
2664
2702
|
[removedKeys count] > 0 ||
|
2665
|
-
[removedCollections count] > 0 ||
|
2703
|
+
[removedCollections count] > 0 ||
|
2704
|
+
[removedRowids count] > 0 || allKeysRemoved)
|
2666
2705
|
{
|
2667
2706
|
if (internalChangeset == nil)
|
2668
2707
|
internalChangeset = [NSMutableDictionary dictionaryWithSharedKeySet:sharedKeySetForInternalChangeset];
|
@@ -2703,6 +2742,11 @@
|
|
2703
2742
|
forKey:YapDatabaseRemovedCollectionsKey];
|
2704
2743
|
}
|
2705
2744
|
|
2745
|
+
if ([removedRowids count] > 0)
|
2746
|
+
{
|
2747
|
+
[internalChangeset setObject:removedRowids forKey:YapDatabaseRemovedRowidsKey];
|
2748
|
+
}
|
2749
|
+
|
2706
2750
|
if (allKeysRemoved)
|
2707
2751
|
{
|
2708
2752
|
[internalChangeset setObject:@(YES) forKey:YapDatabaseAllKeysRemovedKey];
|
@@ -2731,6 +2775,7 @@
|
|
2731
2775
|
|
2732
2776
|
registeredExtensions = changeset_registeredExtensions;
|
2733
2777
|
extensionsOrder = [changeset objectForKey:YapDatabaseExtensionsOrderKey];
|
2778
|
+
extensionDependencies = [changeset objectForKey:YapDatabaseExtensionDependenciesKey];
|
2734
2779
|
|
2735
2780
|
// Remove any extensions that have been dropped
|
2736
2781
|
|
@@ -2784,8 +2829,9 @@
|
|
2784
2829
|
NSDictionary *changeset_objectChanges = [changeset objectForKey:YapDatabaseObjectChangesKey];
|
2785
2830
|
NSDictionary *changeset_metadataChanges = [changeset objectForKey:YapDatabaseMetadataChangesKey];
|
2786
2831
|
|
2787
|
-
NSSet *
|
2788
|
-
NSSet *
|
2832
|
+
NSSet *changeset_removedRowids = [changeset objectForKey:YapDatabaseRemovedRowidsKey];
|
2833
|
+
NSSet *changeset_removedKeys = [changeset objectForKey:YapDatabaseRemovedKeysKey];
|
2834
|
+
NSSet *changeset_removedCollections = [changeset objectForKey:YapDatabaseRemovedCollectionsKey];
|
2789
2835
|
|
2790
2836
|
BOOL changeset_allKeysRemoved = [[changeset objectForKey:YapDatabaseAllKeysRemovedKey] boolValue];
|
2791
2837
|
|
@@ -2794,6 +2840,45 @@
|
|
2794
2840
|
BOOL hasRemovedKeys = [changeset_removedKeys count] > 0;
|
2795
2841
|
BOOL hasRemovedCollections = [changeset_removedCollections count] > 0;
|
2796
2842
|
|
2843
|
+
// Update keyCache
|
2844
|
+
|
2845
|
+
if (changeset_allKeysRemoved)
|
2846
|
+
{
|
2847
|
+
// Shortcut: Everything was removed from the database
|
2848
|
+
|
2849
|
+
[keyCache removeAllObjects];
|
2850
|
+
}
|
2851
|
+
else
|
2852
|
+
{
|
2853
|
+
if (hasRemovedCollections)
|
2854
|
+
{
|
2855
|
+
__block NSMutableArray *toRemove = nil;
|
2856
|
+
[keyCache enumerateKeysAndObjectsWithBlock:^(id key, id obj, BOOL *stop) {
|
2857
|
+
|
2858
|
+
__unsafe_unretained NSNumber *rowidNumber = (NSNumber *)key;
|
2859
|
+
__unsafe_unretained YapCollectionKey *collectionKey = (YapCollectionKey *)obj;
|
2860
|
+
|
2861
|
+
if ([changeset_removedCollections containsObject:collectionKey.collection])
|
2862
|
+
{
|
2863
|
+
if (toRemove == nil)
|
2864
|
+
toRemove = [NSMutableArray array];
|
2865
|
+
|
2866
|
+
[toRemove addObject:rowidNumber];
|
2867
|
+
}
|
2868
|
+
}];
|
2869
|
+
|
2870
|
+
[keyCache removeObjectsForKeys:toRemove];
|
2871
|
+
}
|
2872
|
+
|
2873
|
+
if (changeset_removedRowids)
|
2874
|
+
{
|
2875
|
+
[changeset_removedRowids enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
|
2876
|
+
|
2877
|
+
[keyCache removeObjectForKey:obj];
|
2878
|
+
}];
|
2879
|
+
}
|
2880
|
+
}
|
2881
|
+
|
2797
2882
|
// Update objectCache
|
2798
2883
|
|
2799
2884
|
if (changeset_allKeysRemoved && !hasObjectChanges)
|
@@ -3203,6 +3288,7 @@
|
|
3203
3288
|
includingObjectChanges:(BOOL)includeObjectChanges
|
3204
3289
|
metadataChanges:(BOOL)includeMetadataChanges
|
3205
3290
|
{
|
3291
|
+
if (key == nil) return NO;
|
3206
3292
|
if (collection == nil)
|
3207
3293
|
collection = @"";
|
3208
3294
|
|
@@ -3490,6 +3576,10 @@
|
|
3490
3576
|
YapDatabaseReadWriteTransaction *transaction = [self newReadWriteTransaction];
|
3491
3577
|
[self preReadWriteTransaction:transaction];
|
3492
3578
|
|
3579
|
+
// Set the registeredName now.
|
3580
|
+
// The extension will need this in order to perform the registration tasks such as creating tables, etc.
|
3581
|
+
extension.registeredName = extensionName;
|
3582
|
+
|
3493
3583
|
YapDatabaseExtensionConnection *extensionConnection;
|
3494
3584
|
YapDatabaseExtensionTransaction *extensionTransaction;
|
3495
3585
|
|
@@ -3514,6 +3604,9 @@
|
|
3514
3604
|
}
|
3515
3605
|
else
|
3516
3606
|
{
|
3607
|
+
// Registration failed.
|
3608
|
+
|
3609
|
+
extension.registeredName = nil;
|
3517
3610
|
[transaction rollback];
|
3518
3611
|
}
|
3519
3612
|
|
@@ -3533,40 +3626,103 @@
|
|
3533
3626
|
YapDatabaseReadWriteTransaction *transaction = [self newReadWriteTransaction];
|
3534
3627
|
[self preReadWriteTransaction:transaction];
|
3535
3628
|
|
3536
|
-
|
3537
|
-
Class class = NSClassFromString(className);
|
3629
|
+
// Unregister the given extension
|
3538
3630
|
|
3539
|
-
|
3540
|
-
|
3541
|
-
|
3542
|
-
|
3543
|
-
|
3544
|
-
|
3545
|
-
|
3546
|
-
|
3547
|
-
|
3548
|
-
|
3549
|
-
|
3550
|
-
}
|
3551
|
-
else
|
3631
|
+
YapDatabaseExtension *extension = [registeredExtensions objectForKey:extensionName];
|
3632
|
+
|
3633
|
+
[self _unregisterExtension:extensionName withTransaction:transaction];
|
3634
|
+
extension.registeredName = nil;
|
3635
|
+
|
3636
|
+
// Automatically unregister any extensions that were dependent upon this one.
|
3637
|
+
|
3638
|
+
NSMutableArray *extensionNameStack = [NSMutableArray arrayWithCapacity:1];
|
3639
|
+
[extensionNameStack addObject:extensionName];
|
3640
|
+
|
3641
|
+
do
|
3552
3642
|
{
|
3553
|
-
|
3554
|
-
[class dropTablesForRegisteredName:extensionName withTransaction:transaction];
|
3643
|
+
NSString *currentExtensionName = [extensionNameStack lastObject];
|
3555
3644
|
|
3556
|
-
|
3557
|
-
[
|
3645
|
+
__block NSString *dependentExtName = nil;
|
3646
|
+
[extensionDependencies enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
|
3647
|
+
|
3648
|
+
// __unsafe_unretained NSString *extName = (NSString *)key;
|
3649
|
+
__unsafe_unretained NSSet *extDependencies = (NSSet *)obj;
|
3650
|
+
|
3651
|
+
if ([extDependencies containsObject:currentExtensionName])
|
3652
|
+
{
|
3653
|
+
dependentExtName = (NSString *)key;
|
3654
|
+
*stop = YES;
|
3655
|
+
}
|
3656
|
+
}];
|
3558
3657
|
|
3559
|
-
|
3658
|
+
if (dependentExtName)
|
3659
|
+
{
|
3660
|
+
// We found an extension that was dependent upon the one we just unregistered.
|
3661
|
+
// So we need to unregister it too.
|
3662
|
+
|
3663
|
+
YapDatabaseExtension *dependentExt = [registeredExtensions objectForKey:dependentExtName];
|
3664
|
+
|
3665
|
+
[self _unregisterExtension:dependentExtName withTransaction:transaction];
|
3666
|
+
dependentExt.registeredName = nil;
|
3667
|
+
|
3668
|
+
// And now we need to check and see if there were any extensions dependent upon this new one.
|
3669
|
+
// So we add it to the top of the stack, and continue our search.
|
3670
|
+
|
3671
|
+
[extensionNameStack addObject:dependentExtName];
|
3672
|
+
}
|
3673
|
+
else
|
3674
|
+
{
|
3675
|
+
[extensionNameStack removeLastObject];
|
3676
|
+
}
|
3560
3677
|
|
3561
|
-
|
3562
|
-
|
3563
|
-
}
|
3678
|
+
} while ([extensionNameStack count] > 0);
|
3679
|
+
|
3564
3680
|
|
3681
|
+
// Complete the transaction
|
3565
3682
|
[self postReadWriteTransaction:transaction];
|
3683
|
+
|
3684
|
+
// And reset the registeredExtensionsChanged ivar.
|
3685
|
+
// The above method already processed it, and included the appropriate information in the changeset.
|
3566
3686
|
registeredExtensionsChanged = NO;
|
3567
3687
|
}});
|
3568
3688
|
}
|
3569
3689
|
|
3690
|
+
- (void)_unregisterExtension:(NSString *)extensionName withTransaction:(YapDatabaseReadWriteTransaction *)transaction
|
3691
|
+
{
|
3692
|
+
NSString *className = [transaction stringValueForKey:@"class" extension:extensionName];
|
3693
|
+
Class class = NSClassFromString(className);
|
3694
|
+
|
3695
|
+
if (className == nil)
|
3696
|
+
{
|
3697
|
+
YDBLogWarn(@"Unable to unregister extension(%@). Doesn't appear to be registered.", extensionName);
|
3698
|
+
}
|
3699
|
+
else if (class == NULL)
|
3700
|
+
{
|
3701
|
+
YDBLogError(@"Unable to unregister extension(%@) with unknown class(%@)", extensionName, className);
|
3702
|
+
}
|
3703
|
+
if (![class isSubclassOfClass:[YapDatabaseExtension class]])
|
3704
|
+
{
|
3705
|
+
YDBLogError(@"Unable to unregister extension(%@) with improper class(%@)", extensionName, className);
|
3706
|
+
}
|
3707
|
+
else
|
3708
|
+
{
|
3709
|
+
// Drop tables
|
3710
|
+
[class dropTablesForRegisteredName:extensionName withTransaction:transaction];
|
3711
|
+
|
3712
|
+
// Drop preferences (rows in yap2 table)
|
3713
|
+
[transaction removeAllValuesForExtension:extensionName];
|
3714
|
+
|
3715
|
+
// Remove from registeredExtensions, extensionsOrder & extensionDependencies (if needed)
|
3716
|
+
[self didUnregisterExtension:extensionName];
|
3717
|
+
|
3718
|
+
// Remove YapDatabaseExtensionConnection subclass instance (if needed)
|
3719
|
+
[self removeRegisteredExtensionConnection:extensionName];
|
3720
|
+
|
3721
|
+
// Remove YapDatabaseExtensionTransaction subclass instance (if needed)
|
3722
|
+
[transaction removeRegisteredExtensionTransaction:extensionName];
|
3723
|
+
}
|
3724
|
+
}
|
3725
|
+
|
3570
3726
|
- (void)willRegisterExtension:(YapDatabaseExtension *)extension
|
3571
3727
|
withTransaction:(YapDatabaseReadWriteTransaction *)transaction
|
3572
3728
|
needsClassValue:(BOOL *)needsClassValuePtr
|
@@ -3657,13 +3813,19 @@
|
|
3657
3813
|
NSMutableDictionary *newRegisteredExtensions = [registeredExtensions mutableCopy];
|
3658
3814
|
[newRegisteredExtensions setObject:extension forKey:extensionName];
|
3659
3815
|
|
3660
|
-
NSMutableArray *newExtensionsOrder = [extensionsOrder mutableCopy];
|
3661
|
-
[newExtensionsOrder addObject:extensionName];
|
3662
|
-
|
3663
3816
|
registeredExtensions = [newRegisteredExtensions copy];
|
3664
|
-
extensionsOrder = [
|
3665
|
-
|
3817
|
+
extensionsOrder = [extensionsOrder arrayByAddingObject:extensionName];
|
3818
|
+
|
3819
|
+
NSSet *dependencies = [extension dependencies];
|
3820
|
+
if (dependencies == nil)
|
3821
|
+
dependencies = [NSSet set];
|
3822
|
+
|
3823
|
+
NSMutableDictionary *newExtensionDependencies = [extensionDependencies mutableCopy];
|
3824
|
+
[newExtensionDependencies setObject:dependencies forKey:extensionName];
|
3825
|
+
|
3826
|
+
extensionDependencies = [newExtensionDependencies copy];
|
3666
3827
|
|
3828
|
+
extensionsReady = NO;
|
3667
3829
|
sharedKeySetForExtensions = [NSDictionary sharedKeySetForKeys:[registeredExtensions allKeys]];
|
3668
3830
|
|
3669
3831
|
// Set the registeredExtensionsChanged flag.
|
@@ -3684,8 +3846,18 @@
|
|
3684
3846
|
[newRegisteredExtensions removeObjectForKey:extensionName];
|
3685
3847
|
|
3686
3848
|
registeredExtensions = [newRegisteredExtensions copy];
|
3687
|
-
extensionsReady = NO;
|
3688
3849
|
|
3850
|
+
NSMutableArray *newExtensionsOrder = [extensionsOrder mutableCopy];
|
3851
|
+
[newExtensionsOrder removeObject:extensionName];
|
3852
|
+
|
3853
|
+
extensionsOrder = [newExtensionsOrder copy];
|
3854
|
+
|
3855
|
+
NSMutableDictionary *newExtensionDependencies = [extensionDependencies mutableCopy];
|
3856
|
+
[newExtensionDependencies removeObjectForKey:extensionName];
|
3857
|
+
|
3858
|
+
extensionDependencies = [newExtensionDependencies copy];
|
3859
|
+
|
3860
|
+
extensionsReady = NO;
|
3689
3861
|
sharedKeySetForExtensions = [NSDictionary sharedKeySetForKeys:[registeredExtensions allKeys]];
|
3690
3862
|
|
3691
3863
|
// Set the registeredExtensionsChanged flag.
|