Kaynağa Gözat

Cleanup for license headers.
Added a stub for SQLLite active record proxy.

Damian Kołakowski 11 yıl önce
ebeveyn
işleme
762ba5742b

+ 0 - 11
Common/ActiveRecord/ActiveRecord.swift

@@ -1,8 +1,6 @@
 //
 //
 //  ActiveRecord.swift
 //  ActiveRecord.swift
 //  Swifter
 //  Swifter
-//
-//  Created by Damian Kolakowski on 13/11/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 
@@ -41,14 +39,5 @@ class SwifterActiveRecord<T: NSObject> {
     }
     }
 }
 }
 
 
-// An example model class.
-
-class Person: NSObject {
-    var firstName: String? = "firstName"
-    var lastName: String? = "lastName"
-    var age: UInt? = 1
-}
-
-let peopleWithNameFoo = SwifterActiveRecord<Person>.find({ $0.firstName == "Foo" })
 
 
 
 

+ 26 - 0
Common/ActiveRecord/ActiveRecordProxy.swift

@@ -0,0 +1,26 @@
+//
+//  ActiveRecordProxy.swift
+//  Swifter
+//  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
+//
+
+import Foundation
+
+enum ActiveRecordType {
+    case String, Integer
+}
+
+protocol ActiveRecordProxy {
+    func scheme() -> [String: [String: ActiveRecordType]];
+    
+    func createTable(name: String, columns: [String: ActiveRecordType], error: NSError) -> Bool;
+    func deleteTable(name: String, error: NSError) -> Bool;
+    
+    func insertColumn(table: String, column: String, error: NSError) -> Bool;
+    func deleteColumn(table: String, column: String, error: NSError) -> Bool;
+    
+    func copyColumn(table: String, from: String, to: String, error: NSError) -> Bool;
+    
+    func insertRow(table: String, value: [String: String], error: NSError) -> Int;
+    func deleteRow(table: String, id: Int, error: NSError) -> Bool;
+}

+ 67 - 0
Common/ActiveRecord/SQLiteProxy.swift

@@ -0,0 +1,67 @@
+//
+//  SQLiteProxy.swift
+//  Swifter
+//  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
+//
+
+import Foundation
+
+class SQLiteActiveRecordProxy: ActiveRecordProxy {
+
+    let databaseName: String
+
+    init(name: String) {
+        databaseName = name
+    }
+    
+    func execute(statment: String, iteratorCallback: (COpaquePointer -> Void) ) -> Void {
+        var databasePointer = COpaquePointer()
+        if ( SQLITE_OK == databaseName.withCString { sqlite3_open($0, &databasePointer) } ) {
+            var statmentPointer = COpaquePointer()
+            if ( SQLITE_OK == statment.withCString { sqlite3_prepare(databasePointer, $0, Int32(strlen($0)), &statmentPointer, nil) } ) {
+                while ( sqlite3_step(statmentPointer) == SQLITE_ROW ) { iteratorCallback(statmentPointer) }
+                sqlite3_finalize(statmentPointer);
+            }
+            sqlite3_close(databasePointer);
+        }
+    }
+
+    func scheme() -> [String: [String: ActiveRecordType]] {
+        var tables = [String]()
+        execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;") {
+            let pointer = sqlite3_column_text($0, 0)
+            if let name = String.fromCString(UnsafePointer<CChar>(COpaquePointer(pointer))) { tables.append(name) }
+        }
+        //TODO get columns
+        var result = [String: [String: ActiveRecordType]]()
+        return result
+    }
+    
+    func createTable(name: String, columns: [String: ActiveRecordType], error: NSError) -> Bool {
+        return false
+    }
+    
+    func deleteTable(name: String, error: NSError) -> Bool {
+        return false
+    }
+    
+    func insertColumn(table: String, column: String, error: NSError) -> Bool {
+        return false
+    }
+    
+    func deleteColumn(table: String, column: String, error: NSError) -> Bool {
+        return false
+    }
+    
+    func copyColumn(table: String, from: String, to: String, error: NSError) -> Bool {
+        return false
+    }
+    
+    func insertRow(table: String, value: [String: String], error: NSError) -> Int {
+        return 0
+    }
+    
+    func deleteRow(table: String, id: Int, error: NSError) -> Bool {
+        return false
+    }
+}

