diff --git a/Cores/DeltaCore b/Cores/DeltaCore index 6e0ec5a..4854926 160000 --- a/Cores/DeltaCore +++ b/Cores/DeltaCore @@ -1 +1 @@ -Subproject commit 6e0ec5aedac746d1a5ea05d450884f1a9ad7b509 +Subproject commit 4854926b2a21fe0c6e652dc1ccb4e7abdef3dcb6 diff --git a/Cores/GBADeltaCore b/Cores/GBADeltaCore index 56401b9..7babfcf 160000 --- a/Cores/GBADeltaCore +++ b/Cores/GBADeltaCore @@ -1 +1 @@ -Subproject commit 56401b9649f8abe971e3a66be1a3bb2cd984a1a0 +Subproject commit 7babfcf93a32916ad06989c9a63681acf7f07d50 diff --git a/Cores/GBCDeltaCore b/Cores/GBCDeltaCore index 4e678e7..9d71425 160000 --- a/Cores/GBCDeltaCore +++ b/Cores/GBCDeltaCore @@ -1 +1 @@ -Subproject commit 4e678e7eac511d342aab86522eede9fdb7b29108 +Subproject commit 9d714254ace7bd5d63805d434f4ccd1f2a947951 diff --git a/Cores/SNESDeltaCore b/Cores/SNESDeltaCore index 3946277..a354c37 160000 --- a/Cores/SNESDeltaCore +++ b/Cores/SNESDeltaCore @@ -1 +1 @@ -Subproject commit 394627784bd0643c26e0fc95feafa5c960786a7c +Subproject commit a354c3700fc4576bbefb6a8324bcd7a121d9b934 diff --git a/Delta.xcodeproj/project.pbxproj b/Delta.xcodeproj/project.pbxproj index 83a47dc..e5af8dc 100644 --- a/Delta.xcodeproj/project.pbxproj +++ b/Delta.xcodeproj/project.pbxproj @@ -709,7 +709,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0820; + LastUpgradeCheck = 0910; ORGANIZATIONNAME = "Riley Testut"; TargetAttributes = { BF14D8941DE7A512002CA1BE = { @@ -720,7 +720,7 @@ BFFA71D61AAC406100EE9DD1 = { CreatedOnToolsVersion = 6.3; DevelopmentTeam = 6XVY5G3U44; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.iCloud = { @@ -996,14 +996,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 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_OBJC_ROOT_CLASS = YES_ERROR; + 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; @@ -1046,14 +1052,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; 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_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 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_OBJC_ROOT_CLASS = YES_ERROR; + 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; @@ -1098,7 +1110,8 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Delta/Supporting Files/Delta-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -1119,7 +1132,8 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Delta/Supporting Files/Delta-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Off; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/Delta.xcodeproj/xcshareddata/xcschemes/Delta.xcscheme b/Delta.xcodeproj/xcshareddata/xcschemes/Delta.xcscheme index a5d9b5a..e367740 100644 --- a/Delta.xcodeproj/xcshareddata/xcschemes/Delta.xcscheme +++ b/Delta.xcodeproj/xcshareddata/xcschemes/Delta.xcscheme @@ -1,6 +1,6 @@ @@ -115,6 +116,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Delta/AppDelegate.swift b/Delta/AppDelegate.swift index 99c9a35..ac4ce6a 100644 --- a/Delta/AppDelegate.swift +++ b/Delta/AppDelegate.swift @@ -79,7 +79,7 @@ extension AppDelegate { self.window?.tintColor = UIColor.deltaPurple - UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes[NSForegroundColorAttributeName] = UIColor.white + UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes[NSAttributedStringKey.foregroundColor.rawValue] = UIColor.white } } @@ -90,7 +90,7 @@ extension AppDelegate return self.openURL(url) } - @discardableResult fileprivate func openURL(_ url: URL) -> Bool + @discardableResult private func openURL(_ url: URL) -> Bool { guard url.isFileURL else { return false } diff --git a/Delta/Components/Collection View/GridCollectionViewCell.swift b/Delta/Components/Collection View/GridCollectionViewCell.swift index df6638b..f88bc2b 100644 --- a/Delta/Components/Collection View/GridCollectionViewCell.swift +++ b/Delta/Components/Collection View/GridCollectionViewCell.swift @@ -45,15 +45,15 @@ class GridCollectionViewCell: UICollectionViewCell } } - fileprivate var vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: UIBlurEffect(style: .dark))) + private var vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: UIBlurEffect(style: .dark))) - fileprivate var imageViewWidthConstraint: NSLayoutConstraint! - fileprivate var imageViewHeightConstraint: NSLayoutConstraint! + private var imageViewWidthConstraint: NSLayoutConstraint! + private var imageViewHeightConstraint: NSLayoutConstraint! - fileprivate var textLabelBottomAnchorConstraint: NSLayoutConstraint! + private var textLabelBottomAnchorConstraint: NSLayoutConstraint! - fileprivate var textLabelVerticalSpacingConstraint: NSLayoutConstraint! - fileprivate var textLabelFocusedVerticalSpacingConstraint: NSLayoutConstraint? + private var textLabelVerticalSpacingConstraint: NSLayoutConstraint! + private var textLabelFocusedVerticalSpacingConstraint: NSLayoutConstraint? override init(frame: CGRect) { diff --git a/Delta/Components/Popover Menu/ListMenuViewController.swift b/Delta/Components/Popover Menu/ListMenuViewController.swift index 88bd43f..6129d47 100644 --- a/Delta/Components/Popover Menu/ListMenuViewController.swift +++ b/Delta/Components/Popover Menu/ListMenuViewController.swift @@ -17,7 +17,7 @@ class ListMenuViewController: UITableViewController set { self.dataSource.items = newValue } } - fileprivate let dataSource = RSTArrayTableViewDataSource(items: []) + private let dataSource = RSTArrayTableViewDataSource(items: []) override var preferredContentSize: CGSize { get { diff --git a/Delta/Components/Popover Menu/PopoverMenuButton.swift b/Delta/Components/Popover Menu/PopoverMenuButton.swift index f5bd940..e242765 100644 --- a/Delta/Components/Popover Menu/PopoverMenuButton.swift +++ b/Delta/Components/Popover Menu/PopoverMenuButton.swift @@ -10,7 +10,7 @@ import UIKit extension UINavigationBar { - fileprivate var defaultTitleTextAttributes: [String: Any]? { + fileprivate var defaultTitleTextAttributes: [NSAttributedStringKey: Any]? { if let textAttributes = self._defaultTitleTextAttributes { return textAttributes @@ -35,7 +35,7 @@ extension UINavigationBar return textAttributes } - fileprivate var _defaultTitleTextAttributes: [String: Any]? { + private var _defaultTitleTextAttributes: [NSAttributedStringKey: Any]? { guard self.titleTextAttributes == nil else { return self.titleTextAttributes } guard @@ -59,11 +59,11 @@ class PopoverMenuButton: UIControl } } - fileprivate let textLabel: UILabel - fileprivate let arrowLabel: UILabel - fileprivate let stackView: UIStackView + private let textLabel: UILabel + private let arrowLabel: UILabel + private let stackView: UIStackView - fileprivate var parentNavigationBar: UINavigationBar? { + private var parentNavigationBar: UINavigationBar? { guard let navigationController = self.parentViewController as? UINavigationController ?? self.parentViewController?.navigationController else { return nil } guard self.isDescendant(of: navigationController.navigationBar) else { return nil } diff --git a/Delta/Database/DatabaseManager.swift b/Delta/Database/DatabaseManager.swift index d4b4d98..d5aa731 100644 --- a/Delta/Database/DatabaseManager.swift +++ b/Delta/Database/DatabaseManager.swift @@ -60,7 +60,7 @@ final class DatabaseManager: NSPersistentContainer { static let shared = DatabaseManager() - fileprivate var gamesDatabase: GamesDatabase? = nil + private var gamesDatabase: GamesDatabase? = nil private init() { @@ -97,7 +97,7 @@ extension DatabaseManager //MARK: - Preparation - private extension DatabaseManager { - func prepareDatabase(completion: @escaping (Void) -> Void) + func prepareDatabase(completion: @escaping () -> Void) { self.performBackgroundTask { (context) in diff --git a/Delta/Database/InputStreamOutputWriter.swift b/Delta/Database/InputStreamOutputWriter.swift index 76e4cb3..5ed98d8 100644 --- a/Delta/Database/InputStreamOutputWriter.swift +++ b/Delta/Database/InputStreamOutputWriter.swift @@ -15,9 +15,9 @@ class InputStreamOutputWriter: NSObject let inputStream: InputStream let outputStream: OutputStream - fileprivate var completion: ((Error?) -> Void)? + private var completion: ((Error?) -> Void)? - fileprivate var dataBuffer = Data(capacity: MaximumBufferLength * 2) + private var dataBuffer = Data(capacity: MaximumBufferLength * 2) init(inputStream: InputStream, outputStream: OutputStream) { diff --git a/Delta/Database/Model/Human/ControllerSkin.swift b/Delta/Database/Model/Human/ControllerSkin.swift index 7b73368..bfbc6fe 100644 --- a/Delta/Database/Model/Human/ControllerSkin.swift +++ b/Delta/Database/Model/Human/ControllerSkin.swift @@ -61,7 +61,7 @@ public class ControllerSkin: _ControllerSkin return self.controllerSkin?.isDebugModeEnabled ?? false } - fileprivate lazy var controllerSkin: DeltaCore.ControllerSkin? = { + private lazy var controllerSkin: DeltaCore.ControllerSkin? = { let controllerSkin = self.isStandard ? DeltaCore.ControllerSkin.standardControllerSkin(for: self.gameType) : DeltaCore.ControllerSkin(fileURL: self.fileURL) return controllerSkin }() diff --git a/Delta/Database/Model/Human/GameControllerInputMapping.swift b/Delta/Database/Model/Human/GameControllerInputMapping.swift index 3a44b4e..0a71b27 100644 --- a/Delta/Database/Model/Human/GameControllerInputMapping.swift +++ b/Delta/Database/Model/Human/GameControllerInputMapping.swift @@ -13,7 +13,7 @@ import DeltaCore @objc(GameControllerInputMapping) public class GameControllerInputMapping: _GameControllerInputMapping { - fileprivate var inputMapping: DeltaCore.GameControllerInputMapping { + private var inputMapping: DeltaCore.GameControllerInputMapping { get { return self.deltaCoreInputMapping as! DeltaCore.GameControllerInputMapping } set { self.deltaCoreInputMapping = newValue } } diff --git a/Delta/Database/OpenVGDB/GamesDatabase.swift b/Delta/Database/OpenVGDB/GamesDatabase.swift index 43952e0..ef87290 100644 --- a/Delta/Database/OpenVGDB/GamesDatabase.swift +++ b/Delta/Database/OpenVGDB/GamesDatabase.swift @@ -68,7 +68,7 @@ class GamesDatabase { static let version = -1 - fileprivate let connection: Connection + private let connection: Connection init() throws { diff --git a/Delta/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift b/Delta/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift index c201e10..f4a0fe6 100644 --- a/Delta/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift +++ b/Delta/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift @@ -15,9 +15,9 @@ class GamesDatabaseBrowserViewController: UITableViewController { var selectionHandler: ((GameMetadata) -> Void)? - fileprivate let database: GamesDatabase? + private let database: GamesDatabase? - fileprivate let dataSource: RSTArrayTableViewPrefetchingDataSource + private let dataSource: RSTArrayTableViewPrefetchingDataSource override init(style: UITableViewStyle) { fatalError() diff --git a/Delta/Emulation/GameViewController.swift b/Delta/Emulation/GameViewController.swift index 1af9092..d8f1133 100644 --- a/Delta/Emulation/GameViewController.swift +++ b/Delta/Emulation/GameViewController.swift @@ -72,11 +72,11 @@ class GameViewController: DeltaCore.GameViewController } //MARK: - Private Properties - - fileprivate var pauseViewController: PauseViewController? - fileprivate var pausingGameController: GameController? + private var pauseViewController: PauseViewController? + private var pausingGameController: GameController? // Prevents the same save state from being saved multiple times - fileprivate var pausedSaveState: PausedSaveState? { + private var pausedSaveState: PausedSaveState? { didSet { if let saveState = oldValue, self.pausedSaveState == nil @@ -93,17 +93,17 @@ class GameViewController: DeltaCore.GameViewController } } - fileprivate var _isLoadingSaveState = false + private var _isLoadingSaveState = false - fileprivate var context = CIContext(options: [kCIContextWorkingColorSpace: NSNull()]) + private var context = CIContext(options: [kCIContextWorkingColorSpace: NSNull()]) // Sustain Buttons - fileprivate var isSelectingSustainedButtons = false - fileprivate var sustainInputsMapping: SustainInputsMapping? + private var isSelectingSustainedButtons = false + private var sustainInputsMapping: SustainInputsMapping? - fileprivate var sustainButtonsContentView: UIView! - fileprivate var sustainButtonsBlurView: UIVisualEffectView! - fileprivate var sustainButtonsBackgroundView: RSTPlaceholderView! + private var sustainButtonsContentView: UIView! + private var sustainButtonsBlurView: UIVisualEffectView! + private var sustainButtonsBackgroundView: RSTPlaceholderView! required init() { @@ -460,7 +460,7 @@ private extension GameViewController /// Save States extension GameViewController: SaveStatesViewControllerDelegate { - fileprivate func updateAutoSaveState() + private func updateAutoSaveState() { // Ensures game is non-nil and also a Game subclass guard let game = self.game as? Game else { return } @@ -513,7 +513,7 @@ extension GameViewController: SaveStatesViewControllerDelegate } } - fileprivate func update(_ saveState: SaveState, with replacementSaveState: SaveStateProtocol? = nil) + private func update(_ saveState: SaveState, with replacementSaveState: SaveStateProtocol? = nil) { let isRunning = (self.emulatorCore?.state == .running) @@ -567,7 +567,7 @@ extension GameViewController: SaveStatesViewControllerDelegate } } - fileprivate func load(_ saveState: SaveStateProtocol) + private func load(_ saveState: SaveStateProtocol) { let isRunning = (self.emulatorCore?.state == .running) diff --git a/Delta/Emulation/PreviewGameViewController.swift b/Delta/Emulation/PreviewGameViewController.swift index 52480fd..42833a4 100644 --- a/Delta/Emulation/PreviewGameViewController.swift +++ b/Delta/Emulation/PreviewGameViewController.swift @@ -27,7 +27,7 @@ class PreviewGameViewController: DeltaCore.GameViewController } } - fileprivate var emulatorCoreQueue = DispatchQueue(label: "com.rileytestut.Delta.PreviewGameViewController.emulatorCoreQueue", qos: .userInitiated) + private var emulatorCoreQueue = DispatchQueue(label: "com.rileytestut.Delta.PreviewGameViewController.emulatorCoreQueue", qos: .userInitiated) override var game: GameProtocol? { willSet { diff --git a/Delta/Extensions/UILabel+FontSize.swift b/Delta/Extensions/UILabel+FontSize.swift index b010932..39695a5 100644 --- a/Delta/Extensions/UILabel+FontSize.swift +++ b/Delta/Extensions/UILabel+FontSize.swift @@ -18,7 +18,7 @@ internal extension UILabel context.minimumScaleFactor = self.minimumScaleFactor // Using self.attributedString returns incorrect calculations, so we create our own attributed string - let attributedString = NSAttributedString(string: text, attributes: [NSFontAttributeName: self.font]) + let attributedString = NSAttributedString(string: text, attributes: [.font: self.font]) attributedString.boundingRect(with: self.bounds.size, options: [.usesLineFragmentOrigin, .usesFontLeading], context: context) let scaleFactor = context.actualScaleFactor diff --git a/Delta/Game Selection/GameCollectionViewController.swift b/Delta/Game Selection/GameCollectionViewController.swift index 830b770..b947f39 100644 --- a/Delta/Game Selection/GameCollectionViewController.swift +++ b/Delta/Game Selection/GameCollectionViewController.swift @@ -43,16 +43,16 @@ class GameCollectionViewController: UICollectionViewController weak var activeEmulatorCore: EmulatorCore? - fileprivate var activeSaveState: SaveStateProtocol? + private var activeSaveState: SaveStateProtocol? - fileprivate let dataSource: RSTFetchedResultsCollectionViewPrefetchingDataSource - fileprivate let prototypeCell = GridCollectionViewCell() + private let dataSource: RSTFetchedResultsCollectionViewPrefetchingDataSource + private let prototypeCell = GridCollectionViewCell() - fileprivate var _performing3DTouchTransition = false - fileprivate weak var _destination3DTouchTransitionViewController: UIViewController? + private var _performing3DTouchTransition = false + private weak var _destination3DTouchTransitionViewController: UIViewController? - fileprivate var _renameAction: UIAlertAction? - fileprivate var _changingArtworkGame: Game? + private var _renameAction: UIAlertAction? + private var _changingArtworkGame: Game? required init?(coder aDecoder: NSCoder) { @@ -340,7 +340,7 @@ private extension GameCollectionViewController func rename(_ game: Game, with name: String) { - guard name.characters.count > 0 else { return } + guard name.count > 0 else { return } DatabaseManager.shared.performBackgroundTask { (context) in let game = context.object(with: game.objectID) as! Game @@ -401,7 +401,7 @@ private extension GameCollectionViewController @objc func textFieldTextDidChange(_ textField: UITextField) { let text = textField.text ?? "" - self._renameAction?.isEnabled = text.characters.count > 0 + self._renameAction?.isEnabled = text.count > 0 } @objc func handleLongPressGesture(_ gestureRecognizer: UILongPressGestureRecognizer) diff --git a/Delta/Game Selection/GamesViewController.swift b/Delta/Game Selection/GamesViewController.swift index 7067982..260a271 100644 --- a/Delta/Game Selection/GamesViewController.swift +++ b/Delta/Game Selection/GamesViewController.swift @@ -35,11 +35,11 @@ class GamesViewController: UIViewController } } - fileprivate var pageViewController: UIPageViewController! - fileprivate var placeholderView: RSTPlaceholderView! - fileprivate var pageControl: UIPageControl! + private var pageViewController: UIPageViewController! + private var placeholderView: RSTPlaceholderView! + private var pageControl: UIPageControl! - fileprivate let fetchedResultsController: NSFetchedResultsController + private let fetchedResultsController: NSFetchedResultsController override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { fatalError("initWithNibName: not implemented") @@ -273,7 +273,7 @@ private extension GamesViewController /// Importing extension GamesViewController: ImportControllerDelegate { - @IBAction fileprivate func importFiles() + @IBAction private func importFiles() { var documentTypes = Set(System.supportedSystems.map { $0.gameType.rawValue }) documentTypes.insert(kUTTypeZipArchive as String) diff --git a/Delta/Game Selection/Segues/GamesStoryboardSegue.swift b/Delta/Game Selection/Segues/GamesStoryboardSegue.swift index 6ccd008..c4c74a1 100644 --- a/Delta/Game Selection/Segues/GamesStoryboardSegue.swift +++ b/Delta/Game Selection/Segues/GamesStoryboardSegue.swift @@ -10,9 +10,9 @@ import UIKit class GamesStoryboardSegue: UIStoryboardSegue { - fileprivate let animator: UIViewPropertyAnimator + private let animator: UIViewPropertyAnimator - fileprivate var isPresenting: Bool = true + private var isPresenting: Bool = true override init(identifier: String?, source: UIViewController, destination: UIViewController) { diff --git a/Delta/Game Selection/Segues/InitialGamesStoryboardSegue.swift b/Delta/Game Selection/Segues/InitialGamesStoryboardSegue.swift index 5183340..b0da5e4 100644 --- a/Delta/Game Selection/Segues/InitialGamesStoryboardSegue.swift +++ b/Delta/Game Selection/Segues/InitialGamesStoryboardSegue.swift @@ -10,9 +10,9 @@ import UIKit class InitialGamesStoryboardSegue: UIStoryboardSegue { - fileprivate let animator: UIViewPropertyAnimator + private let animator: UIViewPropertyAnimator - fileprivate var isPresenting: Bool = true + private var isPresenting: Bool = true override init(identifier: String?, source: UIViewController, destination: UIViewController) { diff --git a/Delta/Importing/Import Options/PhotoLibraryImportOption.swift b/Delta/Importing/Import Options/PhotoLibraryImportOption.swift index 51b008e..4d5d558 100644 --- a/Delta/Importing/Import Options/PhotoLibraryImportOption.swift +++ b/Delta/Importing/Import Options/PhotoLibraryImportOption.swift @@ -15,7 +15,7 @@ class PhotoLibraryImportOption: NSObject, ImportOption let image: UIImage? = nil private let presentingViewController: UIViewController - fileprivate var completionHandler: ((Set?) -> Void)? + private var completionHandler: ((Set?) -> Void)? init(presentingViewController: UIViewController) { diff --git a/Delta/Importing/ImportController.swift b/Delta/Importing/ImportController.swift index 8147092..a394054 100644 --- a/Delta/Importing/ImportController.swift +++ b/Delta/Importing/ImportController.swift @@ -37,14 +37,14 @@ class ImportController: NSObject var delegate: ImportControllerDelegate? var importOptions: [ImportOption]? - fileprivate weak var presentingViewController: UIViewController? + private weak var presentingViewController: UIViewController? // Store presentedViewController separately, since when we dismiss we don't know if it has already been dismissed. // Calling dismiss on presentingViewController in that case would dismiss presentingViewController, which is bad. - fileprivate weak var presentedViewController: UIViewController? + private weak var presentedViewController: UIViewController? - fileprivate let importQueue: OperationQueue - fileprivate let fileCoordinator: NSFileCoordinator + private let importQueue: OperationQueue + private let fileCoordinator: NSFileCoordinator init(documentTypes: Set) { @@ -61,7 +61,7 @@ class ImportController: NSObject super.init() } - fileprivate func presentImportController(from presentingViewController: UIViewController, animated: Bool, completionHandler: ((Void) -> Void)?) + fileprivate func presentImportController(from presentingViewController: UIViewController, animated: Bool, completionHandler: (() -> Void)?) { self.presentingViewController = presentingViewController @@ -104,12 +104,12 @@ class ImportController: NSObject #endif } - @objc fileprivate func cancel() + @objc private func cancel() { self.finish(with: nil, errors: []) } - fileprivate func finish(with urls: Set?, errors: [Error]) + private func finish(with urls: Set?, errors: [Error]) { if let urls = urls { @@ -241,7 +241,7 @@ extension UIViewController } } - func present(_ importController: ImportController, animated: Bool, completion: ((Void) -> Void)?) + func present(_ importController: ImportController, animated: Bool, completion: (() -> Void)?) { self.importController = importController diff --git a/Delta/Launch/LaunchViewController.swift b/Delta/Launch/LaunchViewController.swift index 9f5d7ba..c2d0be5 100644 --- a/Delta/Launch/LaunchViewController.swift +++ b/Delta/Launch/LaunchViewController.swift @@ -10,10 +10,10 @@ import UIKit class LaunchViewController: UIViewController { - @IBOutlet fileprivate var gameViewContainerView: UIView! - fileprivate var gameViewController: GameViewController! + @IBOutlet private var gameViewContainerView: UIView! + private var gameViewController: GameViewController! - fileprivate var presentedGameViewController: Bool = false + private var presentedGameViewController: Bool = false override var preferredStatusBarStyle: UIStatusBarStyle { return self.gameViewController?.preferredStatusBarStyle ?? .lightContent diff --git a/Delta/Pause Menu/Cheats/CheatTextView.swift b/Delta/Pause Menu/Cheats/CheatTextView.swift index 316bcc5..cafcb6c 100644 --- a/Delta/Pause Menu/Cheats/CheatTextView.swift +++ b/Delta/Pause Menu/Cheats/CheatTextView.swift @@ -13,7 +13,10 @@ import DeltaCore import Roxas -private let CheatPrefixAttribute = "prefix" +private extension NSAttributedStringKey +{ + static let cheatPrefix = NSAttributedStringKey("CheatPrefix") +} class CheatTextView: UITextView { @@ -23,7 +26,7 @@ class CheatTextView: UITextView } } - @NSCopying fileprivate var attributedFormat: NSAttributedString? + @NSCopying private var attributedFormat: NSAttributedString? required init?(coder aDecoder: NSCoder) { @@ -44,9 +47,9 @@ extension CheatTextView if let format = self.cheatFormat, let font = self.font { - let characterWidth = ("A" as NSString).size(attributes: [NSFontAttributeName: font]).width + let characterWidth = ("A" as NSString).size(withAttributes: [.font: font]).width - let width = characterWidth * CGFloat(format.format.characters.count) + let width = characterWidth * CGFloat(format.format.count) self.textContainer.size = CGSize(width: width, height: 0) } } @@ -79,7 +82,7 @@ private extension CheatTextView if let prefixString = prefixString, prefixString.length > 0 { - attributedString.addAttribute(CheatPrefixAttribute, value: prefixString, range: NSRange(location: 0, length: 1)) + attributedString.addAttribute(.cheatPrefix, value: prefixString, range: NSRange(location: 0, length: 1)) } attributedFormat.append(attributedString) @@ -105,7 +108,7 @@ private extension CheatTextView extension CheatTextView: NSLayoutManagerDelegate { - func layoutManager(_ layoutManager: NSLayoutManager, shouldGenerateGlyphs glyphs: UnsafePointer, properties props: UnsafePointer, characterIndexes charIndexes: UnsafePointer, font aFont: UIFont, forGlyphRange glyphRange: NSRange) -> Int + func layoutManager(_ layoutManager: NSLayoutManager, shouldGenerateGlyphs glyphs: UnsafePointer, properties props: UnsafePointer, characterIndexes charIndexes: UnsafePointer, font aFont: UIFont, forGlyphRange glyphRange: NSRange) -> Int { // Returning 0 = let the layoutManager do the normal logic guard let attributedFormat = self.attributedFormat else { return 0 } @@ -118,7 +121,7 @@ extension CheatTextView: NSLayoutManagerDelegate // Allocate our replacement buffers let glyphBuffer = UnsafeMutablePointer.allocate(capacity: bufferSize) - let propertyBuffer = UnsafeMutablePointer.allocate(capacity: bufferSize) + let propertyBuffer = UnsafeMutablePointer.allocate(capacity: bufferSize) let characterBuffer = UnsafeMutablePointer.allocate(capacity: bufferSize) var offset = 0 @@ -128,10 +131,10 @@ extension CheatTextView: NSLayoutManagerDelegate // The index the actual character maps to in the cheat format let characterIndex = charIndexes[i] % attributedFormat.length - if let prefix = attributedFormat.attributes(at: characterIndex, effectiveRange: nil)[CheatPrefixAttribute] as? String + if let prefix = attributedFormat.attributes(at: characterIndex, effectiveRange: nil)[.cheatPrefix] as? String { // If there is a prefix string, we insert the glyphs (and associated properties/character indexes) first - let prefixCount = prefix.characters.count + let prefixCount = prefix.count for j in 0 ..< prefixCount { diff --git a/Delta/Pause Menu/Cheats/CheatValidator.swift b/Delta/Pause Menu/Cheats/CheatValidator.swift index 19d8440..6c38128 100644 --- a/Delta/Pause Menu/Cheats/CheatValidator.swift +++ b/Delta/Pause Menu/Cheats/CheatValidator.swift @@ -51,7 +51,7 @@ struct CheatValidator // Remove newline characters (code should already be formatted) let sanitizedCode = (cheat.code as NSString).replacingOccurrences(of: "\n", with: "") - if sanitizedCode.characters.count % self.format.format.characters.count != 0 + if sanitizedCode.count % self.format.format.count != 0 { throw Error.invalidCode } diff --git a/Delta/Pause Menu/Cheats/CheatsViewController.swift b/Delta/Pause Menu/Cheats/CheatsViewController.swift index c42fea4..db9cf70 100644 --- a/Delta/Pause Menu/Cheats/CheatsViewController.swift +++ b/Delta/Pause Menu/Cheats/CheatsViewController.swift @@ -29,7 +29,7 @@ class CheatsViewController: UITableViewController weak var delegate: CheatsViewControllerDelegate? - fileprivate let dataSource = RSTFetchedResultsTableViewDataSource(fetchedResultsController: NSFetchedResultsController()) + private let dataSource = RSTFetchedResultsTableViewDataSource(fetchedResultsController: NSFetchedResultsController()) } extension CheatsViewController diff --git a/Delta/Pause Menu/Cheats/EditCheatViewController.swift b/Delta/Pause Menu/Cheats/EditCheatViewController.swift index db04c37..e36d29e 100644 --- a/Delta/Pause Menu/Cheats/EditCheatViewController.swift +++ b/Delta/Pause Menu/Cheats/EditCheatViewController.swift @@ -43,19 +43,19 @@ class EditCheatViewController: UITableViewController var isPreviewing = false - fileprivate var supportedCheatFormats: [CheatFormat]! + private var supportedCheatFormats: [CheatFormat]! - fileprivate var selectedCheatFormat: CheatFormat { + private var selectedCheatFormat: CheatFormat { let cheatFormat = self.supportedCheatFormats[self.typeSegmentedControl.selectedSegmentIndex] return cheatFormat } - fileprivate var mutableCheat: Cheat! - fileprivate var managedObjectContext = DatabaseManager.shared.newBackgroundContext() + private var mutableCheat: Cheat! + private var managedObjectContext = DatabaseManager.shared.newBackgroundContext() - @IBOutlet fileprivate var nameTextField: UITextField! - @IBOutlet fileprivate var typeSegmentedControl: UISegmentedControl! - @IBOutlet fileprivate var codeTextView: CheatTextView! + @IBOutlet private var nameTextField: UITextField! + @IBOutlet private var typeSegmentedControl: UISegmentedControl! + @IBOutlet private var codeTextView: CheatTextView! override var previewActionItems: [UIPreviewActionItem] { @@ -132,7 +132,7 @@ extension EditCheatViewController // Update UI - if name.characters.count == 0 + if name.count == 0 { self.title = NSLocalizedString("Cheat", comment: "") } @@ -224,7 +224,7 @@ private extension EditCheatViewController @IBAction func updateCheatName(_ sender: UITextField) { var title = sender.text ?? "" - if title.characters.count == 0 + if title.count == 0 { title = NSLocalizedString("Cheat", comment: "") } @@ -325,7 +325,7 @@ private extension EditCheatViewController sender.resignFirstResponder() } - func presentErrorAlert(title: String, message: String, handler: ((Void) -> Void)?) + func presentErrorAlert(title: String, message: String, handler: (() -> Void)?) { DispatchQueue.main.async { let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) @@ -382,7 +382,9 @@ extension EditCheatViewController: UITextViewDelegate // We need to manually add back the attributes when manually modifying the underlying text storage // Otherwise, pasting text into an empty text view will result in the wrong font being used - let attributedString = NSAttributedString(string: sanitizedText, attributes: textView.typingAttributes) + let attributes = Dictionary(uniqueKeysWithValues: textView.typingAttributes.map { (key, value) in (NSAttributedStringKey(key), value) }) + + let attributedString = NSAttributedString(string: sanitizedText, attributes: attributes) textView.textStorage.replaceCharacters(in: range, with: attributedString) // We must add attributedString.length, not range.length, in case the attributed string's length differs diff --git a/Delta/Pause Menu/GridMenuViewController.swift b/Delta/Pause Menu/GridMenuViewController.swift index 8552552..a92fad3 100644 --- a/Delta/Pause Menu/GridMenuViewController.swift +++ b/Delta/Pause Menu/GridMenuViewController.swift @@ -23,12 +23,12 @@ class GridMenuViewController: UICollectionViewController get { return self.collectionView?.contentSize ?? CGSize.zero } } - fileprivate let dataSource = RSTArrayCollectionViewDataSource(items: []) + private let dataSource = RSTArrayCollectionViewDataSource(items: []) - fileprivate var prototypeCell = GridCollectionViewCell() - fileprivate var previousIndexPath: IndexPath? = nil + private var prototypeCell = GridCollectionViewCell() + private var previousIndexPath: IndexPath? = nil - fileprivate var registeredKVOObservers = Set() + private var registeredKVOObservers = Set() init() { diff --git a/Delta/Pause Menu/PauseViewController.swift b/Delta/Pause Menu/PauseViewController.swift index 9287e85..68f6e09 100644 --- a/Delta/Pause Menu/PauseViewController.swift +++ b/Delta/Pause Menu/PauseViewController.swift @@ -38,9 +38,9 @@ class PauseViewController: UIViewController, PauseInfoProviding /// Save States weak var saveStatesViewControllerDelegate: SaveStatesViewControllerDelegate? - fileprivate var saveStatesViewControllerMode = SaveStatesViewController.Mode.loading + private var saveStatesViewControllerMode = SaveStatesViewController.Mode.loading - fileprivate var pauseNavigationController: UINavigationController! + private var pauseNavigationController: UINavigationController! /// UIViewController override var preferredContentSize: CGSize { diff --git a/Delta/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift b/Delta/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift index 554c945..b4f8ec7 100644 --- a/Delta/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift +++ b/Delta/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift @@ -12,7 +12,7 @@ class SaveStatesCollectionHeaderView: UICollectionReusableView { let textLabel = UILabel() - fileprivate let vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: UIBlurEffect(style: .dark))) + private let vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: UIBlurEffect(style: .dark))) var isTextLabelVibrancyEnabled = true { didSet { diff --git a/Delta/Pause Menu/Save States/SaveStatesViewController.swift b/Delta/Pause Menu/Save States/SaveStatesViewController.swift index 0d1a960..019be65 100644 --- a/Delta/Pause Menu/Save States/SaveStatesViewController.swift +++ b/Delta/Pause Menu/Save States/SaveStatesViewController.swift @@ -59,18 +59,18 @@ class SaveStatesViewController: UICollectionViewController } } - fileprivate var vibrancyView: UIVisualEffectView! - fileprivate var placeholderView: RSTPlaceholderView! + private var vibrancyView: UIVisualEffectView! + private var placeholderView: RSTPlaceholderView! - fileprivate var prototypeCell = GridCollectionViewCell() - fileprivate var prototypeCellWidthConstraint: NSLayoutConstraint! - fileprivate var prototypeHeader = SaveStatesCollectionHeaderView() + private var prototypeCell = GridCollectionViewCell() + private var prototypeCellWidthConstraint: NSLayoutConstraint! + private var prototypeHeader = SaveStatesCollectionHeaderView() - fileprivate let dataSource: RSTFetchedResultsCollectionViewPrefetchingDataSource + private let dataSource: RSTFetchedResultsCollectionViewPrefetchingDataSource - fileprivate var emulatorCoreSaveState: SaveStateProtocol? + private var emulatorCoreSaveState: SaveStateProtocol? - fileprivate let dateFormatter: DateFormatter + private let dateFormatter: DateFormatter required init?(coder aDecoder: NSCoder) { @@ -377,7 +377,7 @@ private extension SaveStatesViewController func rename(_ saveState: SaveState, with name: String?) { var name = name - if (name ?? "").characters.count == 0 + if (name ?? "").count == 0 { // When text is nil, we know to show the timestamp instead name = nil @@ -562,7 +562,7 @@ private extension SaveStatesViewController //MARK: - 3D Touch - extension SaveStatesViewController: UIViewControllerPreviewingDelegate { - fileprivate func prepareEmulatorCoreSaveState() + private func prepareEmulatorCoreSaveState() { guard let emulatorCore = self.emulatorCore else { return } diff --git a/Delta/Pause Menu/Segues/PauseStoryboardSegue.swift b/Delta/Pause Menu/Segues/PauseStoryboardSegue.swift index 238657d..31e537e 100644 --- a/Delta/Pause Menu/Segues/PauseStoryboardSegue.swift +++ b/Delta/Pause Menu/Segues/PauseStoryboardSegue.swift @@ -10,8 +10,8 @@ import UIKit class PauseStoryboardSegue: UIStoryboardSegue { - fileprivate let animator: UIViewPropertyAnimator - fileprivate let presentationController: PausePresentationController + private let animator: UIViewPropertyAnimator + private let presentationController: PausePresentationController override init(identifier: String?, source: UIViewController, destination: UIViewController) { diff --git a/Delta/Settings/Controller Skins/ControllerSkinsViewController.swift b/Delta/Settings/Controller Skins/ControllerSkinsViewController.swift index f5835a2..49b5575 100644 --- a/Delta/Settings/Controller Skins/ControllerSkinsViewController.swift +++ b/Delta/Settings/Controller Skins/ControllerSkinsViewController.swift @@ -26,7 +26,7 @@ class ControllerSkinsViewController: UITableViewController } } - fileprivate let dataSource: RSTFetchedResultsTableViewPrefetchingDataSource + private let dataSource: RSTFetchedResultsTableViewPrefetchingDataSource required init?(coder aDecoder: NSCoder) { diff --git a/Delta/Settings/Controller Skins/SystemControllerSkinsViewController.swift b/Delta/Settings/Controller Skins/SystemControllerSkinsViewController.swift index 87e3870..c0b0545 100644 --- a/Delta/Settings/Controller Skins/SystemControllerSkinsViewController.swift +++ b/Delta/Settings/Controller Skins/SystemControllerSkinsViewController.swift @@ -12,7 +12,7 @@ import DeltaCore extension SystemControllerSkinsViewController { - fileprivate enum Section: Int + private enum Section: Int { case portrait case landscape @@ -23,8 +23,8 @@ class SystemControllerSkinsViewController: UITableViewController { var system: System! - @IBOutlet fileprivate var portraitImageView: UIImageView! - @IBOutlet fileprivate var landscapeImageView: UIImageView! + @IBOutlet private var portraitImageView: UIImageView! + @IBOutlet private var landscapeImageView: UIImageView! } extension SystemControllerSkinsViewController diff --git a/Delta/Settings/Controllers/ControllerInputsViewController.swift b/Delta/Settings/Controllers/ControllerInputsViewController.swift index a992465..228b81f 100644 --- a/Delta/Settings/Controllers/ControllerInputsViewController.swift +++ b/Delta/Settings/Controllers/ControllerInputsViewController.swift @@ -28,17 +28,17 @@ class ControllerInputsViewController: UIViewController } } - fileprivate lazy var managedObjectContext: NSManagedObjectContext = DatabaseManager.shared.newBackgroundContext() - fileprivate var inputMappings = [System: GameControllerInputMapping]() + private lazy var managedObjectContext: NSManagedObjectContext = DatabaseManager.shared.newBackgroundContext() + private var inputMappings = [System: GameControllerInputMapping]() - fileprivate let supportedActionInputs: [ActionInput] = [.quickSave, .quickLoad, .fastForward] + private let supportedActionInputs: [ActionInput] = [.quickSave, .quickLoad, .fastForward] - fileprivate var gameViewController: DeltaCore.GameViewController! - fileprivate var actionsMenuViewController: GridMenuViewController! + private var gameViewController: DeltaCore.GameViewController! + private var actionsMenuViewController: GridMenuViewController! - fileprivate var calloutViews = [AnyInput: InputCalloutView]() + private var calloutViews = [AnyInput: InputCalloutView]() - fileprivate var activeCalloutView: InputCalloutView? + private var activeCalloutView: InputCalloutView? @IBOutlet private var actionsMenuViewControllerHeightConstraint: NSLayoutConstraint! @IBOutlet private var cancelTapGestureRecognizer: UITapGestureRecognizer! diff --git a/Delta/Settings/Controllers/ControllersSettingsViewController.swift b/Delta/Settings/Controllers/ControllersSettingsViewController.swift index 8b6d954..9d20b3d 100644 --- a/Delta/Settings/Controllers/ControllersSettingsViewController.swift +++ b/Delta/Settings/Controllers/ControllersSettingsViewController.swift @@ -13,7 +13,7 @@ import Roxas extension ControllersSettingsViewController { - fileprivate enum Section: Int + private enum Section: Int { case none case localDevice @@ -46,7 +46,7 @@ class ControllersSettingsViewController: UITableViewController } } - fileprivate var gameController: GameController? { + private var gameController: GameController? { didSet { // Order matters since localDeviceController changes Settings.localControllerPlayerIndex, which sends out NSNotification. if oldValue == self.localDeviceController @@ -62,9 +62,9 @@ class ControllersSettingsViewController: UITableViewController } } - fileprivate var connectedControllers = ExternalGameControllerManager.shared.connectedControllers.sorted(by: { $0.playerIndex ?? NSIntegerMax < $1.playerIndex ?? NSIntegerMax }) + private var connectedControllers = ExternalGameControllerManager.shared.connectedControllers.sorted(by: { $0.playerIndex ?? NSIntegerMax < $1.playerIndex ?? NSIntegerMax }) - fileprivate lazy var localDeviceController: LocalDeviceController = { + private lazy var localDeviceController: LocalDeviceController = { let device = LocalDeviceController() device.playerIndex = Settings.localControllerPlayerIndex @@ -174,7 +174,7 @@ private extension ControllersSettingsViewController private extension ControllersSettingsViewController { - dynamic func externalGameControllerDidConnect(_ notification: Notification) + @objc func externalGameControllerDidConnect(_ notification: Notification) { guard let controller = notification.object as? GameController else { return } @@ -217,7 +217,7 @@ private extension ControllersSettingsViewController } } - dynamic func externalGameControllerDidDisconnect(_ notification: Notification) + @objc func externalGameControllerDidDisconnect(_ notification: Notification) { guard let controller = notification.object as? GameController else { return } diff --git a/Delta/Settings/Controllers/InputCalloutView.swift b/Delta/Settings/Controllers/InputCalloutView.swift index b6c0d7a..f764f4b 100644 --- a/Delta/Settings/Controllers/InputCalloutView.swift +++ b/Delta/Settings/Controllers/InputCalloutView.swift @@ -33,7 +33,7 @@ class InputCalloutView: SMCalloutView } } - fileprivate let textLabel: UILabel + private let textLabel: UILabel init() { diff --git a/Delta/Settings/SettingsViewController.swift b/Delta/Settings/SettingsViewController.swift index 3f64c4a..38efe76 100644 --- a/Delta/Settings/SettingsViewController.swift +++ b/Delta/Settings/SettingsViewController.swift @@ -12,7 +12,7 @@ import DeltaCore import Roxas -fileprivate extension SettingsViewController +private extension SettingsViewController { enum Section: Int { @@ -37,12 +37,12 @@ fileprivate extension SettingsViewController class SettingsViewController: UITableViewController { - @IBOutlet fileprivate var controllerOpacityLabel: UILabel! - @IBOutlet fileprivate var controllerOpacitySlider: UISlider! + @IBOutlet private var controllerOpacityLabel: UILabel! + @IBOutlet private var controllerOpacitySlider: UISlider! - fileprivate var selectionFeedbackGenerator: UISelectionFeedbackGenerator? + private var selectionFeedbackGenerator: UISelectionFeedbackGenerator? - fileprivate var previousSelectedRowIndexPath: IndexPath? + private var previousSelectedRowIndexPath: IndexPath? required init?(coder aDecoder: NSCoder) { @@ -153,12 +153,12 @@ private extension SettingsViewController private extension SettingsViewController { - dynamic func externalGameControllerDidConnect(_ notification: Notification) + @objc func externalGameControllerDidConnect(_ notification: Notification) { self.tableView.reloadSections(IndexSet(integer: Section.controllers.rawValue), with: .none) } - dynamic func externalGameControllerDidDisconnect(_ notification: Notification) + @objc func externalGameControllerDidDisconnect(_ notification: Notification) { self.tableView.reloadSections(IndexSet(integer: Section.controllers.rawValue), with: .none) } diff --git a/Podfile b/Podfile index e6bd722..55982e7 100644 --- a/Podfile +++ b/Podfile @@ -10,16 +10,4 @@ target 'Delta' do pod 'Fabric', '~> 1.6.0' pod 'Crashlytics', '~> 3.8.0' pod 'SMCalloutView' -end - -post_install do |installer| - Dir.glob('Pods/SQLite.swift/Sources/SQLite/**/*.swift').each { |path| - begin - text = File.read(path) - text = text.gsub(/import CSQLite/, 'import SQLite3') - File.open(path, 'w') { |file| file.puts text } - rescue Exception - puts "Unable to patch #{path}: #{$!}" - end - } end \ No newline at end of file diff --git a/Podfile.lock b/Podfile.lock index 7838f15..746dd93 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,15 +1,15 @@ PODS: - - Crashlytics (3.8.4): + - Crashlytics (3.8.6): - Fabric (~> 1.6.3) - - Fabric (1.6.11) + - Fabric (1.6.13) - FileMD5Hash (2.0.0) - SDWebImage (3.8.2): - SDWebImage/Core (= 3.8.2) - SDWebImage/Core (3.8.2) - SMCalloutView (2.1.5) - - SQLite.swift (0.11.3): - - SQLite.swift/standard (= 0.11.3) - - SQLite.swift/standard (0.11.3) + - SQLite.swift (0.11.4): + - SQLite.swift/standard (= 0.11.4) + - SQLite.swift/standard (0.11.4) DEPENDENCIES: - Crashlytics (~> 3.8.0) @@ -20,13 +20,13 @@ DEPENDENCIES: - SQLite.swift (~> 0.11.0) SPEC CHECKSUMS: - Crashlytics: 79e236942ca1e7fc641df1feb9a275360a78ab6a - Fabric: 5911403591946b8228ab1c51d98f1d7137e863c6 + Crashlytics: 95d05f4e4c19a771250c4bd9ce344d996de32bbf + Fabric: 2fb5676bc811af011a04513451f463dac6803206 FileMD5Hash: 3ed69cc19a21ff4d30ae8833fc104275ad2c7de0 SDWebImage: '098e97e6176540799c27e804c96653ee0833d13c' SMCalloutView: 5c0ee363dc8e7204b2fda17dfad38c93e9e23481 - SQLite.swift: 99b36c22084427f0abbeb957556ce1528cf10bb3 + SQLite.swift: 3e3bee21da701b5b9f87c4a672cb54f233505692 -PODFILE CHECKSUM: 598f830560ac5b18bbe0eb40134a1719f38f12f1 +PODFILE CHECKSUM: a1fb0ce1f1bb0e73380460cc4f946d297a4d5ff1 COCOAPODS: 1.2.1 diff --git a/Pods/Crashlytics/README.md b/Pods/Crashlytics/README.md index db7883d..2715a06 100644 --- a/Pods/Crashlytics/README.md +++ b/Pods/Crashlytics/README.md @@ -1,6 +1,6 @@ ![Crashlytics Header](https://docs.fabric.io/ios/cocoapod-readmes/cocoapods-crashlytics-header.png) -Part of [Twitter Fabric](https://www.fabric.io), [Crashlytics](http://try.crashlytics.com/) offers the most powerful, yet lightest weight crash reporting solution for iOS. Crashlytics also provides real-time analytics through [Answers](https://answers.io/) and app distributions to testers using [Beta](http://try.crashlytics.com/beta/). +Part of [Google Fabric](https://get.fabric.io), [Crashlytics](http://try.crashlytics.com/) offers the most powerful, yet lightest weight crash reporting solution for iOS. Crashlytics also provides real-time analytics through [Answers](https://answers.io/) and app distributions to testers using [Beta](http://try.crashlytics.com/beta/). ## Setup @@ -33,8 +33,7 @@ Part of [Twitter Fabric](https://www.fabric.io), [Crashlytics](http://try.crashl ## Resources -* [Documentation](https://docs.fabric.io/ios/crashlytics/index.html) -* [Forums](https://twittercommunity.com/c/fabric/crashlytics) +* [Documentation](https://docs.fabric.io/apple/crashlytics/overview.html) +* [Forums](https://stackoverflow.com/questions/tagged/google-fabric) * [Website](http://try.crashlytics.com/) * Follow us on Twitter: [@fabric](https://twitter.com/fabric) and [@crashlytics](https://twitter.com/crashlytics) -* Follow us on Periscope: [Fabric](https://periscope.tv/fabric) and [TwitterDev](https://periscope.tv/twitterdev) diff --git a/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics b/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics index e350e9b..90f7551 100755 Binary files a/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics and b/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics differ diff --git a/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist b/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist index ac3b8d0..1f4e7e5 100644 Binary files a/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist and b/Pods/Crashlytics/iOS/Crashlytics.framework/Info.plist differ diff --git a/Pods/Crashlytics/iOS/Crashlytics.framework/submit b/Pods/Crashlytics/iOS/Crashlytics.framework/submit index 3870ad6..7cc675a 100755 Binary files a/Pods/Crashlytics/iOS/Crashlytics.framework/submit and b/Pods/Crashlytics/iOS/Crashlytics.framework/submit differ diff --git a/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM b/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM index 8a52e7d..70f2d94 100755 Binary files a/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM and b/Pods/Crashlytics/iOS/Crashlytics.framework/uploadDSYM differ diff --git a/Pods/Crashlytics/submit b/Pods/Crashlytics/submit index 3870ad6..7cc675a 100755 Binary files a/Pods/Crashlytics/submit and b/Pods/Crashlytics/submit differ diff --git a/Pods/Fabric/README.md b/Pods/Fabric/README.md index 1db8549..9eca610 100644 --- a/Pods/Fabric/README.md +++ b/Pods/Fabric/README.md @@ -4,7 +4,7 @@ ## Overview -[Fabric](https://www.fabric.io) provides developers with the tools they need to build the best apps. Developed and maintained by Twitter and the team that built Crashlytics, Fabric provides an easy way to manage all your SDKs so that you’ll never have to worry about tedious configurations or juggling different accounts. We let you get right into coding and building the next big app. +[Fabric](https://get.fabric.io) provides developers with the tools they need to build the best apps. Developed and maintained by Google and the team that built Crashlytics, Fabric provides an easy way to manage all your SDKs so that you’ll never have to worry about tedious configurations or juggling different accounts. We let you get right into coding and building the next big app. For a full list of SDK provided through Fabric visit [https://fabric.io/kits](https://fabric.io/kits). @@ -37,7 +37,6 @@ The Fabric Pod is a dependency for all Fabric SDKs and is included when installi ## Resources * [Documentation](https://docs.fabric.io/) -* [Forums](https://twittercommunity.com/c/fabric) -* [Website](https://www.fabric.io) +* [Forums](https://stackoverflow.com/questions/tagged/google-fabric) +* [Website](https://get.fabric.io) * Follow us on Twitter: [@fabric](https://twitter.com/fabric) -* Follow us on Periscope: [Fabric](https://periscope.tv/fabric) and [TwitterDev](https://periscope.tv/twitterdev) diff --git a/Pods/Fabric/iOS/Fabric.framework/Fabric b/Pods/Fabric/iOS/Fabric.framework/Fabric index c109011..acc4918 100755 Binary files a/Pods/Fabric/iOS/Fabric.framework/Fabric and b/Pods/Fabric/iOS/Fabric.framework/Fabric differ diff --git a/Pods/Fabric/iOS/Fabric.framework/Info.plist b/Pods/Fabric/iOS/Fabric.framework/Info.plist index e203943..e870885 100644 Binary files a/Pods/Fabric/iOS/Fabric.framework/Info.plist and b/Pods/Fabric/iOS/Fabric.framework/Info.plist differ diff --git a/Pods/Fabric/iOS/Fabric.framework/uploadDSYM b/Pods/Fabric/iOS/Fabric.framework/uploadDSYM index 6d5888d..e5a9923 100755 Binary files a/Pods/Fabric/iOS/Fabric.framework/uploadDSYM and b/Pods/Fabric/iOS/Fabric.framework/uploadDSYM differ diff --git a/Pods/Fabric/upload-symbols b/Pods/Fabric/upload-symbols index 273f3e5..fea6c0c 100755 Binary files a/Pods/Fabric/upload-symbols and b/Pods/Fabric/upload-symbols differ diff --git a/Pods/Fabric/uploadDSYM b/Pods/Fabric/uploadDSYM index 6d5888d..e5a9923 100755 Binary files a/Pods/Fabric/uploadDSYM and b/Pods/Fabric/uploadDSYM differ diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 7838f15..746dd93 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,15 +1,15 @@ PODS: - - Crashlytics (3.8.4): + - Crashlytics (3.8.6): - Fabric (~> 1.6.3) - - Fabric (1.6.11) + - Fabric (1.6.13) - FileMD5Hash (2.0.0) - SDWebImage (3.8.2): - SDWebImage/Core (= 3.8.2) - SDWebImage/Core (3.8.2) - SMCalloutView (2.1.5) - - SQLite.swift (0.11.3): - - SQLite.swift/standard (= 0.11.3) - - SQLite.swift/standard (0.11.3) + - SQLite.swift (0.11.4): + - SQLite.swift/standard (= 0.11.4) + - SQLite.swift/standard (0.11.4) DEPENDENCIES: - Crashlytics (~> 3.8.0) @@ -20,13 +20,13 @@ DEPENDENCIES: - SQLite.swift (~> 0.11.0) SPEC CHECKSUMS: - Crashlytics: 79e236942ca1e7fc641df1feb9a275360a78ab6a - Fabric: 5911403591946b8228ab1c51d98f1d7137e863c6 + Crashlytics: 95d05f4e4c19a771250c4bd9ce344d996de32bbf + Fabric: 2fb5676bc811af011a04513451f463dac6803206 FileMD5Hash: 3ed69cc19a21ff4d30ae8833fc104275ad2c7de0 SDWebImage: '098e97e6176540799c27e804c96653ee0833d13c' SMCalloutView: 5c0ee363dc8e7204b2fda17dfad38c93e9e23481 - SQLite.swift: 99b36c22084427f0abbeb957556ce1528cf10bb3 + SQLite.swift: 3e3bee21da701b5b9f87c4a672cb54f233505692 -PODFILE CHECKSUM: 598f830560ac5b18bbe0eb40134a1719f38f12f1 +PODFILE CHECKSUM: a1fb0ce1f1bb0e73380460cc4f946d297a4d5ff1 COCOAPODS: 1.2.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 8fa2f60..e0dd8d0 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -9,17 +9,16 @@ /* Begin PBXBuildFile section */ 01F6FD7829922FFEDBA0AC937221139D /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = F9058D96291772916213F878DBC9D4D1 /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 020AFCE363BBA923E907BD453C394A18 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = A8DD6B2CD921B3CD0CC1C8D285C3DB14 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 02A3EAB09395DB7996C6A2D6FFEEA541 /* SQLite.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2911054ACE98C26AD58D7BD2727E97E5 /* SQLite.swift-dummy.m */; }; - 05585238F98FFE793DC0D1BA800C0D27 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = B718D0BB0426AD065EABCA59ABA865E3 /* fts3_tokenizer.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0A108DF7E6F55085A67FC6E0FF9D597B /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BC0D2A173827BA1039A7C690560FF3 /* Helpers.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 05585238F98FFE793DC0D1BA800C0D27 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D80AD2C4486EE72A4FFDA86FC6BCD1C /* fts3_tokenizer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 0E8A3312FC090BE373D8B2DC9F33355C /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = F715310E4E9F5621B0A1EE26721C2053 /* SMCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0E95FFC222F9730AB5A2FA648F3DC10B /* Pods-Delta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B00707EB4D7D4F01732D69B015ADDF /* Pods-Delta-dummy.m */; }; - 14D45BB06714ADAB897AC0F9F5DEEB35 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19EBBFE10B2645507B0A3F484F55BF94 /* CustomFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1150C57CFCC34F769A6B3A9A957FCE1E /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A53E5BCCFF16DD308B1130B5B11971F /* FTS4.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 19A8DB8810E10682948CBA8F1954F70E /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 49472E71891AFD1F328838FADB677451 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C5A988FA0C3F4E0F3D81AC3C597B9E8 /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F44A58B8FBEE6A42E7C1709683A11E5 /* Foundation.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1DCE10EE2CBF5007B2BA3E4BE0465891 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 548D52A5CFF8E0AEE731320D3A7424BC /* Operators.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 1FAD25073BF85238A82B39CF64208138 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D1A915C60E1D50527210412A5B4094DD /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 20A087C33B817D962690FDC7E894405A /* SQLite-Bridging.h in Headers */ = {isa = PBXBuildFile; fileRef = 068FC88E6553ADF63F7B7A7EC8A7E159 /* SQLite-Bridging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20A087C33B817D962690FDC7E894405A /* SQLite-Bridging.h in Headers */ = {isa = PBXBuildFile; fileRef = DDCD815809D81A5711959C3EF15ABE37 /* SQLite-Bridging.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2207FDE1BA4EE2D34E6465B2C8161FC3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE29CF4FF5C02028C0A06EC0D2A6120 /* Foundation.framework */; }; + 2364CBBEE6A7320F676CF8D8F4541DED /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD4B5F5118F37D885793595BBEF3FE62 /* Errors.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 255360BAB2981F4F6C7C2ADFB034DD78 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4584B245DEE3A7D04444B05704046791 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; 29B4C7EBC553B1A96DDE7199EF7EB78A /* SMClassicCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3E13029C6A72F6947FCFCDD4DB219D /* SMClassicCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 29D38081CE6E0C1DC7B78CB2467733EE /* SMCalloutView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C1E5EE84A074FE94CE4085F1073C5A8 /* SMCalloutView-dummy.m */; }; @@ -28,58 +27,62 @@ 3134B683130B4C911A3B1F3269C23C0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE29CF4FF5C02028C0A06EC0D2A6120 /* Foundation.framework */; }; 34F15EDD4167886716DE13EF3DA61525 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F6703DD83793C5DD5FAA92B71CB1DCC /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 35ECA1266BE70763C47DB385321C8BDA /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = E6CB37913B03B0D1D9C660198A0BBFD0 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 38ED2874ACF9C288331E3707699DC9C2 /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9F0E29E169056160CBC16EBC538F1BD /* FTS5.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3B7E86A00F8C6E8F5A351516BDFC6E0A /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 9573161D35C02B33C6AB094C1236CB57 /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3BF50196E73DD51E6A1152973DFC27DD /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = EB00990C9F7C2C0808B9C725904197A8 /* SMCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 3EEAE0A72D5F8D0397B9DF878F9ABE98 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE873D9C7F8F2001BB54E2DAE25C134 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 405F2E285A1E5033E75EA989DCE7F1BD /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6849DCD50DED973B7F32496C8F6CADC /* Schema.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 406D94A47FC41812A1A1F45997B699AA /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2472619402C4FCE3F48DECBBF1B832 /* Expression.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 425BDD464654D6CFE022E233C1229E95 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1E33DF619DCACF1C172619230749FD8 /* Helpers.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 44A70B580C1AAD2907574BCA02C3B243 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE29CF4FF5C02028C0A06EC0D2A6120 /* Foundation.framework */; }; - 483BC893AE648B89F28763CC2FE1932A /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCDE2E8B6DB2458ED0D0AEB620C82C33 /* FTS4.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 4BFD33775F72F952206DA9101BA849A2 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B02313ED3C98F0D9E8E673D608674FF0 /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5378E66F36C92CCCFFD4F95053426CA2 /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C1F3D5BCB62B3A3AA33F0B5318C954B /* AggregateFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 53A1E27B96743AF1526979D7C407B36E /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 73648FFFD6172035C937058B26803D6D /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 593AA045F16ABDD2E0C216A6693160A6 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C453C51E8BE33C2E172E40B18626329 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5EBA645F49A7944F9D5DE1DE7214B16C /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE04DBF47CF0621A6F64E90ECCEC74F2 /* RTree.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 65C3F0B49DCF090CFC1A57B581B7D5EE /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA433B1A2192D12009D581B153C3004 /* Value.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 66BF4CF3A7E34656616159932E27C6B6 /* FileHash.m in Sources */ = {isa = PBXBuildFile; fileRef = D7D4D4C83D4D81FF7570317D601B83DE /* FileHash.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc -w -Xanalyzer -analyzer-disable-all-checks"; }; }; 67A9DED3A799C2C1B3190757AF74C869 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = A23D5152FE861FB5B1D4950073960C6E /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 69E9B37E0394A6C87B37648633198916 /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652D47B5A7FD5E5026907CC2F6B79153 /* Setter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7BC82A3FB797473493834376FB76E54E /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ECC54F33ED71354DF6CCCBE4668EEC3 /* CoreFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6C5BAD8632B93F8B791FC5C97AE17C15 /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0945A96F1411067E758920A6B3B344D4 /* Value.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6E0EAEAD314BD406BDF642C954F224A9 /* SQLite-Bridging.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CC663225143009C0D31C50E4FD21F74 /* SQLite-Bridging.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 711CA407D0376A72931BDF50AF5979F9 /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CB6780A2B665939923D55644234747 /* RTree.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7321CB11628493652E10C9FF47B1E3CE /* SQLite.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1235F5A17D0DD4EC0AD2D22672582DA5 /* SQLite.swift-dummy.m */; }; 7E1E4E7C559B3DCBC6FB1E3F91303A61 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 032AB538856BB66C33BCF3A6EFEBAEDC /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 8288FE73D4A817A73306848AF872DD3B /* SMCalloutView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F4A02F29281568B9C5A5FDAE342EB996 /* SMCalloutView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8408E852421C1BE1E32DF2E314EC8E43 /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8D107AB0FD8CC31571E3F4EFD1DCFF /* Query.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 867ED479D87B069987F16CC84F1CB314 /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B3B201E9287A29A9C7DB3E6E89A7C60 /* SDWebImageDecoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8F7D92A4E63CC4056DFD5C0B1FD14910 /* SQLite.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F74AD19F091053437017F0F5538899C /* SQLite.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8F0F89B097957C37D6E53A6E0623D08D /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EAF5150B1F1751DB4E090CAD73037EE /* Schema.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8F7D92A4E63CC4056DFD5C0B1FD14910 /* SQLite.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D5D667758C8C5F56F3D2B66A9DA77FE /* SQLite.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; A41E5A0EF327ED9DF2D2866EF78F30A5 /* SMClassicCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = 77F129F1BA8E7E54902E13651560B797 /* SMClassicCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; }; A5F83FD5E39A40A303AEE42994F6BB2D /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 72FC743DB5B7231D4A588B65D80A72CD /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A8274F6E16ECE48FB9139B8456A31201 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = F277C21C6DB430322178CF427005E784 /* SQLite.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AB4F3A463C806CFD7BD412DC96CCA6FF /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77CAA2EA8CD0D523E4CBE3D20712BE02 /* Blob.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A81EF80FB896476F7D27B1EE45FF4D7E /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E477F21875ADA4B7C1A276B048E49FCA /* Foundation.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A8274F6E16ECE48FB9139B8456A31201 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = 62D28F99B90C42A3A0366B72E2B1B594 /* SQLite.h */; settings = {ATTRIBUTES = (Public, ); }; }; AD541D0CA07079BA817282E47531170C /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 635A4BD1CEF7E623C71F97A54BFC3616 /* ImageIO.framework */; }; + AEB1C8816D845293F320C53668E56595 /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36D5153C832FA47CE24314740F4636C1 /* Setter.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; AF71FA11F33D4FF8286DE4191247F4B9 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = CDB4230F44759F4F6161E3A256B3BB05 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; B4FF0763F545E55DDF9FB358526B21C5 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EBD8E993B110532376D18B7F68AB317A /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B5C757D4F5CE144EBC972BC0EDA42EBC /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624F168E4CA14615A9D78854E7A933D5 /* Expression.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; B771F2C5509A5462CC27977AECB8A05E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE29CF4FF5C02028C0A06EC0D2A6120 /* Foundation.framework */; }; B9AC8B5C153CD4028E20BDA493F3E8E9 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 36D00FF6092D42D9710DAB8238D6B0F4 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; BACF769130EA8F084781334E3F5487D6 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 527BDC649D5F7705A1725233BEC21CEC /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BB19B505BC3000C14CD0C6539F716F6F /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 83AD613EABACF4F682DD38C393197F4E /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BBCBA2E5DAC6C3BD2404A5628A0AB512 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F77D044B81F32AB9D7E58E85EA1C5F /* Statement.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BC369BDF43EB991D6BDA5C129249D052 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE29CF4FF5C02028C0A06EC0D2A6120 /* Foundation.framework */; }; - BC7F01C05460B87B4BD3597D8CFEDDD0 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC2C0F90270E994FEDF6FDB780D88A68 /* Connection.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; BCC3E7AF8EAD39EAB60E7F271CAAF5D7 /* FileMD5Hash-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C43F044D76D5174F1A3472D15441FAC9 /* FileMD5Hash-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; BD93645C73A232461BAFDCD2D583A48F /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 52C0F64FF5BD9D05D0DDD439AB4B4B4C /* SDWebImage-dummy.m */; }; CB0C7E4A7184D8CB11F07ABB7E01BCBF /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 286FB5B86F6E898E75403C870CC05011 /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D1AB6379EC7678A60E7A342E19CD7463 /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AACB33C34A87776F6D89F7C7D999F2FE /* AggregateFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D1B81917966545E8201CA9A7C53EAD86 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = C7966176FA5D69F9D29BD871712BC02C /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D2B6204B0FDB37AE2282418510B5DC90 /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B772FF2CD1B27DD4BA7BBBCB5323456 /* Coding.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D4291536C582A6ADAC6F18F7D8179876 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC13A2CB88857A3DE05C855ACAAFD681 /* Blob.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D47F030F3EE8210B84E275A72194BD50 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D1BEC9E736FAF5A1F921744894A5521 /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D5F611A196AB19B6B27BC91E0F7CDF98 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC2AEB033F145B0003C677FD35C0CBEE /* Operators.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D5BFFB0A8A27452013266BFFC8DB1DBF /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 579EDE09C2AFB6C42BFC19A2F449884F /* Collation.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; D76E41A83001A863D0EF9A3F0EC0F68B /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 40A8B4F2D02BC863608186A20E0C9C0D /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC0D674B7D20F83A7A5BAEEE4F00AFB5 /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = D34C5308CB41A391DE8F14481B181BF8 /* Query.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; DD3018D33ABEB0BAA61C562F8A5FFC45 /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 19644E545E27F0ABCAEA0D43C6DFB21E /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E2280C9C262A949A476A9EAC56214884 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85480F525C5B282EF9EEA86B606F0514 /* CoreFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; E282C5080C3257C180B32B1F15F2842E /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F29B2603D0AC4578F3F268097EF73E /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4A2641C95DDD1AEE0BA851321A07FC8 /* Pods-Delta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A1CF7D0F0E5A5A95A050C645EA6CDA8D /* Pods-Delta-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E70CE29F92FC143D25EBAB0AA0FF7847 /* SQLite-Bridging.m in Sources */ = {isa = PBXBuildFile; fileRef = 316F67B44DF5AB3889A51771534E09FB /* SQLite-Bridging.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E7479C47D52374BB8E42CC5698D76981 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CFD86ED37239043D822717C836B4096 /* CustomFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E93FFD6F5E098B71ECBBACD79E1560EC /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87F772F5D1108D9405EB497FC0F11A66 /* DateAndTimeFunctions.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; F01610EE244331A9AE359D92682841FB /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 87ED074865B1A0718B5980D1F6B32FD3 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; F16B42DA86FEF3A85DD46658B962B61D /* FileHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F58644292785B4F7A515DB8B0CDEDD6 /* FileHash.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F76BA2CF262298B5E751146776A25CB2 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A3AE2A19B33430DE7A53B69F388DA5D /* Statement.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F608A0FA0233A07E7B7085294F183823 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07004039F06D09685DD871754FF9373E /* Connection.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; FC2D34D5B376D1F700CAFB0E04439235 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E3FC8531E544D920F83AC90536903AD /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FD11B32C2CBEDD81033179121AAB5D2D /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD521181E9EA6EFB3C5D81835A4D448E /* Collation.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FDEAC6DF3D7044CA7FDD15A185183C2C /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACB861F144099C23DDBE864FB0C028E4 /* FTS5.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -115,37 +118,37 @@ /* Begin PBXFileReference section */ 00B00707EB4D7D4F01732D69B015ADDF /* Pods-Delta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Delta-dummy.m"; sourceTree = ""; }; - 0159C36B78547E23EBA1867CAE65F002 /* FileMD5Hash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FileMD5Hash.framework; path = FileMD5Hash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0159C36B78547E23EBA1867CAE65F002 /* FileMD5Hash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FileMD5Hash.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 02CB6780A2B665939923D55644234747 /* RTree.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RTree.swift; path = Sources/SQLite/Extensions/RTree.swift; sourceTree = ""; }; 032AB538856BB66C33BCF3A6EFEBAEDC /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; 061C525038BE58FCE9A6013CBA4162B5 /* SMCalloutView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.xcconfig; sourceTree = ""; }; - 068FC88E6553ADF63F7B7A7EC8A7E159 /* SQLite-Bridging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SQLite-Bridging.h"; path = "Sources/SQLiteObjc/include/SQLite-Bridging.h"; sourceTree = ""; }; - 0BC95251B8ED1E506925B002BC5B1352 /* SMCalloutView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SMCalloutView.framework; path = SMCalloutView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0EA433B1A2192D12009D581B153C3004 /* Value.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Value.swift; path = Sources/SQLite/Core/Value.swift; sourceTree = ""; }; - 16C12BA1CDC4BAA71A94C08D894DAE28 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage.framework; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 07004039F06D09685DD871754FF9373E /* Connection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = Sources/SQLite/Core/Connection.swift; sourceTree = ""; }; + 0945A96F1411067E758920A6B3B344D4 /* Value.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Value.swift; path = Sources/SQLite/Core/Value.swift; sourceTree = ""; }; + 0BC95251B8ED1E506925B002BC5B1352 /* SMCalloutView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SMCalloutView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0C1F3D5BCB62B3A3AA33F0B5318C954B /* AggregateFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AggregateFunctions.swift; path = Sources/SQLite/Typed/AggregateFunctions.swift; sourceTree = ""; }; + 1139D439341C37EB96BC7E48A90BAD34 /* SQLite.swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.xcconfig; sourceTree = ""; }; + 1235F5A17D0DD4EC0AD2D22672582DA5 /* SQLite.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SQLite.swift-dummy.m"; sourceTree = ""; }; + 16C12BA1CDC4BAA71A94C08D894DAE28 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 19644E545E27F0ABCAEA0D43C6DFB21E /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; - 19EBBFE10B2645507B0A3F484F55BF94 /* CustomFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomFunctions.swift; path = Sources/SQLite/Typed/CustomFunctions.swift; sourceTree = ""; }; - 1BE982AA859EE1A9210D02D6E759A38A /* FileMD5Hash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = FileMD5Hash.modulemap; sourceTree = ""; }; + 1BE982AA859EE1A9210D02D6E759A38A /* FileMD5Hash.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = FileMD5Hash.modulemap; sourceTree = ""; }; 1C3BA8511D0F025064897F6EC408296A /* Pods-Delta.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Delta.debug.xcconfig"; sourceTree = ""; }; 1DEFD8D91DD8CE3B57B0A51BDB561E2D /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; 1F46051C1128C9358A3A710DEB82AA24 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 286FB5B86F6E898E75403C870CC05011 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - 2911054ACE98C26AD58D7BD2727E97E5 /* SQLite.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SQLite.swift-dummy.m"; sourceTree = ""; }; - 297EC254820663D220F6542C0027C9FE /* SQLite.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-prefix.pch"; sourceTree = ""; }; 2D1BEC9E736FAF5A1F921744894A5521 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; 2D6E5A84EF07D22B853F28AE193B4E53 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2F3E13029C6A72F6947FCFCDD4DB219D /* SMClassicCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMClassicCalloutView.m; sourceTree = ""; }; - 2F44A58B8FBEE6A42E7C1709683A11E5 /* Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Foundation.swift; path = Sources/SQLite/Foundation.swift; sourceTree = ""; }; 2F58644292785B4F7A515DB8B0CDEDD6 /* FileHash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FileHash.h; path = Library/FileHash.h; sourceTree = ""; }; - 2FD50D8325E1E8D2B0953062797E6E02 /* SQLite.swift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.xcconfig; sourceTree = ""; }; - 316F67B44DF5AB3889A51771534E09FB /* SQLite-Bridging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SQLite-Bridging.m"; path = "Sources/SQLiteObjc/SQLite-Bridging.m"; sourceTree = ""; }; 32F29B2603D0AC4578F3F268097EF73E /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; - 35F61CA9D7252A9F19BF21470AEF205A /* SQLite.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SQLite.swift.modulemap; sourceTree = ""; }; + 32F77D044B81F32AB9D7E58E85EA1C5F /* Statement.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Statement.swift; path = Sources/SQLite/Core/Statement.swift; sourceTree = ""; }; 36D00FF6092D42D9710DAB8238D6B0F4 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; + 36D5153C832FA47CE24314740F4636C1 /* Setter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Setter.swift; path = Sources/SQLite/Typed/Setter.swift; sourceTree = ""; }; 393CFF172E48171DCE02DEF123ED6B4F /* Pods-Delta-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Delta-resources.sh"; sourceTree = ""; }; - 3A3AE2A19B33430DE7A53B69F388DA5D /* Statement.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Statement.swift; path = Sources/SQLite/Core/Statement.swift; sourceTree = ""; }; + 3B772FF2CD1B27DD4BA7BBBCB5323456 /* Coding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Coding.swift; path = Sources/SQLite/Typed/Coding.swift; sourceTree = ""; }; 3C1E5EE84A074FE94CE4085F1073C5A8 /* SMCalloutView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SMCalloutView-dummy.m"; sourceTree = ""; }; - 3F74AD19F091053437017F0F5538899C /* SQLite.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-umbrella.h"; sourceTree = ""; }; + 3D80AD2C4486EE72A4FFDA86FC6BCD1C /* fts3_tokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fts3_tokenizer.h; path = Sources/SQLiteObjc/fts3_tokenizer.h; sourceTree = ""; }; 40A8B4F2D02BC863608186A20E0C9C0D /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = ""; }; + 4144DB38E332A91B6D069713AE85CA9B /* SQLite.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SQLite.swift.modulemap; sourceTree = ""; }; 4584B245DEE3A7D04444B05704046791 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; 49472E71891AFD1F328838FADB677451 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; 4C4C366461DA3B92968A67361C700AB8 /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; @@ -154,58 +157,63 @@ 4E665218EE93EC4DF2ED23D10582E0BD /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; 527BDC649D5F7705A1725233BEC21CEC /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; 52C0F64FF5BD9D05D0DDD439AB4B4B4C /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 548D52A5CFF8E0AEE731320D3A7424BC /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/SQLite/Typed/Operators.swift; sourceTree = ""; }; + 56A4DC976BA7F3D768D97E2892BF9921 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 579EDE09C2AFB6C42BFC19A2F449884F /* Collation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collation.swift; path = Sources/SQLite/Typed/Collation.swift; sourceTree = ""; }; + 5A53E5BCCFF16DD308B1130B5B11971F /* FTS4.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS4.swift; path = Sources/SQLite/Extensions/FTS4.swift; sourceTree = ""; }; 5C453C51E8BE33C2E172E40B18626329 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; 5F6703DD83793C5DD5FAA92B71CB1DCC /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; 61D07C2D20A62CF35439BF6540AAF69F /* Pods-Delta-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Delta-acknowledgements.markdown"; sourceTree = ""; }; - 624F168E4CA14615A9D78854E7A933D5 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/SQLite/Typed/Expression.swift; sourceTree = ""; }; + 62D28F99B90C42A3A0366B72E2B1B594 /* SQLite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLite.h; path = Sources/SQLite/SQLite.h; sourceTree = ""; }; 635A4BD1CEF7E623C71F97A54BFC3616 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - 652D47B5A7FD5E5026907CC2F6B79153 /* Setter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Setter.swift; path = Sources/SQLite/Typed/Setter.swift; sourceTree = ""; }; 6701BAAE1472B7CB200DB15361C648B4 /* Pods-Delta-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Delta-frameworks.sh"; sourceTree = ""; }; 6CE29CF4FF5C02028C0A06EC0D2A6120 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 70F7F78874A3F503DC5B92E837976CD8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 72FC743DB5B7231D4A588B65D80A72CD /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; 73648FFFD6172035C937058B26803D6D /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; - 77CAA2EA8CD0D523E4CBE3D20712BE02 /* Blob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blob.swift; path = Sources/SQLite/Core/Blob.swift; sourceTree = ""; }; 77F129F1BA8E7E54902E13651560B797 /* SMClassicCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMClassicCalloutView.h; sourceTree = ""; }; 7B3B201E9287A29A9C7DB3E6E89A7C60 /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = ""; }; + 7CC663225143009C0D31C50E4FD21F74 /* SQLite-Bridging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SQLite-Bridging.m"; path = "Sources/SQLiteObjc/SQLite-Bridging.m"; sourceTree = ""; }; + 7CFD86ED37239043D822717C836B4096 /* CustomFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomFunctions.swift; path = Sources/SQLite/Typed/CustomFunctions.swift; sourceTree = ""; }; + 7EAF5150B1F1751DB4E090CAD73037EE /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = Sources/SQLite/Typed/Schema.swift; sourceTree = ""; }; 83AD613EABACF4F682DD38C393197F4E /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; + 85480F525C5B282EF9EEA86B606F0514 /* CoreFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CoreFunctions.swift; path = Sources/SQLite/Typed/CoreFunctions.swift; sourceTree = ""; }; + 86BA498830EB51ADEDC937DDFAA4E3D6 /* SQLite.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-prefix.pch"; sourceTree = ""; }; 87ED074865B1A0718B5980D1F6B32FD3 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; + 87F772F5D1108D9405EB497FC0F11A66 /* DateAndTimeFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateAndTimeFunctions.swift; path = Sources/SQLite/Typed/DateAndTimeFunctions.swift; sourceTree = ""; }; 89B0CCDB31FD33BDF5CA65821F697C4F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8ECC54F33ED71354DF6CCCBE4668EEC3 /* CoreFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CoreFunctions.swift; path = Sources/SQLite/Typed/CoreFunctions.swift; sourceTree = ""; }; + 8D5D667758C8C5F56F3D2B66A9DA77FE /* SQLite.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-umbrella.h"; sourceTree = ""; }; 9260283D302E99A4DF1407BB314DE094 /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9549FD9572AD09182CBFC5AF4C3806EC /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SDWebImage.modulemap; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9549FD9572AD09182CBFC5AF4C3806EC /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SDWebImage.modulemap; sourceTree = ""; }; 9573161D35C02B33C6AB094C1236CB57 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; 99F8E44ACB5CF087E4BF8F904DE04F47 /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; 9FFDEFB012447BDBE8EEBA4C8646C82A /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; A1CF7D0F0E5A5A95A050C645EA6CDA8D /* Pods-Delta-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Delta-umbrella.h"; sourceTree = ""; }; A23D5152FE861FB5B1D4950073960C6E /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; - A3EA54BEF017871554C81FBD89870EF7 /* SMCalloutView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SMCalloutView.modulemap; sourceTree = ""; }; + A3EA54BEF017871554C81FBD89870EF7 /* SMCalloutView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SMCalloutView.modulemap; sourceTree = ""; }; A8DD6B2CD921B3CD0CC1C8D285C3DB14 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; - AACB33C34A87776F6D89F7C7D999F2FE /* AggregateFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AggregateFunctions.swift; path = Sources/SQLite/Typed/AggregateFunctions.swift; sourceTree = ""; }; - ACB861F144099C23DDBE864FB0C028E4 /* FTS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS5.swift; path = Sources/SQLite/Extensions/FTS5.swift; sourceTree = ""; }; - ACDD71A4691EF17778DC6EACBDAC34F1 /* SQLite.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SQLite.framework; path = SQLite.swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ACDD71A4691EF17778DC6EACBDAC34F1 /* SQLite.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SQLite.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AD2472619402C4FCE3F48DECBBF1B832 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/SQLite/Typed/Expression.swift; sourceTree = ""; }; B02313ED3C98F0D9E8E673D608674FF0 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; - B718D0BB0426AD065EABCA59ABA865E3 /* fts3_tokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fts3_tokenizer.h; path = Sources/SQLiteObjc/fts3_tokenizer.h; sourceTree = ""; }; - B8BC0D2A173827BA1039A7C690560FF3 /* Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helpers.swift; path = Sources/SQLite/Helpers.swift; sourceTree = ""; }; - BA1F09AF89D60F53382DF398D3795D71 /* Pods-Delta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-Delta.modulemap"; sourceTree = ""; }; - BA87BC51ECB890A375E8694685FAE8A7 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - BC2C0F90270E994FEDF6FDB780D88A68 /* Connection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = Sources/SQLite/Core/Connection.swift; sourceTree = ""; }; - BE04DBF47CF0621A6F64E90ECCEC74F2 /* RTree.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RTree.swift; path = Sources/SQLite/Extensions/RTree.swift; sourceTree = ""; }; + BA1F09AF89D60F53382DF398D3795D71 /* Pods-Delta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Delta.modulemap"; sourceTree = ""; }; + BC13A2CB88857A3DE05C855ACAAFD681 /* Blob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blob.swift; path = Sources/SQLite/Core/Blob.swift; sourceTree = ""; }; + BD4B5F5118F37D885793595BBEF3FE62 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/SQLite/Core/Errors.swift; sourceTree = ""; }; BEE873D9C7F8F2001BB54E2DAE25C134 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + BF8D107AB0FD8CC31571E3F4EFD1DCFF /* Query.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Query.swift; path = Sources/SQLite/Typed/Query.swift; sourceTree = ""; }; + C1E33DF619DCACF1C172619230749FD8 /* Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helpers.swift; path = Sources/SQLite/Helpers.swift; sourceTree = ""; }; C43F044D76D5174F1A3472D15441FAC9 /* FileMD5Hash-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FileMD5Hash-umbrella.h"; sourceTree = ""; }; C7966176FA5D69F9D29BD871712BC02C /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; - CC2AEB033F145B0003C677FD35C0CBEE /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/SQLite/Typed/Operators.swift; sourceTree = ""; }; CC448D70D2D84A30A4A4D226A8ABD13F /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; CDB4230F44759F4F6161E3A256B3BB05 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; D1A915C60E1D50527210412A5B4094DD /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - D34C5308CB41A391DE8F14481B181BF8 /* Query.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Query.swift; path = Sources/SQLite/Typed/Query.swift; sourceTree = ""; }; - D6849DCD50DED973B7F32496C8F6CADC /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = Sources/SQLite/Typed/Schema.swift; sourceTree = ""; }; D7D4D4C83D4D81FF7570317D601B83DE /* FileHash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FileHash.m; path = Library/FileHash.m; sourceTree = ""; }; D8C077D2CD74FE7022E6E86BA03B9BAA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; - DCDE2E8B6DB2458ED0D0AEB620C82C33 /* FTS4.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS4.swift; path = Sources/SQLite/Extensions/FTS4.swift; sourceTree = ""; }; + D9F0E29E169056160CBC16EBC538F1BD /* FTS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS5.swift; path = Sources/SQLite/Extensions/FTS5.swift; sourceTree = ""; }; + DDCD815809D81A5711959C3EF15ABE37 /* SQLite-Bridging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SQLite-Bridging.h"; path = "Sources/SQLiteObjc/include/SQLite-Bridging.h"; sourceTree = ""; }; DDE976DADC01C9F233C73181B7C677FA /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; DFB799765277CB092B656E76446C5A75 /* FileMD5Hash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FileMD5Hash.xcconfig; sourceTree = ""; }; + E477F21875ADA4B7C1A276B048E49FCA /* Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Foundation.swift; path = Sources/SQLite/Foundation.swift; sourceTree = ""; }; E52BF635FC2EF1621E67C61344C81C24 /* SMCalloutView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-prefix.pch"; sourceTree = ""; }; E6CB37913B03B0D1D9C660198A0BBFD0 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; EA65B5484E3BB3284577BD4EA4FA7147 /* Pods-Delta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Delta.release.xcconfig"; sourceTree = ""; }; @@ -214,15 +222,13 @@ EBD8E993B110532376D18B7F68AB317A /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; EDB35A7ED3324B1E48397C86891B1362 /* Pods-Delta-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Delta-acknowledgements.plist"; sourceTree = ""; }; F1850435281691489E29EABB9E6D1EE9 /* FileMD5Hash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FileMD5Hash-prefix.pch"; sourceTree = ""; }; - F277C21C6DB430322178CF427005E784 /* SQLite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLite.h; path = Sources/SQLite/SQLite.h; sourceTree = ""; }; F4A02F29281568B9C5A5FDAE342EB996 /* SMCalloutView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-umbrella.h"; sourceTree = ""; }; F715310E4E9F5621B0A1EE26721C2053 /* SMCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = ""; }; F9058D96291772916213F878DBC9D4D1 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; F9B93EC3996C232919BB4F98458C45D5 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; - FA5CE005707B6583BF9CE4DF86B180DC /* Pods_Delta.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Delta.framework; path = "Pods-Delta.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + FA5CE005707B6583BF9CE4DF86B180DC /* Pods_Delta.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Delta.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FA9BCD1E0FC20F3166C12E76650B9006 /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; FC75BF94BACA3E271CFB55F764B1439B /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; - FD521181E9EA6EFB3C5D81835A4D448E /* Collation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collation.swift; path = Sources/SQLite/Typed/Collation.swift; sourceTree = ""; }; FE3498CA7C8E4CDD1E7F0774B8954505 /* FileMD5Hash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FileMD5Hash-dummy.m"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -319,7 +325,6 @@ D7D4D4C83D4D81FF7570317D601B83DE /* FileHash.m */, 06F093DEB80530D69626327B53498E5F /* Support Files */, ); - name = FileMD5Hash; path = FileMD5Hash; sourceTree = ""; }; @@ -331,33 +336,18 @@ name = Frameworks; sourceTree = ""; }; - 47016256D64A5202CF9F095C4DCAA1E0 /* standard */ = { + 4AEE49E68EBF02CC7DFCA37C7B4949CE /* Support Files */ = { isa = PBXGroup; children = ( - AACB33C34A87776F6D89F7C7D999F2FE /* AggregateFunctions.swift */, - 77CAA2EA8CD0D523E4CBE3D20712BE02 /* Blob.swift */, - FD521181E9EA6EFB3C5D81835A4D448E /* Collation.swift */, - BC2C0F90270E994FEDF6FDB780D88A68 /* Connection.swift */, - 8ECC54F33ED71354DF6CCCBE4668EEC3 /* CoreFunctions.swift */, - 19EBBFE10B2645507B0A3F484F55BF94 /* CustomFunctions.swift */, - 624F168E4CA14615A9D78854E7A933D5 /* Expression.swift */, - 2F44A58B8FBEE6A42E7C1709683A11E5 /* Foundation.swift */, - B718D0BB0426AD065EABCA59ABA865E3 /* fts3_tokenizer.h */, - DCDE2E8B6DB2458ED0D0AEB620C82C33 /* FTS4.swift */, - ACB861F144099C23DDBE864FB0C028E4 /* FTS5.swift */, - B8BC0D2A173827BA1039A7C690560FF3 /* Helpers.swift */, - CC2AEB033F145B0003C677FD35C0CBEE /* Operators.swift */, - D34C5308CB41A391DE8F14481B181BF8 /* Query.swift */, - BE04DBF47CF0621A6F64E90ECCEC74F2 /* RTree.swift */, - D6849DCD50DED973B7F32496C8F6CADC /* Schema.swift */, - 652D47B5A7FD5E5026907CC2F6B79153 /* Setter.swift */, - F277C21C6DB430322178CF427005E784 /* SQLite.h */, - 068FC88E6553ADF63F7B7A7EC8A7E159 /* SQLite-Bridging.h */, - 316F67B44DF5AB3889A51771534E09FB /* SQLite-Bridging.m */, - 3A3AE2A19B33430DE7A53B69F388DA5D /* Statement.swift */, - 0EA433B1A2192D12009D581B153C3004 /* Value.swift */, + 56A4DC976BA7F3D768D97E2892BF9921 /* Info.plist */, + 4144DB38E332A91B6D069713AE85CA9B /* SQLite.swift.modulemap */, + 1139D439341C37EB96BC7E48A90BAD34 /* SQLite.swift.xcconfig */, + 1235F5A17D0DD4EC0AD2D22672582DA5 /* SQLite.swift-dummy.m */, + 86BA498830EB51ADEDC937DDFAA4E3D6 /* SQLite.swift-prefix.pch */, + 8D5D667758C8C5F56F3D2B66A9DA77FE /* SQLite.swift-umbrella.h */, ); - name = standard; + name = "Support Files"; + path = "../Target Support Files/SQLite.swift"; sourceTree = ""; }; 531E03EB9BDA837BD15E5CFA33950AA3 /* Fabric */ = { @@ -367,7 +357,6 @@ 9260283D302E99A4DF1407BB314DE094 /* Fabric.h */, 9D50E7E44A83A074A5B27405071C555A /* Frameworks */, ); - name = Fabric; path = Fabric; sourceTree = ""; }; @@ -377,10 +366,18 @@ 96D9DE7FF8E7331E3EF2EBA90FC85661 /* Core */, EF5B18EEB9983E18AAF90F03F5AC0920 /* Support Files */, ); - name = SDWebImage; path = SDWebImage; sourceTree = ""; }; + 642FB49D7D332492EB8A1E85DA527C8D /* SQLite.swift */ = { + isa = PBXGroup; + children = ( + 7179E67470056D0D0709452C84C04005 /* standard */, + 4AEE49E68EBF02CC7DFCA37C7B4949CE /* Support Files */, + ); + path = SQLite.swift; + sourceTree = ""; + }; 6E588658A8888B4B213D36BBF2905D46 /* Products */ = { isa = PBXGroup; children = ( @@ -393,6 +390,38 @@ name = Products; sourceTree = ""; }; + 7179E67470056D0D0709452C84C04005 /* standard */ = { + isa = PBXGroup; + children = ( + 0C1F3D5BCB62B3A3AA33F0B5318C954B /* AggregateFunctions.swift */, + BC13A2CB88857A3DE05C855ACAAFD681 /* Blob.swift */, + 3B772FF2CD1B27DD4BA7BBBCB5323456 /* Coding.swift */, + 579EDE09C2AFB6C42BFC19A2F449884F /* Collation.swift */, + 07004039F06D09685DD871754FF9373E /* Connection.swift */, + 85480F525C5B282EF9EEA86B606F0514 /* CoreFunctions.swift */, + 7CFD86ED37239043D822717C836B4096 /* CustomFunctions.swift */, + 87F772F5D1108D9405EB497FC0F11A66 /* DateAndTimeFunctions.swift */, + BD4B5F5118F37D885793595BBEF3FE62 /* Errors.swift */, + AD2472619402C4FCE3F48DECBBF1B832 /* Expression.swift */, + E477F21875ADA4B7C1A276B048E49FCA /* Foundation.swift */, + 3D80AD2C4486EE72A4FFDA86FC6BCD1C /* fts3_tokenizer.h */, + 5A53E5BCCFF16DD308B1130B5B11971F /* FTS4.swift */, + D9F0E29E169056160CBC16EBC538F1BD /* FTS5.swift */, + C1E33DF619DCACF1C172619230749FD8 /* Helpers.swift */, + 548D52A5CFF8E0AEE731320D3A7424BC /* Operators.swift */, + BF8D107AB0FD8CC31571E3F4EFD1DCFF /* Query.swift */, + 02CB6780A2B665939923D55644234747 /* RTree.swift */, + 7EAF5150B1F1751DB4E090CAD73037EE /* Schema.swift */, + 36D5153C832FA47CE24314740F4636C1 /* Setter.swift */, + 62D28F99B90C42A3A0366B72E2B1B594 /* SQLite.h */, + DDCD815809D81A5711959C3EF15ABE37 /* SQLite-Bridging.h */, + 7CC663225143009C0D31C50E4FD21F74 /* SQLite-Bridging.m */, + 32F77D044B81F32AB9D7E58E85EA1C5F /* Statement.swift */, + 0945A96F1411067E758920A6B3B344D4 /* Value.swift */, + ); + name = standard; + sourceTree = ""; + }; 795312991DF0976E153D01C3DB2D7EFF /* SMCalloutView */ = { isa = PBXGroup; children = ( @@ -402,24 +431,9 @@ 2F3E13029C6A72F6947FCFCDD4DB219D /* SMClassicCalloutView.m */, 85F172A17732362EF6633B33B6123F17 /* Support Files */, ); - name = SMCalloutView; path = SMCalloutView; sourceTree = ""; }; - 7A644872BF34ACF9C88557A1A80046F7 /* Support Files */ = { - isa = PBXGroup; - children = ( - BA87BC51ECB890A375E8694685FAE8A7 /* Info.plist */, - 35F61CA9D7252A9F19BF21470AEF205A /* SQLite.swift.modulemap */, - 2FD50D8325E1E8D2B0953062797E6E02 /* SQLite.swift.xcconfig */, - 2911054ACE98C26AD58D7BD2727E97E5 /* SQLite.swift-dummy.m */, - 297EC254820663D220F6542C0027C9FE /* SQLite.swift-prefix.pch */, - 3F74AD19F091053437017F0F5538899C /* SQLite.swift-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SQLite.swift"; - sourceTree = ""; - }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( @@ -497,16 +511,6 @@ name = Frameworks; sourceTree = ""; }; - A267B4F77F709351A47C49E0765B9726 /* SQLite.swift */ = { - isa = PBXGroup; - children = ( - 47016256D64A5202CF9F095C4DCAA1E0 /* standard */, - 7A644872BF34ACF9C88557A1A80046F7 /* Support Files */, - ); - name = SQLite.swift; - path = SQLite.swift; - sourceTree = ""; - }; B2C53D5F4CD7C3A5EA2C240CFAEC0936 /* Pods */ = { isa = PBXGroup; children = ( @@ -515,7 +519,7 @@ 331CA75B5D0363D2AF243E44D661F9A3 /* FileMD5Hash */, 5427BBB5C33A290393604304A6049893 /* SDWebImage */, 795312991DF0976E153D01C3DB2D7EFF /* SMCalloutView */, - A267B4F77F709351A47C49E0765B9726 /* SQLite.swift */, + 642FB49D7D332492EB8A1E85DA527C8D /* SQLite.swift */, ); name = Pods; sourceTree = ""; @@ -532,7 +536,6 @@ F9B93EC3996C232919BB4F98458C45D5 /* Crashlytics.h */, EFCB351B3EEC448C22F06D7285DE95E6 /* Frameworks */, ); - name = Crashlytics; path = Crashlytics; sourceTree = ""; }; @@ -684,7 +687,7 @@ isa = PBXNativeTarget; buildConfigurationList = 668A24D62570C0D022FAD98278F67B72 /* Build configuration list for PBXNativeTarget "SQLite.swift" */; buildPhases = ( - B722D46C99854F66A3C53AFC7A1D7F65 /* Sources */, + 3EB6A6CF70C75C8E82E836F84AD13EFA /* Sources */, 6A87A94DB2110DBC645F09B6863C840A /* Frameworks */, 9E79C31AF032218761B7231BED8BA825 /* Headers */, ); @@ -721,7 +724,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0910; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -745,6 +748,36 @@ /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ + 3EB6A6CF70C75C8E82E836F84AD13EFA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5378E66F36C92CCCFFD4F95053426CA2 /* AggregateFunctions.swift in Sources */, + D4291536C582A6ADAC6F18F7D8179876 /* Blob.swift in Sources */, + D2B6204B0FDB37AE2282418510B5DC90 /* Coding.swift in Sources */, + D5BFFB0A8A27452013266BFFC8DB1DBF /* Collation.swift in Sources */, + F608A0FA0233A07E7B7085294F183823 /* Connection.swift in Sources */, + E2280C9C262A949A476A9EAC56214884 /* CoreFunctions.swift in Sources */, + E7479C47D52374BB8E42CC5698D76981 /* CustomFunctions.swift in Sources */, + E93FFD6F5E098B71ECBBACD79E1560EC /* DateAndTimeFunctions.swift in Sources */, + 2364CBBEE6A7320F676CF8D8F4541DED /* Errors.swift in Sources */, + 406D94A47FC41812A1A1F45997B699AA /* Expression.swift in Sources */, + A81EF80FB896476F7D27B1EE45FF4D7E /* Foundation.swift in Sources */, + 1150C57CFCC34F769A6B3A9A957FCE1E /* FTS4.swift in Sources */, + 38ED2874ACF9C288331E3707699DC9C2 /* FTS5.swift in Sources */, + 425BDD464654D6CFE022E233C1229E95 /* Helpers.swift in Sources */, + 1DCE10EE2CBF5007B2BA3E4BE0465891 /* Operators.swift in Sources */, + 8408E852421C1BE1E32DF2E314EC8E43 /* Query.swift in Sources */, + 711CA407D0376A72931BDF50AF5979F9 /* RTree.swift in Sources */, + 8F0F89B097957C37D6E53A6E0623D08D /* Schema.swift in Sources */, + AEB1C8816D845293F320C53668E56595 /* Setter.swift in Sources */, + 6E0EAEAD314BD406BDF642C954F224A9 /* SQLite-Bridging.m in Sources */, + 7321CB11628493652E10C9FF47B1E3CE /* SQLite.swift-dummy.m in Sources */, + BBCBA2E5DAC6C3BD2404A5628A0AB512 /* Statement.swift in Sources */, + 6C5BAD8632B93F8B791FC5C97AE17C15 /* Value.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 83F4AE4AB580D4EFA51C6D39F76BD923 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -785,33 +818,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B722D46C99854F66A3C53AFC7A1D7F65 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D1AB6379EC7678A60E7A342E19CD7463 /* AggregateFunctions.swift in Sources */, - AB4F3A463C806CFD7BD412DC96CCA6FF /* Blob.swift in Sources */, - FD11B32C2CBEDD81033179121AAB5D2D /* Collation.swift in Sources */, - BC7F01C05460B87B4BD3597D8CFEDDD0 /* Connection.swift in Sources */, - 7BC82A3FB797473493834376FB76E54E /* CoreFunctions.swift in Sources */, - 14D45BB06714ADAB897AC0F9F5DEEB35 /* CustomFunctions.swift in Sources */, - B5C757D4F5CE144EBC972BC0EDA42EBC /* Expression.swift in Sources */, - 1C5A988FA0C3F4E0F3D81AC3C597B9E8 /* Foundation.swift in Sources */, - 483BC893AE648B89F28763CC2FE1932A /* FTS4.swift in Sources */, - FDEAC6DF3D7044CA7FDD15A185183C2C /* FTS5.swift in Sources */, - 0A108DF7E6F55085A67FC6E0FF9D597B /* Helpers.swift in Sources */, - D5F611A196AB19B6B27BC91E0F7CDF98 /* Operators.swift in Sources */, - DC0D674B7D20F83A7A5BAEEE4F00AFB5 /* Query.swift in Sources */, - 5EBA645F49A7944F9D5DE1DE7214B16C /* RTree.swift in Sources */, - 405F2E285A1E5033E75EA989DCE7F1BD /* Schema.swift in Sources */, - 69E9B37E0394A6C87B37648633198916 /* Setter.swift in Sources */, - E70CE29F92FC143D25EBAB0AA0FF7847 /* SQLite-Bridging.m in Sources */, - 02A3EAB09395DB7996C6A2D6FFEEA541 /* SQLite.swift-dummy.m in Sources */, - F76BA2CF262298B5E751146776A25CB2 /* Statement.swift in Sources */, - 65C3F0B49DCF090CFC1A57B581B7D5EE /* Value.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; E0510949C78B61F874029F31A85EB896 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -851,9 +857,9 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0D2198DAA52D58080E95DBD3D8992214 /* Debug */ = { + 1B44B1BF03D632C0068C58FAC03F1357 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 061C525038BE58FCE9A6013CBA4162B5 /* SMCalloutView.xcconfig */; + baseConfigurationReference = DFB799765277CB092B656E76446C5A75 /* FileMD5Hash.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -867,17 +873,17 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SMCalloutView/SMCalloutView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SMCalloutView/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/FileMD5Hash/FileMD5Hash-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/FileMD5Hash/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SMCalloutView/SMCalloutView.modulemap"; + MODULEMAP_FILE = "Target Support Files/FileMD5Hash/FileMD5Hash.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SMCalloutView; + PRODUCT_NAME = FileMD5Hash; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -922,43 +928,9 @@ }; name = Release; }; - 32CD4441BC4925087C9B9D2D64782195 /* Release */ = { + 2C31D69ABFA4B7F5C89129C61741805C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2FD50D8325E1E8D2B0953062797E6E02 /* SQLite.swift.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SQLite.swift/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SQLite.swift/SQLite.swift.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SQLite; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 435F325F37C4CB44C79CC5FF7289A36D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2FD50D8325E1E8D2B0953062797E6E02 /* SQLite.swift.xcconfig */; + baseConfigurationReference = CC448D70D2D84A30A4A4D226A8ABD13F /* SDWebImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -972,19 +944,17 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SQLite.swift/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SDWebImage/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SQLite.swift/SQLite.swift.modulemap"; + MODULEMAP_FILE = "Target Support Files/SDWebImage/SDWebImage.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SQLite; + PRODUCT_NAME = SDWebImage; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1001,7 +971,9 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; 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_DIRECT_OBJC_ISA_USAGE = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1009,15 +981,21 @@ 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_OBJC_ROOT_CLASS = 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; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_DEBUG=1", @@ -1039,7 +1017,73 @@ }; name = Debug; }; - 90407854EE6F767B6B23052DB718601F /* Release */ = { + 74A47D0F220DFB19B577E2691188FA2A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DFB799765277CB092B656E76446C5A75 /* FileMD5Hash.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/FileMD5Hash/FileMD5Hash-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/FileMD5Hash/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/FileMD5Hash/FileMD5Hash.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = FileMD5Hash; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8AE307153D8088BAC8D8FD071BFEDC00 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 061C525038BE58FCE9A6013CBA4162B5 /* SMCalloutView.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/SMCalloutView/SMCalloutView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SMCalloutView/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SMCalloutView/SMCalloutView.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = SMCalloutView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 8F0F2A3A08EEBADC27F8A52324D49467 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 061C525038BE58FCE9A6013CBA4162B5 /* SMCalloutView.xcconfig */; buildSettings = { @@ -1065,78 +1109,47 @@ PRODUCT_NAME = SMCalloutView; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 94B2E36B9D50BB1F23C442EECC3A98DE /* Release */ = { + 9E691F7751DB4F8128A08C1C3226B961 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CC448D70D2D84A30A4A4D226A8ABD13F /* SDWebImage.xcconfig */; + baseConfigurationReference = 1139D439341C37EB96BC7E48A90BAD34 /* SQLite.swift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SDWebImage/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SQLite.swift/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SDWebImage/SDWebImage.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SDWebImage; + MODULEMAP_FILE = "Target Support Files/SQLite.swift/SQLite.swift.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = SQLite; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; - }; - 9ED0ADE0EA3D1E3B4EA7EFBE25BB4D6F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DFB799765277CB092B656E76446C5A75 /* FileMD5Hash.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FileMD5Hash/FileMD5Hash-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FileMD5Hash/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FileMD5Hash/FileMD5Hash.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = FileMD5Hash; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; + name = Debug; }; C03B8870130C98D1B02B59D003687524 /* Release */ = { isa = XCBuildConfiguration; @@ -1148,7 +1161,9 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; 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_DIRECT_OBJC_ISA_USAGE = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -1156,14 +1171,20 @@ 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_OBJC_ROOT_CLASS = 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; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "POD_CONFIGURATION_RELEASE=1", "$(inherited)", @@ -1177,77 +1198,12 @@ IPHONEOS_DEPLOYMENT_TARGET = 10.0; PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SYMROOT = "${SRCROOT}/../build"; VALIDATE_PRODUCT = YES; }; name = Release; }; - C955FC7239704D1450516B7FD0992E76 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CC448D70D2D84A30A4A4D226A8ABD13F /* SDWebImage.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SDWebImage/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SDWebImage/SDWebImage.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - D49B8E408047BA5314BE2727D48E1834 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DFB799765277CB092B656E76446C5A75 /* FileMD5Hash.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FileMD5Hash/FileMD5Hash-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FileMD5Hash/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FileMD5Hash/FileMD5Hash.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = FileMD5Hash; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; DC6449F204C483A3EC3E347DD20187E8 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1C3BA8511D0F025064897F6EC408296A /* Pods-Delta.debug.xcconfig */; @@ -1287,14 +1243,81 @@ }; name = Debug; }; + E957D1AB3BBDFCB34BDE5B889C0504A4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CC448D70D2D84A30A4A4D226A8ABD13F /* SDWebImage.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SDWebImage/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SDWebImage/SDWebImage.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = SDWebImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + FD3646A686FD0F45448A0DC78390B092 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1139D439341C37EB96BC7E48A90BAD34 /* SQLite.swift.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SQLite.swift/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SQLite.swift/SQLite.swift.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = SQLite; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 004E731E53979ED2864268A8A0D2BFBE /* Build configuration list for PBXNativeTarget "FileMD5Hash" */ = { isa = XCConfigurationList; buildConfigurations = ( - D49B8E408047BA5314BE2727D48E1834 /* Debug */, - 9ED0ADE0EA3D1E3B4EA7EFBE25BB4D6F /* Release */, + 1B44B1BF03D632C0068C58FAC03F1357 /* Debug */, + 74A47D0F220DFB19B577E2691188FA2A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1311,8 +1334,8 @@ 336350D22A1C45232C1FDF436E1FEBA2 /* Build configuration list for PBXNativeTarget "SDWebImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - C955FC7239704D1450516B7FD0992E76 /* Debug */, - 94B2E36B9D50BB1F23C442EECC3A98DE /* Release */, + 2C31D69ABFA4B7F5C89129C61741805C /* Debug */, + E957D1AB3BBDFCB34BDE5B889C0504A4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1320,8 +1343,8 @@ 668A24D62570C0D022FAD98278F67B72 /* Build configuration list for PBXNativeTarget "SQLite.swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 435F325F37C4CB44C79CC5FF7289A36D /* Debug */, - 32CD4441BC4925087C9B9D2D64782195 /* Release */, + 9E691F7751DB4F8128A08C1C3226B961 /* Debug */, + FD3646A686FD0F45448A0DC78390B092 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1338,8 +1361,8 @@ F8D4561891ACE1BC67CEB8D0C6F063E4 /* Build configuration list for PBXNativeTarget "SMCalloutView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0D2198DAA52D58080E95DBD3D8992214 /* Debug */, - 90407854EE6F767B6B23052DB718601F /* Release */, + 8AE307153D8088BAC8D8FD071BFEDC00 /* Debug */, + 8F0F2A3A08EEBADC27F8A52324D49467 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/SQLite.swift/CocoaPods/appletvos/module.modulemap b/Pods/SQLite.swift/CocoaPods/appletvos/module.modulemap deleted file mode 100644 index 637d993..0000000 --- a/Pods/SQLite.swift/CocoaPods/appletvos/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/appletvsimulator/module.modulemap b/Pods/SQLite.swift/CocoaPods/appletvsimulator/module.modulemap deleted file mode 100644 index f8b9b67..0000000 --- a/Pods/SQLite.swift/CocoaPods/appletvsimulator/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/iphoneos-10.0/module.modulemap b/Pods/SQLite.swift/CocoaPods/iphoneos-10.0/module.modulemap deleted file mode 100644 index 67a6c20..0000000 --- a/Pods/SQLite.swift/CocoaPods/iphoneos-10.0/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/iphoneos/module.modulemap b/Pods/SQLite.swift/CocoaPods/iphoneos/module.modulemap deleted file mode 100644 index 043db6c..0000000 --- a/Pods/SQLite.swift/CocoaPods/iphoneos/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/iphonesimulator-10.0/module.modulemap b/Pods/SQLite.swift/CocoaPods/iphonesimulator-10.0/module.modulemap deleted file mode 100644 index c8b84ab..0000000 --- a/Pods/SQLite.swift/CocoaPods/iphonesimulator-10.0/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.0.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/iphonesimulator/module.modulemap b/Pods/SQLite.swift/CocoaPods/iphonesimulator/module.modulemap deleted file mode 100644 index a7b14cb..0000000 --- a/Pods/SQLite.swift/CocoaPods/iphonesimulator/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/macosx-10.11/module.modulemap b/Pods/SQLite.swift/CocoaPods/macosx-10.11/module.modulemap deleted file mode 100644 index 9e09129..0000000 --- a/Pods/SQLite.swift/CocoaPods/macosx-10.11/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/macosx-10.12/module.modulemap b/Pods/SQLite.swift/CocoaPods/macosx-10.12/module.modulemap deleted file mode 100644 index 8fc958e..0000000 --- a/Pods/SQLite.swift/CocoaPods/macosx-10.12/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/macosx/module.modulemap b/Pods/SQLite.swift/CocoaPods/macosx/module.modulemap deleted file mode 100644 index cc8370e..0000000 --- a/Pods/SQLite.swift/CocoaPods/macosx/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/watchos/module.modulemap b/Pods/SQLite.swift/CocoaPods/watchos/module.modulemap deleted file mode 100644 index 62a6c4e..0000000 --- a/Pods/SQLite.swift/CocoaPods/watchos/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/CocoaPods/watchsimulator/module.modulemap b/Pods/SQLite.swift/CocoaPods/watchsimulator/module.modulemap deleted file mode 100644 index 086fbab..0000000 --- a/Pods/SQLite.swift/CocoaPods/watchsimulator/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -module CSQLite [system] { - header "/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include/sqlite3.h" - export * -} diff --git a/Pods/SQLite.swift/README.md b/Pods/SQLite.swift/README.md index a7fe608..3900c0a 100644 --- a/Pods/SQLite.swift/README.md +++ b/Pods/SQLite.swift/README.md @@ -1,19 +1,12 @@ # SQLite.swift -[![Build Status][Badge]][Travis] [![CocoaPods Version](https://cocoapod-badges.herokuapp.com/v/SQLite.swift/badge.png)](http://cocoadocs.org/docsets/SQLite.swift) [![Swift](https://img.shields.io/badge/swift-3-orange.svg?style=flat)](https://developer.apple.com/swift/) [![Platform](https://cocoapod-badges.herokuapp.com/p/SQLite.swift/badge.png)](http://cocoadocs.org/docsets/SQLite.swift) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Join the chat at https://gitter.im/stephencelis/SQLite.swift](https://badges.gitter.im/stephencelis/SQLite.swift.svg)](https://gitter.im/stephencelis/SQLite.swift) +[![Build Status][TravisBadge]][TravisLink] [![CocoaPods Version][CocoaPodsVersionBadge]][CocoaPodsVersionLink] [![Swift4 compatible][Swift4Badge]][Swift4Link] [![Platform][PlatformBadge]][PlatformLink] [![Carthage compatible][CartagheBadge]][CarthageLink] [![Join the chat at https://gitter.im/stephencelis/SQLite.swift][GitterBadge]][GitterLink] A type-safe, [Swift][]-language layer over [SQLite3][]. [SQLite.swift][] provides compile-time confidence in SQL statement syntax _and_ intent. -[Badge]: https://img.shields.io/travis/stephencelis/SQLite.swift/master.svg?style=flat -[Travis]: https://travis-ci.org/stephencelis/SQLite.swift -[Swift]: https://developer.apple.com/swift/ -[SQLite3]: http://www.sqlite.org -[SQLite.swift]: https://github.com/stephencelis/SQLite.swift - - ## Features - A pure-Swift interface @@ -25,16 +18,20 @@ syntax _and_ intent. - [Full-text search][] support - [Well-documented][See Documentation] - Extensively tested - - SQLCipher support via CocoaPods - - Active support at [StackOverflow](http://stackoverflow.com/questions/tagged/sqlite.swift), and [Gitter Chat Room](https://gitter.im/stephencelis/SQLite.swift) (_experimental_) + - [SQLCipher][] support via CocoaPods + - Active support at + [StackOverflow](http://stackoverflow.com/questions/tagged/sqlite.swift), + and [Gitter Chat Room](https://gitter.im/stephencelis/SQLite.swift) + (_experimental_) +[SQLCipher]: https://www.zetetic.net/sqlcipher/ [Full-text search]: Documentation/Index.md#full-text-search [See Documentation]: Documentation/Index.md#sqliteswift-documentation ## Usage -``` swift +```swift import SQLite let db = try Connection("path/to/db.sqlite3") @@ -74,14 +71,14 @@ try db.run(alice.update(email <- email.replace("mac.com", with: "me.com"))) try db.run(alice.delete()) // DELETE FROM "users" WHERE ("id" = 1) -db.scalar(users.count) // 0 +try db.scalar(users.count) // 0 // SELECT count(*) FROM "users" ``` SQLite.swift also works as a lightweight, Swift-friendly wrapper over the C API. -``` swift +```swift let stmt = try db.prepare("INSERT INTO users (email) VALUES (?)") for email in ["betty@icloud.com", "cathy@icloud.com"] { try stmt.run(email) @@ -97,7 +94,7 @@ for row in try db.prepare("SELECT id, email FROM users") { // id: Optional(3), email: Optional("cathy@icloud.com") } -db.scalar("SELECT count(*) FROM users") // 2 +try db.scalar("SELECT count(*) FROM users") // 2 ``` [Read the documentation][See Documentation] or explore more, @@ -105,13 +102,17 @@ interactively, from the Xcode project’s playground. ![SQLite.playground Screen Shot](Documentation/Resources/playground@2x.png) -For a more comprehensive example, see [this article](http://masteringswift.blogspot.com/2015/09/create-data-access-layer-with.html) and the [companion repository](https://github.com/hoffmanjon/SQLiteDataAccessLayer2/tree/master). +For a more comprehensive example, see +[this article][Create a Data Access Layer with SQLite.swift and Swift 2] +and the [companion repository][SQLiteDataAccessLayer2]. + + +[Create a Data Access Layer with SQLite.swift and Swift 2]: http://masteringswift.blogspot.com/2015/09/create-data-access-layer-with.html +[SQLiteDataAccessLayer2]: https://github.com/hoffmanjon/SQLiteDataAccessLayer2/tree/master ## Installation -> _Note:_ SQLite.swift requires Swift 3 (and [Xcode][] 8) or greater. If you absolutely -> need compatibility with Swift 2.3 you can use the [swift-2.3][] branch or older -> released versions. New development will happen exclusively on the master/Swift 3 branch. +> _Note:_ SQLite.swift requires Swift 4 (and [Xcode][] 9). ### Carthage @@ -122,11 +123,12 @@ install SQLite.swift with Carthage: 2. Update your Cartfile to include the following: - ``` - github "stephencelis/SQLite.swift" ~> 0.11.3 + ```ruby + github "stephencelis/SQLite.swift" ~> 0.11.4 ``` - 3. Run `carthage update` and [add the appropriate framework][Carthage Usage]. + 3. Run `carthage update` and + [add the appropriate framework][Carthage Usage]. [Carthage]: https://github.com/Carthage/Carthage @@ -139,51 +141,47 @@ install SQLite.swift with Carthage: [CocoaPods][] is a dependency manager for Cocoa projects. To install SQLite.swift with CocoaPods: - 1. Verify that your copy of Xcode is installed and active in the default location (`/Applications/Xcode.app`). + 1. Make sure CocoaPods is [installed][CocoaPods Installation]. (SQLite.swift + requires version 1.0.0 or greater.) ```sh - sudo xcode-select --switch /Applications/Xcode.app - ``` - - 2. Make sure CocoaPods is [installed][CocoaPods Installation]. (SQLite.swift requires version 1.0.0 or greater.) - - ``` sh # Using the default Ruby install will require you to use sudo when # installing and updating gems. [sudo] gem install cocoapods ``` - 3. Update your Podfile to include the following: + 2. Update your Podfile to include the following: - ``` ruby + ```ruby use_frameworks! target 'YourAppTargetName' do - pod 'SQLite.swift', '~> 0.11.3' + pod 'SQLite.swift', '~> 0.11.4' end ``` - 4. Run `pod install --repo-update`. + 3. Run `pod install --repo-update`. [CocoaPods]: https://cocoapods.org [CocoaPods Installation]: https://guides.cocoapods.org/using/getting-started.html#getting-started ### Swift Package Manager -The [Swift Package Manager][] is a tool for managing the distribution of Swift code. +The [Swift Package Manager][] is a tool for managing the distribution of +Swift code. 1. Add the following to your `Package.swift` file: ```swift dependencies: [ - .Package(url: "https://github.com/stephencelis/SQLite.swift.git", majorVersion: 0, minor: 11) + .package(url: "https://github.com/stephencelis/SQLite.swift.git", from: "0.11.4") ] ``` 2. Build your project: - ``` sh - $ swift build -Xlinker -lsqlite3 + ```sh + $ swift build ``` [Swift Package Manager]: https://swift.org/package-manager @@ -204,9 +202,11 @@ To install SQLite.swift as an Xcode sub-project: 4. **Add**. -Some additional steps are required to install the application on an actual device: +Some additional steps are required to install the application on an actual +device: - 5. In the **General** tab, click the **+** button under **Embedded Binaries**. + 5. In the **General** tab, click the **+** button under **Embedded + Binaries**. 6. Select the appropriate **SQLite.framework** for your platform. @@ -251,7 +251,8 @@ file](./LICENSE.txt) for more information. These projects enhance or use SQLite.swift: - - [SQLiteMigrationManager.swift](https://github.com/garriguv/SQLiteMigrationManager.swift) (inspired by [FMDBMigrationManager](https://github.com/layerhq/FMDBMigrationManager)) + - [SQLiteMigrationManager.swift][] (inspired by + [FMDBMigrationManager][]) ## Alternatives @@ -265,5 +266,28 @@ Looking for something else? Try another Swift wrapper (or [FMDB][]): - [SwiftData](https://github.com/ryanfowler/SwiftData) - [SwiftSQLite](https://github.com/chrismsimpson/SwiftSQLite) +[Swift]: https://swift.org/ +[SQLite3]: http://www.sqlite.org +[SQLite.swift]: https://github.com/stephencelis/SQLite.swift + +[TravisBadge]: https://img.shields.io/travis/stephencelis/SQLite.swift/master.svg?style=flat +[TravisLink]: https://travis-ci.org/stephencelis/SQLite.swift + +[CocoaPodsVersionBadge]: https://cocoapod-badges.herokuapp.com/v/SQLite.swift/badge.png +[CocoaPodsVersionLink]: http://cocoadocs.org/docsets/SQLite.swift + +[PlatformBadge]: https://cocoapod-badges.herokuapp.com/p/SQLite.swift/badge.png +[PlatformLink]: http://cocoadocs.org/docsets/SQLite.swift + +[CartagheBadge]: https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat +[CarthageLink]: https://github.com/Carthage/Carthage + +[GitterBadge]: https://badges.gitter.im/stephencelis/SQLite.swift.svg +[GitterLink]: https://gitter.im/stephencelis/SQLite.swift + +[Swift4Badge]: https://img.shields.io/badge/swift-4-orange.svg?style=flat +[Swift4Link]: https://developer.apple.com/swift/ + +[SQLiteMigrationManager.swift]: https://github.com/garriguv/SQLiteMigrationManager.swift [FMDB]: https://github.com/ccgus/fmdb -[swift-2.3]: https://github.com/stephencelis/SQLite.swift/tree/swift-2.3 +[FMDBMigrationManager]: https://github.com/layerhq/FMDBMigrationManager diff --git a/Pods/SQLite.swift/Sources/SQLite/Core/Connection.swift b/Pods/SQLite.swift/Sources/SQLite/Core/Connection.swift index 3f79258..f751311 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Core/Connection.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Core/Connection.swift @@ -22,13 +22,15 @@ // THE SOFTWARE. // -import Foundation.NSUUID +import Foundation import Dispatch #if SQLITE_SWIFT_STANDALONE import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher -#elseif SWIFT_PACKAGE || COCOAPODS +#elseif os(Linux) +import CSQLite +#else import SQLite3 #endif @@ -38,12 +40,12 @@ public final class Connection { /// The location of a SQLite database. public enum Location { - /// An in-memory database (equivalent to `.URI(":memory:")`). + /// An in-memory database (equivalent to `.uri(":memory:")`). /// /// See: case inMemory - /// A temporary, file-backed database (equivalent to `.URI("")`). + /// A temporary, file-backed database (equivalent to `.uri("")`). /// /// See: case temporary @@ -93,7 +95,7 @@ public final class Connection { /// - location: The location of the database. Creates a new database if it /// doesn’t already exist (unless in read-only mode). /// - /// Default: `.InMemory`. + /// Default: `.inMemory`. /// /// - readonly: Whether or not to open the database in a read-only state. /// @@ -321,14 +323,14 @@ public final class Connection { /// /// - mode: The mode in which a transaction acquires a lock. /// - /// Default: `.Deferred` + /// Default: `.deferred` /// /// - block: A closure to run SQL statements within the transaction. /// The transaction will be committed when the block returns. The block /// must throw to roll the transaction back. /// /// - Throws: `Result.Error`, and rethrows. - public func transaction(_ mode: TransactionMode = .deferred, block: @escaping () throws -> Void) throws { + public func transaction(_ mode: TransactionMode = .deferred, block: () throws -> Void) throws { try transaction("BEGIN \(mode.rawValue) TRANSACTION", block, "COMMIT TRANSACTION", or: "ROLLBACK TRANSACTION") } @@ -348,23 +350,23 @@ public final class Connection { /// The block must throw to roll the savepoint back. /// /// - Throws: `SQLite.Result.Error`, and rethrows. - public func savepoint(_ name: String = UUID().uuidString, block: @escaping () throws -> Void) throws { + public func savepoint(_ name: String = UUID().uuidString, block: () throws -> Void) throws { let name = name.quote("'") let savepoint = "SAVEPOINT \(name)" try transaction(savepoint, block, "RELEASE \(savepoint)", or: "ROLLBACK TO \(savepoint)") } - fileprivate func transaction(_ begin: String, _ block: @escaping () throws -> Void, _ commit: String, or rollback: String) throws { + fileprivate func transaction(_ begin: String, _ block: () throws -> Void, _ commit: String, or rollback: String) throws { return try sync { try self.run(begin) do { try block() + try self.run(commit) } catch { try self.run(rollback) throw error } - try self.run(commit) } } @@ -413,7 +415,7 @@ public final class Connection { /// /// db.trace { SQL in print(SQL) } public func trace(_ callback: ((String) -> Void)?) { - #if SQLITE_SWIFT_SQLCIPHER + #if SQLITE_SWIFT_SQLCIPHER || os(Linux) trace_v1(callback) #else if #available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) { @@ -583,9 +585,11 @@ public final class Connection { } } var flags = SQLITE_UTF8 + #if !os(Linux) if deterministic { flags |= SQLITE_DETERMINISTIC } + #endif sqlite3_create_function_v2(handle, function, Int32(argc), flags, unsafeBitCast(box, to: UnsafeMutableRawPointer.self), { context, argc, value in let function = unsafeBitCast(sqlite3_user_data(context), to: Function.self) function(context, argc, value) @@ -626,29 +630,12 @@ public final class Connection { // MARK: - Error Handling - func sync(_ block: @escaping () throws -> T) rethrows -> T { - var success: T? - var failure: Error? - - let box: () -> Void = { - do { - success = try block() - } catch { - failure = error - } - } - + func sync(_ block: () throws -> T) rethrows -> T { if DispatchQueue.getSpecific(key: Connection.queueKey) == queueContext { - box() + return try block() } else { - queue.sync(execute: box) // FIXME: rdar://problem/21389236 + return try queue.sync(execute: block) } - - if let failure = failure { - try { () -> Void in throw failure }() - } - - return success! } @discardableResult func check(_ resultCode: Int32, statement: Statement? = nil) throws -> Int32 { @@ -694,6 +681,13 @@ public enum Result : Error { fileprivate static let successCodes: Set = [SQLITE_OK, SQLITE_ROW, SQLITE_DONE] + /// Represents a SQLite specific [error code](https://sqlite.org/rescode.html) + /// + /// - message: English-language text that describes the error + /// + /// - code: SQLite [error code](https://sqlite.org/rescode.html#primary_result_code_list) + /// + /// - statement: the statement which produced the error case error(message: String, code: Int32, statement: Statement?) init?(errorCode: Int32, connection: Connection, statement: Statement? = nil) { @@ -719,7 +713,7 @@ extension Result : CustomStringConvertible { } } -#if !SQLITE_SWIFT_SQLCIPHER +#if !SQLITE_SWIFT_SQLCIPHER && !os(Linux) @available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) extension Connection { fileprivate func trace_v2(_ callback: ((String) -> Void)?) { diff --git a/Pods/SQLite.swift/Sources/SQLite/Core/Errors.swift b/Pods/SQLite.swift/Sources/SQLite/Core/Errors.swift new file mode 100644 index 0000000..3cd7ae9 --- /dev/null +++ b/Pods/SQLite.swift/Sources/SQLite/Core/Errors.swift @@ -0,0 +1,21 @@ +import Foundation + +public enum QueryError: Error, CustomStringConvertible { + case noSuchTable(name: String) + case noSuchColumn(name: String, columns: [String]) + case ambiguousColumn(name: String, similar: [String]) + case unexpectedNullValue(name: String) + + public var description: String { + switch self { + case .noSuchTable(let name): + return "No such table: \(name)" + case .noSuchColumn(let name, let columns): + return "No such column `\(name)` in columns \(columns)" + case .ambiguousColumn(let name, let similar): + return "Ambiguous column `\(name)` (please disambiguate: \(similar))" + case .unexpectedNullValue(let name): + return "Unexpected null value for column `\(name)`" + } + } +} diff --git a/Pods/SQLite.swift/Sources/SQLite/Core/Statement.swift b/Pods/SQLite.swift/Sources/SQLite/Core/Statement.swift index 8c13ff6..dc91d3d 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Core/Statement.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Core/Statement.swift @@ -26,7 +26,9 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher -#elseif SWIFT_PACKAGE || COCOAPODS +#elseif os(Linux) +import CSQLite +#else import SQLite3 #endif @@ -200,12 +202,30 @@ extension Statement : Sequence { } -extension Statement : IteratorProtocol { +public protocol FailableIterator : IteratorProtocol { + func failableNext() throws -> Self.Element? +} - public func next() -> [Binding?]? { - return try! step() ? Array(row) : nil +extension FailableIterator { + public func next() -> Element? { + return try! failableNext() } +} +extension Array { + public init(_ failableIterator: I) throws where I.Element == Element { + self.init() + while let row = try failableIterator.failableNext() { + append(row) + } + } +} + +extension Statement : FailableIterator { + public typealias Element = [Binding?] + public func failableNext() throws -> [Binding?]? { + return try step() ? Array(row) : nil + } } extension Statement : CustomStringConvertible { diff --git a/Pods/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift b/Pods/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift index 3f28d33..5ef84dd 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift @@ -151,13 +151,18 @@ extension Connection { guard let (token, range) = next(string) else { return nil } - let view = string.utf8 - offset.pointee += Int32(string.substring(to: range.lowerBound).utf8.count) - length.pointee = Int32(view.distance(from: range.lowerBound.samePosition(in: view), to: range.upperBound.samePosition(in: view))) - return token + let view:String.UTF8View = string.utf8 + + if let from = range.lowerBound.samePosition(in: view), + let to = range.upperBound.samePosition(in: view) { + offset.pointee += Int32(string[string.startIndex..… - -extension QueryType { - - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { - return namespace(column) - } - - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { - return namespace(column) - } - -} - -extension Row { - - public subscript(column: Expression) -> Data { - return get(column) - } - public subscript(column: Expression) -> Data? { - return get(column) - } - - public subscript(column: Expression) -> Date { - return get(column) - } - public subscript(column: Expression) -> Date? { - return get(column) - } - -} diff --git a/Pods/SQLite.swift/Sources/SQLite/Helpers.swift b/Pods/SQLite.swift/Sources/SQLite/Helpers.swift index 52b158b..64e5eca 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Helpers.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Helpers.swift @@ -26,7 +26,9 @@ import sqlite3 #elseif SQLITE_SWIFT_SQLCIPHER import SQLCipher -#elseif SWIFT_PACKAGE || COCOAPODS +#elseif os(Linux) +import CSQLite +#else import SQLite3 #endif diff --git a/Pods/SQLite.swift/Sources/SQLite/Typed/Coding.swift b/Pods/SQLite.swift/Sources/SQLite/Typed/Coding.swift new file mode 100644 index 0000000..dd6a4ec --- /dev/null +++ b/Pods/SQLite.swift/Sources/SQLite/Typed/Coding.swift @@ -0,0 +1,340 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import Foundation + +extension QueryType { + /// Creates an `INSERT` statement by encoding the given object + /// This method converts any custom nested types to JSON data and does not handle any sort + /// of object relationships. If you want to support relationships between objects you will + /// have to provide your own Encodable implementations that encode the correct ids. + /// + /// - Parameters: + /// + /// - encodable: An encodable object to insert + /// + /// - userInfo: User info to be passed to encoder + /// + /// - otherSetters: Any other setters to include in the insert + /// + /// - Returns: An `INSERT` statement fort the encodable object + public func insert(_ encodable: Encodable, userInfo: [CodingUserInfoKey:Any] = [:], otherSetters: [Setter] = []) throws -> Insert { + let encoder = SQLiteEncoder(userInfo: userInfo) + try encodable.encode(to: encoder) + return self.insert(encoder.setters + otherSetters) + } + + /// Creates an `UPDATE` statement by encoding the given object + /// This method converts any custom nested types to JSON data and does not handle any sort + /// of object relationships. If you want to support relationships between objects you will + /// have to provide your own Encodable implementations that encode the correct ids. + /// + /// - Parameters: + /// + /// - encodable: An encodable object to insert + /// + /// - userInfo: User info to be passed to encoder + /// + /// - otherSetters: Any other setters to include in the insert + /// + /// - Returns: An `UPDATE` statement fort the encodable object + public func update(_ encodable: Encodable, userInfo: [CodingUserInfoKey:Any] = [:], otherSetters: [Setter] = []) throws -> Update { + let encoder = SQLiteEncoder(userInfo: userInfo) + try encodable.encode(to: encoder) + return self.update(encoder.setters + otherSetters) + } +} + +extension Row { + /// Decode an object from this row + /// This method expects any custom nested types to be in the form of JSON data and does not handle + /// any sort of object relationships. If you want to support relationships between objects you will + /// have to provide your own Decodable implementations that decodes the correct columns. + /// + /// - Parameter: userInfo + /// + /// - Returns: a decoded object from this row + public func decode(userInfo: [CodingUserInfoKey: Any] = [:]) throws -> V { + return try V(from: self.decoder(userInfo: userInfo)) + } + + public func decoder(userInfo: [CodingUserInfoKey: Any] = [:]) -> Decoder { + return SQLiteDecoder(row: self, userInfo: userInfo) + } +} + +/// Generates a list of settings for an Encodable object +fileprivate class SQLiteEncoder: Encoder { + class SQLiteKeyedEncodingContainer: KeyedEncodingContainerProtocol { + typealias Key = MyKey + + let encoder: SQLiteEncoder + let codingPath: [CodingKey] = [] + + init(encoder: SQLiteEncoder) { + self.encoder = encoder + } + + func superEncoder() -> Swift.Encoder { + fatalError("SQLiteEncoding does not support super encoders") + } + + func superEncoder(forKey key: Key) -> Swift.Encoder { + fatalError("SQLiteEncoding does not support super encoders") + } + + func encodeNil(forKey key: SQLiteEncoder.SQLiteKeyedEncodingContainer.Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- nil) + } + + func encode(_ value: Int, forKey key: SQLiteEncoder.SQLiteKeyedEncodingContainer.Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: Bool, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: Float, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- Double(value)) + } + + func encode(_ value: Double, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: String, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: T, forKey key: Key) throws where T : Swift.Encodable { + if let data = value as? Data { + self.encoder.setters.append(Expression(key.stringValue) <- data) + } + else { + let encoded = try JSONEncoder().encode(value) + let string = String(data: encoded, encoding: .utf8) + self.encoder.setters.append(Expression(key.stringValue) <- string) + } + } + + func encode(_ value: Int8, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int8 is not supported")) + } + + func encode(_ value: Int16, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int16 is not supported")) + } + + func encode(_ value: Int32, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int32 is not supported")) + } + + func encode(_ value: Int64, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int64 is not supported")) + } + + func encode(_ value: UInt, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt is not supported")) + } + + func encode(_ value: UInt8, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt8 is not supported")) + } + + func encode(_ value: UInt16, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt16 is not supported")) + } + + func encode(_ value: UInt32, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt32 is not supported")) + } + + func encode(_ value: UInt64, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt64 is not supported")) + } + + func nestedContainer(keyedBy keyType: NestedKey.Type, forKey key: Key) -> KeyedEncodingContainer where NestedKey : CodingKey { + fatalError("encoding a nested container is not supported") + } + + func nestedUnkeyedContainer(forKey key: Key) -> UnkeyedEncodingContainer { + fatalError("encoding nested values is not supported") + } + } + + fileprivate var setters: [SQLite.Setter] = [] + let codingPath: [CodingKey] = [] + let userInfo: [CodingUserInfoKey: Any] + + init(userInfo: [CodingUserInfoKey: Any]) { + self.userInfo = userInfo + } + + func singleValueContainer() -> SingleValueEncodingContainer { + fatalError("not supported") + } + + func unkeyedContainer() -> UnkeyedEncodingContainer { + fatalError("not supported") + } + + func container(keyedBy type: Key.Type) -> KeyedEncodingContainer where Key : CodingKey { + return KeyedEncodingContainer(SQLiteKeyedEncodingContainer(encoder: self)) + } +} + +fileprivate class SQLiteDecoder : Decoder { + class SQLiteKeyedDecodingContainer : KeyedDecodingContainerProtocol { + typealias Key = MyKey + + let codingPath: [CodingKey] = [] + let row: Row + + init(row: Row) { + self.row = row + } + + var allKeys: [Key] { + return self.row.columnNames.keys.flatMap({Key(stringValue: $0)}) + } + + func contains(_ key: Key) -> Bool { + return self.row.hasValue(for: key.stringValue) + } + + func decodeNil(forKey key: Key) throws -> Bool { + return !self.contains(key) + } + + func decode(_ type: Bool.Type, forKey key: Key) throws -> Bool { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: Int.Type, forKey key: Key) throws -> Int { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: Int8.Type, forKey key: Key) throws -> Int8 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an Int8 is not supported")) + } + + func decode(_ type: Int16.Type, forKey key: Key) throws -> Int16 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an Int16 is not supported")) + } + + func decode(_ type: Int32.Type, forKey key: Key) throws -> Int32 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an Int32 is not supported")) + } + + func decode(_ type: Int64.Type, forKey key: Key) throws -> Int64 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt64 is not supported")) + } + + func decode(_ type: UInt.Type, forKey key: Key) throws -> UInt { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt is not supported")) + + } + + func decode(_ type: UInt8.Type, forKey key: Key) throws -> UInt8 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt8 is not supported")) + } + + func decode(_ type: UInt16.Type, forKey key: Key) throws -> UInt16 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt16 is not supported")) + } + + func decode(_ type: UInt32.Type, forKey key: Key) throws -> UInt32 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt32 is not supported")) + } + + func decode(_ type: UInt64.Type, forKey key: Key) throws -> UInt64 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt64 is not supported")) + } + + func decode(_ type: Float.Type, forKey key: Key) throws -> Float { + return Float(try self.row.get(Expression(key.stringValue))) + } + + func decode(_ type: Double.Type, forKey key: Key) throws -> Double { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: String.Type, forKey key: Key) throws -> String { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: T.Type, forKey key: Key) throws -> T where T: Swift.Decodable { + if type == Data.self { + let data = try self.row.get(Expression(key.stringValue)) + return data as! T + } + guard let JSONString = try self.row.get(Expression(key.stringValue)) else { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "an unsupported type was found")) + } + guard let data = JSONString.data(using: .utf8) else { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "invalid utf8 data found")) + } + return try JSONDecoder().decode(type, from: data) + } + + func nestedContainer(keyedBy type: NestedKey.Type, forKey key: Key) throws -> KeyedDecodingContainer where NestedKey : CodingKey { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding nested containers is not supported")) + } + + func nestedUnkeyedContainer(forKey key: Key) throws -> UnkeyedDecodingContainer { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding unkeyed containers is not supported")) + } + + func superDecoder() throws -> Swift.Decoder { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding super encoders containers is not supported")) + } + + func superDecoder(forKey key: Key) throws -> Swift.Decoder { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding super decoders is not supported")) + } + } + + let row: Row + let codingPath: [CodingKey] = [] + let userInfo: [CodingUserInfoKey: Any] + + init(row: Row, userInfo: [CodingUserInfoKey: Any]) { + self.row = row + self.userInfo = userInfo + } + + func container(keyedBy type: Key.Type) throws -> KeyedDecodingContainer where Key : CodingKey { + return KeyedDecodingContainer(SQLiteKeyedDecodingContainer(row: self.row)) + } + + func unkeyedContainer() throws -> UnkeyedDecodingContainer { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an unkeyed container is not supported")) + } + + func singleValueContainer() throws -> SingleValueDecodingContainer { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding a single value container is not supported")) + } +} + diff --git a/Pods/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift b/Pods/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift index 9d17a32..1afe4e8 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift @@ -22,7 +22,7 @@ // THE SOFTWARE. // -import Foundation.NSData +import Foundation extension ExpressionType where UnderlyingType : Number { @@ -223,6 +223,31 @@ extension ExpressionType where UnderlyingType == String { return Expression("(\(template) LIKE ? ESCAPE ?)", bindings + [pattern, String(character)]) } + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = Expression("email") + /// let pattern = Expression("pattern") + /// email.like(pattern) + /// // "email" LIKE "pattern" + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: Expression, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + let like: Expression = "LIKE".infix(self, pattern, wrap: false) + return Expression("(\(like.template) ESCAPE ?)", like.bindings + [String(character)]) + } + /// Builds a copy of the expression appended with a `GLOB` query against the /// given pattern. /// @@ -422,6 +447,31 @@ extension ExpressionType where UnderlyingType == String? { } return Expression("(\(template) LIKE ? ESCAPE ?)", bindings + [pattern, String(character)]) } + + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = Expression("email") + /// let pattern = Expression("pattern") + /// email.like(pattern) + /// // "email" LIKE "pattern" + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: Expression, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + let like: Expression = "LIKE".infix(self, pattern, wrap: false) + return Expression("(\(like.template) ESCAPE ?)", like.bindings + [String(character)]) + } /// Builds a copy of the expression appended with a `GLOB` query against the /// given pattern. @@ -623,6 +673,35 @@ extension Collection where Iterator.Element : Value, IndexDistance == Int { } +extension String { + + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = "some@thing.com" + /// let pattern = Expression("pattern") + /// email.like(pattern) + /// // 'some@thing.com' LIKE "pattern" + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: Expression, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + let like: Expression = "LIKE".infix(self, pattern, wrap: false) + return Expression("(\(like.template) ESCAPE ?)", like.bindings + [String(character)]) + } + +} + /// Builds a copy of the given expressions wrapped with the `ifnull` function. /// /// let name = Expression("name") diff --git a/Pods/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift b/Pods/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift new file mode 100644 index 0000000..0b9a497 --- /dev/null +++ b/Pods/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift @@ -0,0 +1,106 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +import Foundation + +/// All five date and time functions take a time string as an argument. +/// The time string is followed by zero or more modifiers. +/// The strftime() function also takes a format string as its first argument. +/// +/// https://www.sqlite.org/lang_datefunc.html +public class DateFunctions { + /// The date() function returns the date in this format: YYYY-MM-DD. + public static func date(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("date", timestring: timestring, modifiers: modifiers) + } + + /// The time() function returns the time as HH:MM:SS. + public static func time(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("time", timestring: timestring, modifiers: modifiers) + } + + /// The datetime() function returns "YYYY-MM-DD HH:MM:SS". + public static func datetime(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("datetime", timestring: timestring, modifiers: modifiers) + } + + /// The julianday() function returns the Julian day - + /// the number of days since noon in Greenwich on November 24, 4714 B.C. + public static func julianday(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("julianday", timestring: timestring, modifiers: modifiers) + } + + /// The strftime() routine returns the date formatted according to the format string specified as the first argument. + public static func strftime(_ format: String, _ timestring: String, _ modifiers: String...) -> Expression { + if !modifiers.isEmpty { + let templates = [String](repeating: "?", count: modifiers.count).joined(separator: ", ") + return Expression("strftime(?, ?, \(templates))", [format, timestring] + modifiers) + } + return Expression("strftime(?, ?)", [format, timestring]) + } + + private static func timefunction(_ name: String, timestring: String, modifiers: [String]) -> Expression { + if !modifiers.isEmpty { + let templates = [String](repeating: "?", count: modifiers.count).joined(separator: ", ") + return Expression("\(name)(?, \(templates))", [timestring] + modifiers) + } + return Expression("\(name)(?)", [timestring]) + } +} + +extension Date { + public var date: Expression { + return DateFunctions.date(dateFormatter.string(from: self)) + } + + public var time: Expression { + return DateFunctions.time(dateFormatter.string(from: self)) + } + + public var datetime: Expression { + return DateFunctions.datetime(dateFormatter.string(from: self)) + } + + public var julianday: Expression { + return DateFunctions.julianday(dateFormatter.string(from: self)) + } +} + +extension Expression where UnderlyingType == Date { + public var date: Expression { + return Expression("date(\(template))", bindings) + } + + public var time: Expression { + return Expression("time(\(template))", bindings) + } + + public var datetime: Expression { + return Expression("datetime(\(template))", bindings) + } + + public var julianday: Expression { + return Expression("julianday(\(template))", bindings) + } +} diff --git a/Pods/SQLite.swift/Sources/SQLite/Typed/Expression.swift b/Pods/SQLite.swift/Sources/SQLite/Typed/Expression.swift index 3198901..33329b7 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Typed/Expression.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Typed/Expression.swift @@ -73,7 +73,7 @@ public protocol Expressible { extension Expressible { // naïve compiler for statements that can’t be bound, e.g., CREATE TABLE - // FIXME: use @testable and make internal + // FIXME: make internal (0.12.0) public func asSQL() -> String { let expressed = expression var idx = 0 diff --git a/Pods/SQLite.swift/Sources/SQLite/Typed/Operators.swift b/Pods/SQLite.swift/Sources/SQLite/Typed/Operators.swift index fdd293b..d97e52b 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Typed/Operators.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Typed/Operators.swift @@ -474,11 +474,44 @@ public func <=(lhs: V, rhs: Expression) -> Expression wher return infix(lhs, rhs) } -public func ~=(lhs: ClosedRange, rhs: Expression) -> Expression where V.Datatype : Binding & Comparable { - return Expression("\(rhs.template) BETWEEN ? AND ?", rhs.bindings + [lhs.lowerBound as? Binding, lhs.upperBound as? Binding]) +public func ~=(lhs: ClosedRange, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) BETWEEN ? AND ?", rhs.bindings + [lhs.lowerBound.datatypeValue, lhs.upperBound.datatypeValue]) } -public func ~=(lhs: ClosedRange, rhs: Expression) -> Expression where V.Datatype : Binding & Comparable { - return Expression("\(rhs.template) BETWEEN ? AND ?", rhs.bindings + [lhs.lowerBound as? Binding, lhs.upperBound as? Binding]) + +public func ~=(lhs: ClosedRange, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) BETWEEN ? AND ?", rhs.bindings + [lhs.lowerBound.datatypeValue, lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: Range, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ? AND \(rhs.template) < ?", rhs.bindings + [lhs.lowerBound.datatypeValue] + rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: Range, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ? AND \(rhs.template) < ?", rhs.bindings + [lhs.lowerBound.datatypeValue] + rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeThrough, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) <= ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeThrough, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) <= ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeUpTo, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) < ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeUpTo, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) < ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeFrom, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ?", rhs.bindings + [lhs.lowerBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeFrom, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ?", rhs.bindings + [lhs.lowerBound.datatypeValue]) } // MARK: - diff --git a/Pods/SQLite.swift/Sources/SQLite/Typed/Query.swift b/Pods/SQLite.swift/Sources/SQLite/Typed/Query.swift index c9d2ea9..17ec715 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Typed/Query.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Typed/Query.swift @@ -22,6 +22,8 @@ // THE SOFTWARE. // +import Foundation + public protocol QueryType : Expressible { var clauses: QueryClauses { get set } @@ -180,6 +182,27 @@ extension QueryType { return query } + // MARK: UNION + + /// Adds a `UNION` clause to the query. + /// + /// let users = Table("users") + /// let email = Expression("email") + /// + /// users.filter(email == "alice@example.com").union(users.filter(email == "sally@example.com")) + /// // SELECT * FROM "users" WHERE email = 'alice@example.com' UNION SELECT * FROM "users" WHERE email = 'sally@example.com' + /// + /// - Parameters: + /// + /// - table: A query representing the other table. + /// + /// - Returns: A query with the given `UNION` clause applied. + public func union(_ table: QueryType) -> Self { + var query = self + query.clauses.union.append(table) + return query + } + // MARK: JOIN /// Adds a `JOIN` clause to the query. @@ -494,8 +517,9 @@ extension QueryType { return nil } - return " ".join(clauses.join.map { type, query, condition in - " ".join([ + return " ".join(clauses.join.map { arg in + let (type, query, condition) = arg + return " ".join([ Expression(literal: "\(type.rawValue) JOIN"), query.tableName(alias: true), Expression(literal: "ON"), @@ -565,6 +589,19 @@ extension QueryType { Expression(literal: "OFFSET \(offset)") ]) } + + fileprivate var unionClause: Expressible? { + guard !clauses.union.isEmpty else { + return nil + } + + return " ".join(clauses.union.map { query in + " ".join([ + Expression(literal: "UNION"), + query + ]) + }) + } // MARK: - @@ -648,7 +685,9 @@ extension QueryType { tableName(), Expression(literal: "SET"), ", ".join(values.map { " = ".join([$0.column, $0.value]) }), - whereClause + whereClause, + orderClause, + limitOffsetClause ] return Update(" ".join(clauses.flatMap { $0 }).expression) @@ -660,7 +699,9 @@ extension QueryType { let clauses: [Expressible?] = [ Expression(literal: "DELETE FROM"), tableName(), - whereClause + whereClause, + orderClause, + limitOffsetClause ] return Delete(" ".join(clauses.flatMap { $0 }).expression) @@ -687,47 +728,11 @@ extension QueryType { return Expression(".".join([tableName(), column]).expression) } - // FIXME: rdar://problem/18673897 // subscript… - - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { + public subscript(column: Expression) -> Expression { return namespace(column) } - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { - return namespace(column) - } - - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { - return namespace(column) - } - - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { - return namespace(column) - } - - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { - return namespace(column) - } - - public subscript(column: Expression) -> Expression { - return namespace(column) - } - public subscript(column: Expression) -> Expression { + public subscript(column: Expression) -> Expression { return namespace(column) } @@ -779,6 +784,7 @@ extension QueryType { joinClause, whereClause, groupByClause, + unionClause, orderClause, limitOffsetClause ] @@ -890,59 +896,88 @@ public struct Delete : ExpressionType { } + +public struct RowIterator: FailableIterator { + public typealias Element = Row + let statement: Statement + let columnNames: [String: Int] + + public func failableNext() throws -> Row? { + return try statement.failableNext().flatMap { Row(columnNames, $0) } + } + + public func map(_ transform: (Element) throws -> T) throws -> [T] { + var elements = [T]() + while let row = try failableNext() { + elements.append(try transform(row)) + } + return elements + } +} + extension Connection { public func prepare(_ query: QueryType) throws -> AnySequence { let expression = query.expression let statement = try prepare(expression.template, expression.bindings) - let columnNames: [String: Int] = try { - var (columnNames, idx) = ([String: Int](), 0) - column: for each in query.clauses.select.columns { - var names = each.expression.template.characters.split { $0 == "." }.map(String.init) - let column = names.removeLast() - let namespace = names.joined(separator: ".") - - func expandGlob(_ namespace: Bool) -> ((QueryType) throws -> Void) { - return { (query: QueryType) throws -> (Void) in - var q = type(of: query).init(query.clauses.from.name, database: query.clauses.from.database) - q.clauses.select = query.clauses.select - let e = q.expression - var names = try self.prepare(e.template, e.bindings).columnNames.map { $0.quote() } - if namespace { names = names.map { "\(query.tableName().expression.template).\($0)" } } - for name in names { columnNames[name] = idx; idx += 1 } - } - } - - if column == "*" { - var select = query - select.clauses.select = (false, [Expression(literal: "*") as Expressible]) - let queries = [select] + query.clauses.join.map { $0.query } - if !namespace.isEmpty { - for q in queries { - if q.tableName().expression.template == namespace { - try expandGlob(true)(q) - continue column - } - } - fatalError("no such table: \(namespace)") - } - for q in queries { - try expandGlob(query.clauses.join.count > 0)(q) - } - continue - } - - columnNames[each.expression.template] = idx - idx += 1 - } - return columnNames - }() + let columnNames = try columnNamesForQuery(query) return AnySequence { AnyIterator { statement.next().map { Row(columnNames, $0) } } } } + + + public func prepareRowIterator(_ query: QueryType) throws -> RowIterator { + let expression = query.expression + let statement = try prepare(expression.template, expression.bindings) + return RowIterator(statement: statement, columnNames: try columnNamesForQuery(query)) + } + + private func columnNamesForQuery(_ query: QueryType) throws -> [String: Int] { + var (columnNames, idx) = ([String: Int](), 0) + column: for each in query.clauses.select.columns { + var names = each.expression.template.characters.split { $0 == "." }.map(String.init) + let column = names.removeLast() + let namespace = names.joined(separator: ".") + + func expandGlob(_ namespace: Bool) -> ((QueryType) throws -> Void) { + return { (query: QueryType) throws -> (Void) in + var q = type(of: query).init(query.clauses.from.name, database: query.clauses.from.database) + q.clauses.select = query.clauses.select + let e = q.expression + var names = try self.prepare(e.template, e.bindings).columnNames.map { $0.quote() } + if namespace { names = names.map { "\(query.tableName().expression.template).\($0)" } } + for name in names { columnNames[name] = idx; idx += 1 } + } + } + + if column == "*" { + var select = query + select.clauses.select = (false, [Expression(literal: "*") as Expressible]) + let queries = [select] + query.clauses.join.map { $0.query } + if !namespace.isEmpty { + for q in queries { + if q.tableName().expression.template == namespace { + try expandGlob(true)(q) + continue column + } + throw QueryError.noSuchTable(name: namespace) + } + throw QueryError.noSuchTable(name: namespace) + } + for q in queries { + try expandGlob(query.clauses.join.count > 0)(q) + } + continue + } + + columnNames[each.expression.template] = idx + idx += 1 + } + return columnNames + } public func scalar(_ query: ScalarQuery) throws -> V { let expression = query.expression @@ -967,7 +1002,7 @@ extension Connection { } public func pluck(_ query: QueryType) throws -> Row? { - return try prepare(query.limit(1, query.clauses.limit?.offset)).makeIterator().next() + return try prepareRowIterator(query.limit(1, query.clauses.limit?.offset)).failableNext() } /// Runs an `Insert` query. @@ -1023,27 +1058,39 @@ extension Connection { public struct Row { - fileprivate let columnNames: [String: Int] + let columnNames: [String: Int] fileprivate let values: [Binding?] - fileprivate init(_ columnNames: [String: Int], _ values: [Binding?]) { + internal init(_ columnNames: [String: Int], _ values: [Binding?]) { self.columnNames = columnNames self.values = values } + func hasValue(for column: String) -> Bool { + guard let idx = columnNames[column.quote()] else { + return false + } + return values[idx] != nil + } + /// Returns a row’s value for the given column. /// /// - Parameter column: An expression representing a column selected in a Query. /// /// - Returns: The value for the given column. - public func get(_ column: Expression) -> V { - return get(Expression(column))! + public func get(_ column: Expression) throws -> V { + if let value = try get(Expression(column)) { + return value + } else { + throw QueryError.unexpectedNullValue(name: column.template) + } } - public func get(_ column: Expression) -> V? { + + public func get(_ column: Expression) throws -> V? { func valueAtIndex(_ idx: Int) -> V? { guard let value = values[idx] as? V.Datatype else { return nil } - return (V.fromDatatypeValue(value) as? V)! + return V.fromDatatypeValue(value) as? V } guard let idx = columnNames[column.template] else { @@ -1051,61 +1098,24 @@ public struct Row { switch similar.count { case 0: - fatalError("no such column '\(column.template)' in columns: \(columnNames.keys.sorted())") + throw QueryError.noSuchColumn(name: column.template, columns: columnNames.keys.sorted()) case 1: return valueAtIndex(columnNames[similar[0]]!) default: - fatalError("ambiguous column '\(column.template)' (please disambiguate: \(similar))") + throw QueryError.ambiguousColumn(name: column.template, similar: similar) } } return valueAtIndex(idx) } - // FIXME: rdar://problem/18673897 // subscript… - - public subscript(column: Expression) -> Blob { - return get(column) - } - public subscript(column: Expression) -> Blob? { - return get(column) + public subscript(column: Expression) -> T { + return try! get(column) } - public subscript(column: Expression) -> Bool { - return get(column) + public subscript(column: Expression) -> T? { + return try! get(column) } - public subscript(column: Expression) -> Bool? { - return get(column) - } - - public subscript(column: Expression) -> Double { - return get(column) - } - public subscript(column: Expression) -> Double? { - return get(column) - } - - public subscript(column: Expression) -> Int { - return get(column) - } - public subscript(column: Expression) -> Int? { - return get(column) - } - - public subscript(column: Expression) -> Int64 { - return get(column) - } - public subscript(column: Expression) -> Int64? { - return get(column) - } - - public subscript(column: Expression) -> String { - return get(column) - } - public subscript(column: Expression) -> String? { - return get(column) - } - } /// Determines the join operator for a query’s `JOIN` clause. @@ -1154,9 +1164,12 @@ public struct QueryClauses { var order = [Expressible]() var limit: (length: Int, offset: Int?)? + + var union = [QueryType]() fileprivate init(_ name: String, alias: String?, database: String?) { self.from = (name, alias, database) } } + diff --git a/Pods/SQLite.swift/Sources/SQLite/Typed/Schema.swift b/Pods/SQLite.swift/Sources/SQLite/Typed/Schema.swift index 6550929..46a1f87 100644 --- a/Pods/SQLite.swift/Sources/SQLite/Typed/Schema.swift +++ b/Pods/SQLite.swift/Sources/SQLite/Typed/Schema.swift @@ -42,7 +42,7 @@ extension Table { block(builder) let clauses: [Expressible?] = [ - create(Table.identifier, tableName(), temporary ? .Temporary : nil, ifNotExists), + create(Table.identifier, tableName(), temporary ? .temporary : nil, ifNotExists), "".wrap(builder.definitions) as Expression, withoutRowid ? Expression(literal: "WITHOUT ROWID") : nil ] @@ -52,7 +52,7 @@ extension Table { public func create(_ query: QueryType, temporary: Bool = false, ifNotExists: Bool = false) -> String { let clauses: [Expressible?] = [ - create(Table.identifier, tableName(), temporary ? .Temporary : nil, ifNotExists), + create(Table.identifier, tableName(), temporary ? .temporary : nil, ifNotExists), Expression(literal: "AS"), query ] @@ -127,13 +127,9 @@ extension Table { // MARK: - CREATE INDEX - public func createIndex(_ columns: Expressible...) -> String { - return createIndex(columns) - } - - public func createIndex(_ columns: [Expressible], unique: Bool = false, ifNotExists: Bool = false) -> String { + public func createIndex(_ columns: Expressible..., unique: Bool = false, ifNotExists: Bool = false) -> String { let clauses: [Expressible?] = [ - create("INDEX", indexName(columns), unique ? .Unique : nil, ifNotExists), + create("INDEX", indexName(columns), unique ? .unique : nil, ifNotExists), Expression(literal: "ON"), tableName(qualified: false), "".wrap(columns) as Expression @@ -144,11 +140,8 @@ extension Table { // MARK: - DROP INDEX - public func dropIndex(_ columns: Expressible...) -> String { - return dropIndex(columns) - } - public func dropIndex(_ columns: [Expressible], ifExists: Bool = false) -> String { + public func dropIndex(_ columns: Expressible..., ifExists: Bool = false) -> String { return drop("INDEX", indexName(columns), ifExists) } @@ -176,7 +169,7 @@ extension View { public func create(_ query: QueryType, temporary: Bool = false, ifNotExists: Bool = false) -> String { let clauses: [Expressible?] = [ - create(View.identifier, tableName(), temporary ? .Temporary : nil, ifNotExists), + create(View.identifier, tableName(), temporary ? .temporary : nil, ifNotExists), Expression(literal: "AS"), query ] @@ -307,27 +300,27 @@ public final class TableBuilder { } public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression? = nil, collate: Collation) where V.Datatype == String { - column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) } public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression, collate: Collation) where V.Datatype == String { - column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) } public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: V, collate: Collation) where V.Datatype == String { - column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) } public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression? = nil, collate: Collation) where V.Datatype == String { - column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) } public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression, collate: Collation) where V.Datatype == String { - column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) } public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: V, collate: Collation) where V.Datatype == String { - column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) } fileprivate func column(_ name: Expressible, _ datatype: String, _ primaryKey: PrimaryKey?, _ null: Bool, _ unique: Bool, _ check: Expressible?, _ defaultValue: Expressible?, _ references: (QueryType, Expressible)?, _ collate: Collation?) { @@ -513,8 +506,8 @@ private func reference(_ primary: (QueryType, Expressible)) -> Expressible { private enum Modifier : String { - case Unique = "UNIQUE" + case unique = "UNIQUE" - case Temporary = "TEMPORARY" + case temporary = "TEMPORARY" } diff --git a/Pods/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m b/Pods/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m index d8fe6b6..e00a731 100644 --- a/Pods/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m +++ b/Pods/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m @@ -112,14 +112,14 @@ static const sqlite3_tokenizer_module __SQLiteTokenizerModule = { __SQLiteTokenizerNext }; -int _SQLiteRegisterTokenizer(SQLiteHandle * db, const char * moduleName, const char * submoduleName, _SQLiteTokenizerNextCallback callback) { +int _SQLiteRegisterTokenizer(sqlite3 *db, const char * moduleName, const char * submoduleName, _SQLiteTokenizerNextCallback callback) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ __SQLiteTokenizerMap = [NSMutableDictionary new]; }); sqlite3_stmt * stmt; - int status = sqlite3_prepare_v2((sqlite3 *)db, "SELECT fts3_tokenizer(?, ?)", -1, &stmt, 0); + int status = sqlite3_prepare_v2(db, "SELECT fts3_tokenizer(?, ?)", -1, &stmt, 0); if (status != SQLITE_OK ){ return status; } diff --git a/Pods/SQLite.swift/Sources/SQLiteObjc/include/SQLite-Bridging.h b/Pods/SQLite.swift/Sources/SQLiteObjc/include/SQLite-Bridging.h index d15e8d5..5b35659 100644 --- a/Pods/SQLite.swift/Sources/SQLiteObjc/include/SQLite-Bridging.h +++ b/Pods/SQLite.swift/Sources/SQLiteObjc/include/SQLite-Bridging.h @@ -24,14 +24,10 @@ @import Foundation; -#ifndef COCOAPODS #import "sqlite3.h" -#endif - -typedef struct SQLiteHandle SQLiteHandle; // CocoaPods workaround NS_ASSUME_NONNULL_BEGIN -typedef NSString * _Nullable (^_SQLiteTokenizerNextCallback)(const char * input, int * inputOffset, int * inputLength); -int _SQLiteRegisterTokenizer(SQLiteHandle * db, const char * module, const char * tokenizer, _Nullable _SQLiteTokenizerNextCallback callback); +typedef NSString * _Nullable (^_SQLiteTokenizerNextCallback)(const char *input, int *inputOffset, int *inputLength); +int _SQLiteRegisterTokenizer(sqlite3 *db, const char *module, const char *tokenizer, _Nullable _SQLiteTokenizerNextCallback callback); NS_ASSUME_NONNULL_END diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown index 1573dac..06a3127 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown @@ -3,11 +3,11 @@ This application makes use of the following third party libraries: ## Crashlytics -Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2016 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt +Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2017 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt ## Fabric -Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt +Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt ## FileMD5Hash diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist index 75927ab..e2d7eae 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist @@ -14,7 +14,7 @@ FooterText - Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2016 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt + Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2017 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt License Commercial Title @@ -24,7 +24,7 @@ FooterText - Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt + Fabric: Copyright 2017 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt License Commercial Title diff --git a/Pods/Target Support Files/SQLite.swift/Info.plist b/Pods/Target Support Files/SQLite.swift/Info.plist index ace78f5..742241b 100644 --- a/Pods/Target Support Files/SQLite.swift/Info.plist +++ b/Pods/Target Support Files/SQLite.swift/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.11.3 + 0.11.4 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/SQLite.swift/SQLite.swift.xcconfig b/Pods/Target Support Files/SQLite.swift/SQLite.swift.xcconfig index 18a0c51..830ac41 100644 --- a/Pods/Target Support Files/SQLite.swift/SQLite.swift.xcconfig +++ b/Pods/Target Support Files/SQLite.swift/SQLite.swift.xcconfig @@ -9,15 +9,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/SQLite.swift PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS[sdk=appletvos*] = $(SRCROOT)/SQLite.swift/CocoaPods/appletvos -SWIFT_INCLUDE_PATHS[sdk=appletvsimulator*] = $(SRCROOT)/SQLite.swift/CocoaPods/appletvsimulator -SWIFT_INCLUDE_PATHS[sdk=iphoneos*] = $(SRCROOT)/SQLite.swift/CocoaPods/iphoneos -SWIFT_INCLUDE_PATHS[sdk=iphoneos10.0] = $(SRCROOT)/SQLite.swift/CocoaPods/iphoneos-10.0 -SWIFT_INCLUDE_PATHS[sdk=iphonesimulator*] = $(SRCROOT)/SQLite.swift/CocoaPods/iphonesimulator -SWIFT_INCLUDE_PATHS[sdk=iphonesimulator10.0] = $(SRCROOT)/SQLite.swift/CocoaPods/iphonesimulator-10.0 -SWIFT_INCLUDE_PATHS[sdk=macosx*] = $(SRCROOT)/SQLite.swift/CocoaPods/macosx -SWIFT_INCLUDE_PATHS[sdk=macosx10.11] = $(SRCROOT)/SQLite.swift/CocoaPods/macosx-10.11 -SWIFT_INCLUDE_PATHS[sdk=macosx10.12] = $(SRCROOT)/SQLite.swift/CocoaPods/macosx-10.12 -SWIFT_INCLUDE_PATHS[sdk=watchos*] = $(SRCROOT)/SQLite.swift/CocoaPods/watchos -SWIFT_INCLUDE_PATHS[sdk=watchsimulator*] = $(SRCROOT)/SQLite.swift/CocoaPods/watchsimulator -SWIFT_VERSION = 3.0 +SWIFT_VERSION = 4.0