+ 5 - 0
Common/ActiveRecord/Swifter-Bridging-Header.h

@@ -0,0 +1,5 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
+#import <sqlite3.h>

+ 5 - 0
Common/ActiveRecord/SwifterOSX-Bridging-Header.h

@@ -0,0 +1,5 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
+#import <sqlite3.h>

+ 0 - 2
Common/DemoServer.swift

@@ -1,8 +1,6 @@
 //
 //
 //  DemoServer.swift
 //  DemoServer.swift
 //  Swifter
 //  Swifter
-//
-//  Created by Damian Kolakowski on 14/11/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 

+ 0 - 2
Common/HttpHandlers.swift

@@ -1,8 +1,6 @@
 //
 //
 //  Handlers.swift
 //  Handlers.swift
 //  Swifter
 //  Swifter
-//
-//  Created by Damian Kolakowski on 14/11/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 

+ 1 - 2
Common/HttpParser.swift

@@ -1,7 +1,6 @@
 //
 //
 //  HttpParser.swift
 //  HttpParser.swift
-//
-//  Created by Damian Kolakowski on 05/06/14.
+//  Swifter
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 

+ 1 - 3
Common/HttpRequest.swift

@@ -1,8 +1,6 @@
 //
 //
 //  HttpRequest.swift
 //  HttpRequest.swift
 //  Swifter
 //  Swifter
-//
-//  Created by Damian Kolakowski on 19/08/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 
@@ -12,7 +10,7 @@ struct HttpRequest {
     let url: String
     let url: String
     let urlParams: [(String, String)] // http://stackoverflow.com/questions/1746507/authoritative-position-of-duplicate-http-get-query-keys
     let urlParams: [(String, String)] // http://stackoverflow.com/questions/1746507/authoritative-position-of-duplicate-http-get-query-keys
     let method: String
     let method: String
-    let headers: Dictionary<String, String>
+    let headers: [String: String]
 	let body: String?
 	let body: String?
     var capturedUrlGroups: [String]
     var capturedUrlGroups: [String]
 }
 }

+ 1 - 3
Common/HttpResponse.swift

@@ -1,8 +1,6 @@
 //
 //
 //  HttpResponse.swift
 //  HttpResponse.swift
 //  Swifter
 //  Swifter
-//
-//  Created by Damian Kolakowski on 18/06/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 
@@ -90,7 +88,7 @@ enum HttpResponse {
         headers["Server"] = "Swifter"
         headers["Server"] = "Swifter"
         switch self {
         switch self {
         case .MovedPermanently(let location) : headers["Location"] = location
         case .MovedPermanently(let location) : headers["Location"] = location
-        default:[];
+        default:[]
         }
         }
         return headers
         return headers
     }
     }

+ 1 - 2
Common/HttpServer.swift

@@ -1,7 +1,6 @@
 //
 //
 //  HttpServer.swift
 //  HttpServer.swift
-//
-//  Created by Damian Kolakowski on 05/06/14.
+//  Swifter
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 

+ 1 - 2
Common/Socket.swift

@@ -1,7 +1,6 @@
 //
 //
 //  Socket.swift
 //  Socket.swift
-//
-//  Created by Damian Kolakowski on 05/06/14.
+//  Swifter
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 

+ 36 - 0
Swifter.xcodeproj/project.pbxproj

@@ -15,6 +15,12 @@
 		7C839B7619422CFF003A6950 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C839B7519422CFF003A6950 /* ViewController.swift */; };
 		7C839B7619422CFF003A6950 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C839B7519422CFF003A6950 /* ViewController.swift */; };
 		7C839B7919422CFF003A6950 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7C839B7719422CFF003A6950 /* Main.storyboard */; };
 		7C839B7919422CFF003A6950 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7C839B7719422CFF003A6950 /* Main.storyboard */; };
 		7C839B7B19422CFF003A6950 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7C839B7A19422CFF003A6950 /* Images.xcassets */; };
 		7C839B7B19422CFF003A6950 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7C839B7A19422CFF003A6950 /* Images.xcassets */; };
+		7C8B260C1A23878F00566475 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B260B1A23878F00566475 /* libsqlite3.dylib */; };
+		7C8B260E1A23879500566475 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B260D1A23879500566475 /* libsqlite3.dylib */; };
+		7C8B262B1A238E2F00566475 /* SQLiteProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8B262A1A238E2F00566475 /* SQLiteProxy.swift */; };
+		7C8B262C1A238E2F00566475 /* SQLiteProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8B262A1A238E2F00566475 /* SQLiteProxy.swift */; };
+		7C8B262E1A238E6F00566475 /* ActiveRecordProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8B262D1A238E6F00566475 /* ActiveRecordProxy.swift */; };
+		7C8B262F1A238E6F00566475 /* ActiveRecordProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C8B262D1A238E6F00566475 /* ActiveRecordProxy.swift */; };
 		7CA4813E19A2EA8D0030B30D /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4813D19A2EA8D0030B30D /* main.swift */; };
 		7CA4813E19A2EA8D0030B30D /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4813D19A2EA8D0030B30D /* main.swift */; };
 		7CA4814E19A2EED00030B30D /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4814A19A2EED00030B30D /* HttpParser.swift */; };
 		7CA4814E19A2EED00030B30D /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4814A19A2EED00030B30D /* HttpParser.swift */; };
 		7CA4814F19A2EED00030B30D /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4814A19A2EED00030B30D /* HttpParser.swift */; };
 		7CA4814F19A2EED00030B30D /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CA4814A19A2EED00030B30D /* HttpParser.swift */; };
@@ -59,6 +65,12 @@
 		7C839B7519422CFF003A6950 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
 		7C839B7519422CFF003A6950 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
 		7C839B7819422CFF003A6950 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		7C839B7819422CFF003A6950 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		7C839B7A19422CFF003A6950 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
 		7C839B7A19422CFF003A6950 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
+		7C8B260B1A23878F00566475 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
+		7C8B260D1A23879500566475 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libsqlite3.dylib; sourceTree = DEVELOPER_DIR; };
+		7C8B26241A238D4500566475 /* Swifter-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Swifter-Bridging-Header.h"; sourceTree = "<group>"; };
+		7C8B26251A238D4500566475 /* SwifterOSX-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SwifterOSX-Bridging-Header.h"; sourceTree = "<group>"; };
+		7C8B262A1A238E2F00566475 /* SQLiteProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SQLiteProxy.swift; sourceTree = "<group>"; };
+		7C8B262D1A238E6F00566475 /* ActiveRecordProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActiveRecordProxy.swift; sourceTree = "<group>"; };
 		7CA4813B19A2EA8D0030B30D /* SwifterOSX */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SwifterOSX; sourceTree = BUILT_PRODUCTS_DIR; };
 		7CA4813B19A2EA8D0030B30D /* SwifterOSX */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SwifterOSX; sourceTree = BUILT_PRODUCTS_DIR; };
 		7CA4813D19A2EA8D0030B30D /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
 		7CA4813D19A2EA8D0030B30D /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
 		7CA4814A19A2EED00030B30D /* HttpParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpParser.swift; sourceTree = "<group>"; };
 		7CA4814A19A2EED00030B30D /* HttpParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpParser.swift; sourceTree = "<group>"; };
@@ -78,6 +90,7 @@
 			isa = PBXFrameworksBuildPhase;
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
+				7C8B260C1A23878F00566475 /* libsqlite3.dylib in Frameworks */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -85,6 +98,7 @@
 			isa = PBXFrameworksBuildPhase;
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
+				7C8B260E1A23879500566475 /* libsqlite3.dylib in Frameworks */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -95,6 +109,10 @@
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				7C6A510D1A149859004924B5 /* ActiveRecord.swift */,
 				7C6A510D1A149859004924B5 /* ActiveRecord.swift */,
+				7C8B262D1A238E6F00566475 /* ActiveRecordProxy.swift */,
+				7C8B26241A238D4500566475 /* Swifter-Bridging-Header.h */,
+				7C8B26251A238D4500566475 /* SwifterOSX-Bridging-Header.h */,
+				7C8B262A1A238E2F00566475 /* SQLiteProxy.swift */,
 			);
 			);
 			path = ActiveRecord;
 			path = ActiveRecord;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -102,6 +120,8 @@
 		7C839B6519422CFF003A6950 = {
 		7C839B6519422CFF003A6950 = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				7C8B260D1A23879500566475 /* libsqlite3.dylib */,
+				7C8B260B1A23878F00566475 /* libsqlite3.dylib */,
 				7CA4815619A2EF2B0030B30D /* Resources */,
 				7CA4815619A2EF2B0030B30D /* Resources */,
 				7CA4814919A2EED00030B30D /* Common */,
 				7CA4814919A2EED00030B30D /* Common */,
 				7C839B7019422CFF003A6950 /* Swifter */,
 				7C839B7019422CFF003A6950 /* Swifter */,
@@ -272,6 +292,8 @@
 				7C839B7619422CFF003A6950 /* ViewController.swift in Sources */,
 				7C839B7619422CFF003A6950 /* ViewController.swift in Sources */,
 				7CA4815419A2EED00030B30D /* Socket.swift in Sources */,
 				7CA4815419A2EED00030B30D /* Socket.swift in Sources */,
 				7CA4815219A2EED00030B30D /* HttpServer.swift in Sources */,
 				7CA4815219A2EED00030B30D /* HttpServer.swift in Sources */,
+				7C8B262E1A238E6F00566475 /* ActiveRecordProxy.swift in Sources */,
+				7C8B262B1A238E2F00566475 /* SQLiteProxy.swift in Sources */,
 				7CA4814E19A2EED00030B30D /* HttpParser.swift in Sources */,
 				7CA4814E19A2EED00030B30D /* HttpParser.swift in Sources */,
 				7CA4815B19A2F6A60030B30D /* HttpRequest.swift in Sources */,
 				7CA4815B19A2F6A60030B30D /* HttpRequest.swift in Sources */,
 				7C839B7419422CFF003A6950 /* AppDelegate.swift in Sources */,
 				7C839B7419422CFF003A6950 /* AppDelegate.swift in Sources */,
@@ -286,10 +308,12 @@
 				7CB102DE1A1680EA00CBA3B4 /* DemoServer.swift in Sources */,
 				7CB102DE1A1680EA00CBA3B4 /* DemoServer.swift in Sources */,
 				7CA4814F19A2EED00030B30D /* HttpParser.swift in Sources */,
 				7CA4814F19A2EED00030B30D /* HttpParser.swift in Sources */,
 				7CA4815519A2EED00030B30D /* Socket.swift in Sources */,
 				7CA4815519A2EED00030B30D /* Socket.swift in Sources */,
+				7C8B262C1A238E2F00566475 /* SQLiteProxy.swift in Sources */,
 				7C6A510F1A149859004924B5 /* ActiveRecord.swift in Sources */,
 				7C6A510F1A149859004924B5 /* ActiveRecord.swift in Sources */,
 				7CA4815319A2EED00030B30D /* HttpServer.swift in Sources */,
 				7CA4815319A2EED00030B30D /* HttpServer.swift in Sources */,
 				7CA4813E19A2EA8D0030B30D /* main.swift in Sources */,
 				7CA4813E19A2EA8D0030B30D /* main.swift in Sources */,
 				7CB102DB1A16657200CBA3B4 /* HttpHandlers.swift in Sources */,
 				7CB102DB1A16657200CBA3B4 /* HttpHandlers.swift in Sources */,
+				7C8B262F1A238E6F00566475 /* ActiveRecordProxy.swift in Sources */,
 				7CA4815C19A2F6A60030B30D /* HttpRequest.swift in Sources */,
 				7CA4815C19A2F6A60030B30D /* HttpRequest.swift in Sources */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -393,9 +417,12 @@
 			buildSettings = {
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+				CLANG_ENABLE_MODULES = YES;
 				INFOPLIST_FILE = Swifter/Info.plist;
 				INFOPLIST_FILE = Swifter/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Common/ActiveRecord/Swifter-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -404,35 +431,44 @@
 			buildSettings = {
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
 				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+				CLANG_ENABLE_MODULES = YES;
 				INFOPLIST_FILE = Swifter/Info.plist;
 				INFOPLIST_FILE = Swifter/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Common/ActiveRecord/Swifter-Bridging-Header.h";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		7CA4813F19A2EA8D0030B30D /* Debug */ = {
 		7CA4813F19A2EA8D0030B30D /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
+				CLANG_ENABLE_MODULES = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"DEBUG=1",
 					"DEBUG=1",
 					"$(inherited)",
 					"$(inherited)",
 				);
 				);
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
 				MACOSX_DEPLOYMENT_TARGET = 10.9;
 				MACOSX_DEPLOYMENT_TARGET = 10.9;
 				MTL_ENABLE_DEBUG_INFO = YES;
 				MTL_ENABLE_DEBUG_INFO = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = macosx;
 				SDKROOT = macosx;
+				SWIFT_OBJC_BRIDGING_HEADER = "Common/ActiveRecord/SwifterOSX-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
 		7CA4814019A2EA8D0030B30D /* Release */ = {
 		7CA4814019A2EA8D0030B30D /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
+				CLANG_ENABLE_MODULES = YES;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
 				MACOSX_DEPLOYMENT_TARGET = 10.9;
 				MACOSX_DEPLOYMENT_TARGET = 10.9;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				MTL_ENABLE_DEBUG_INFO = NO;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SDKROOT = macosx;
 				SDKROOT = macosx;
+				SWIFT_OBJC_BRIDGING_HEADER = "Common/ActiveRecord/SwifterOSX-Bridging-Header.h";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};

BIN
Swifter.xcodeproj/project.xcworkspace/xcuserdata/damiankolakowski.xcuserdatad/UserInterfaceState.xcuserstate


+ 278 - 18
Swifter.xcodeproj/xcuserdata/damiankolakowski.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -335,22 +335,6 @@
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "Common/ActiveRecord/ActiveRecord.swift"
-            timestampString = "437737235.228186"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "45"
-            endingLineNumber = "45"
-            landmarkName = "Person"
-            landmarkType = "3">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
          <BreakpointContent
@@ -648,7 +632,9 @@
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "55"
             startingLineNumber = "55"
-            endingLineNumber = "55">
+            endingLineNumber = "55"
+            landmarkName = "writeStringUTF8(_:string:error:)"
+            landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
       <BreakpointProxy
       <BreakpointProxy
@@ -662,7 +648,9 @@
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "27"
             startingLineNumber = "27"
-            endingLineNumber = "27">
+            endingLineNumber = "27"
+            landmarkName = "directoryBrowser(_:)"
+            landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
       <BreakpointProxy
       <BreakpointProxy
@@ -713,5 +701,277 @@
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/HttpResponse.swift"
+            timestampString = "438296767.654712"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "9"
+            endingLineNumber = "9">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/ActiveRecord/ActiveRecordProxy.swift"
+            timestampString = "438537864.654188"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "12"
+            endingLineNumber = "12">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "SwifterOSX/main.swift"
+            timestampString = "438945000.908855"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "13"
+            endingLineNumber = "13">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/ActiveRecord/SQLiteProxy.swift"
+            timestampString = "438981295.838168"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "29"
+            endingLineNumber = "29"
+            landmarkName = "scheme()"
+            landmarkType = "5">
+            <Locations>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.scheme (SwifterOSX.SQLiteActiveRecordProxy)() -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438979660.680188"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "36"
+                  endingLineNumber = "36"
+                  offsetFromSymbolStart = "15">
+               </Location>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "protocol witness for SwifterOSX.ActiveRecordProxy.scheme &lt;A : SwifterOSX.ActiveRecordProxy&gt;(inout SwifterOSX.ActiveRecordProxy.Self)() -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt; in conformance SwifterOSX.SQLiteActiveRecordProxy : SwifterOSX.ActiveRecordProxy"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438979660.680339"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "36"
+                  endingLineNumber = "36"
+                  offsetFromSymbolStart = "4">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/ActiveRecord/SQLiteProxy.swift"
+            timestampString = "438981295.838168"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "29"
+            endingLineNumber = "29"
+            landmarkName = "scheme()"
+            landmarkType = "5">
+            <Locations>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.scheme (SwifterOSX.SQLiteActiveRecordProxy)() -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438948127.741381"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "19"
+                  endingLineNumber = "19"
+                  offsetFromSymbolStart = "89">
+               </Location>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.(scheme (SwifterOSX.SQLiteActiveRecordProxy) -&gt; () -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;).(closure #1)"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438948127.741549"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "19"
+                  endingLineNumber = "19"
+                  offsetFromSymbolStart = "16">
+               </Location>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "reabstraction thunk helper from @callee_owned (@unowned Swift.UnsafePointer&lt;Swift.Int8&gt;) -&gt; (@unowned Swift.Int32) to @callee_owned (@unowned Swift.UnsafePointer&lt;Swift.Int8&gt;) -&gt; (@out Swift.Int32)"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438948127.74168"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "19"
+                  endingLineNumber = "19"
+                  offsetFromSymbolStart = "11">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/ActiveRecord/SQLiteProxy.swift"
+            timestampString = "438981295.838168"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "31"
+            endingLineNumber = "31"
+            landmarkName = "scheme()"
+            landmarkType = "5">
+            <Locations>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.scheme (SwifterOSX.SQLiteActiveRecordProxy)() -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438979660.68089"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "39"
+                  endingLineNumber = "39"
+                  offsetFromSymbolStart = "110">
+               </Location>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.(scheme (SwifterOSX.SQLiteActiveRecordProxy) -&gt; () -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;).(closure #1)"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438979660.68104"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "39"
+                  endingLineNumber = "39"
+                  offsetFromSymbolStart = "8">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/ActiveRecord/SQLiteProxy.swift"
+            timestampString = "438979667.950649"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "18"
+            endingLineNumber = "18"
+            landmarkName = "execute(_:iteratorCallback:)"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/ActiveRecord/SQLiteProxy.swift"
+            timestampString = "438981308.004935"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "30"
+            endingLineNumber = "30"
+            landmarkName = "scheme()"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Common/ActiveRecord/SQLiteProxy.swift"
+            timestampString = "438981309.211495"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "32"
+            endingLineNumber = "32"
+            landmarkName = "scheme()"
+            landmarkType = "5">
+            <Locations>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.(scheme (SwifterOSX.SQLiteActiveRecordProxy) -&gt; () -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;).(closure #1)"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438981445.794237"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "32"
+                  endingLineNumber = "32"
+                  offsetFromSymbolStart = "19">
+               </Location>
+               <Location
+                  shouldBeEnabled = "No"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "SwifterOSX.SQLiteActiveRecordProxy.(scheme (SwifterOSX.SQLiteActiveRecordProxy) -&gt; () -&gt; Swift.Dictionary&lt;Swift.String, Swift.Dictionary&lt;Swift.String, SwifterOSX.ActiveRecordType&gt;&gt;).(closure #1)"
+                  moduleName = "SwifterOSX"
+                  urlString = "file:///Users/damiankolakowski/Desktop/swifter/Common/ActiveRecord/SQLiteProxy.swift"
+                  timestampString = "438981445.794367"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "32"
+                  endingLineNumber = "32"
+                  offsetFromSymbolStart = "25">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
    </Breakpoints>
 </Bucket>
 </Bucket>

+ 0 - 2
Swifter/AppDelegate.swift

@@ -1,8 +1,6 @@
 //
 //
 //  AppDelegate.swift
 //  AppDelegate.swift
 //  TestSwift
 //  TestSwift
-//
-//  Created by Damian Kolakowski on 05/06/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 

+ 0 - 2
Swifter/ViewController.swift

@@ -1,8 +1,6 @@
 //
 //
 //  ViewController.swift
 //  ViewController.swift
 //  Swifter
 //  Swifter
-//
-//  Created by Damian Kolakowski on 06/06/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 

+ 4 - 2
SwifterOSX/main.swift

@@ -1,13 +1,15 @@
 //
 //
 //  main.swift
 //  main.swift
 //  SwifterOSX
 //  SwifterOSX
-//
-//  Created by Damian Kolakowski on 19/08/14.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //  Copyright (c) 2014 Damian Kołakowski. All rights reserved.
 //
 //
 
 
 import Foundation
 import Foundation
 
 
+let DB = SQLiteActiveRecordProxy(name: "sample.db")
+
+let scheme = DB.scheme()
+
 let server = demoServer(NSBundle.mainBundle().resourcePath)
 let server = demoServer(NSBundle.mainBundle().resourcePath)
 
 
 var error: NSError?
 var error: NSError?