From a424dcb491f9eb8e26f5d8da108904eae1353812 Mon Sep 17 00:00:00 2001 From: Omar Bizreh Date: Mon, 11 Jan 2016 14:58:15 +0200 Subject: [PATCH 1/2] Convert to Framework --- .../Camembert.xcodeproj/project.pbxproj | 605 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 19993 bytes .../UserInterfaceState.xcuserstate | Bin 0 -> 21399 bytes .../xcschemes/Camembert.xcscheme | 99 +++ .../xcschemes/xcschememanagement.plist | 27 + .../xcschemes/Camembert OSX.xcscheme | 89 +++ .../xcschemes/Camembert.xcscheme | 99 +++ .../xcschemes/xcschememanagement.plist | 42 ++ Camembert Framework/Camembert/Camembert.h | 26 + .../Camembert}/Camembert.swift | 70 +- .../Camembert}/CamembertMisc.m | 2 + .../Camembert}/CamembertModel.swift | 17 +- .../Camembert}/ExtensionsClass.swift | 0 Camembert Framework/Camembert/Info.plist | 26 + .../Camembert/Modules/module.map | 19 + .../Camembert/Scripts/BuildScript.sh | 36 ++ .../CamembertOSX/CamembertOSX.h | 22 + Camembert Framework/CamembertOSX/Info.plist | 26 + .../CamembertTests/CamembertTests.swift | 36 ++ Camembert Framework/CamembertTests/Info.plist | 24 + .../CamembertLogo.png | Bin sources/Camembert.h | 20 - 23 files changed, 1240 insertions(+), 52 deletions(-) create mode 100644 Camembert Framework/Camembert.xcodeproj/project.pbxproj create mode 100644 Camembert Framework/Camembert.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Camembert Framework/Camembert.xcodeproj/project.xcworkspace/xcuserdata/Omar.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Camembert Framework/Camembert.xcodeproj/project.xcworkspace/xcuserdata/eduwaredotnet.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/Camembert.xcscheme create mode 100644 Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert OSX.xcscheme create mode 100644 Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert.xcscheme create mode 100644 Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Camembert Framework/Camembert/Camembert.h rename {sources => Camembert Framework/Camembert}/Camembert.swift (82%) rename {sources => Camembert Framework/Camembert}/CamembertMisc.m (94%) rename {sources => Camembert Framework/Camembert}/CamembertModel.swift (98%) rename {sources => Camembert Framework/Camembert}/ExtensionsClass.swift (100%) create mode 100644 Camembert Framework/Camembert/Info.plist create mode 100644 Camembert Framework/Camembert/Modules/module.map create mode 100644 Camembert Framework/Camembert/Scripts/BuildScript.sh create mode 100644 Camembert Framework/CamembertOSX/CamembertOSX.h create mode 100644 Camembert Framework/CamembertOSX/Info.plist create mode 100644 Camembert Framework/CamembertTests/CamembertTests.swift create mode 100644 Camembert Framework/CamembertTests/Info.plist rename {ressources => Github Resources}/CamembertLogo.png (100%) delete mode 100755 sources/Camembert.h diff --git a/Camembert Framework/Camembert.xcodeproj/project.pbxproj b/Camembert Framework/Camembert.xcodeproj/project.pbxproj new file mode 100644 index 0000000..b048cb5 --- /dev/null +++ b/Camembert Framework/Camembert.xcodeproj/project.pbxproj @@ -0,0 +1,605 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0749EFD71C42FB8A00DCC79F /* Camembert.h in Headers */ = {isa = PBXBuildFile; fileRef = 0749EFD61C42FB8A00DCC79F /* Camembert.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0749EFDE1C42FB8A00DCC79F /* Camembert.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0749EFD31C42FB8900DCC79F /* Camembert.framework */; }; + 0749EFE31C42FB8A00DCC79F /* CamembertTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFE21C42FB8A00DCC79F /* CamembertTests.swift */; }; + 0749EFFE1C42FC7E00DCC79F /* Camembert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFF91C42FC7E00DCC79F /* Camembert.swift */; }; + 0749EFFF1C42FC7E00DCC79F /* CamembertMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFFA1C42FC7E00DCC79F /* CamembertMisc.m */; }; + 0749F0001C42FC7E00DCC79F /* CamembertModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFFB1C42FC7E00DCC79F /* CamembertModel.swift */; }; + 0749F0011C42FC7E00DCC79F /* ExtensionsClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFFC1C42FC7E00DCC79F /* ExtensionsClass.swift */; }; + 0749F00E1C430E2000DCC79F /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0749F00C1C430E2000DCC79F /* libsqlite3.0.tbd */; }; + 0749F00F1C430E2000DCC79F /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0749F00D1C430E2000DCC79F /* libsqlite3.tbd */; }; + 6F77583E1C43BB77001E2091 /* CamembertOSX.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F77583D1C43BB77001E2091 /* CamembertOSX.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6F7758441C43BBEA001E2091 /* Camembert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFF91C42FC7E00DCC79F /* Camembert.swift */; }; + 6F7758451C43BBEA001E2091 /* CamembertMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFFA1C42FC7E00DCC79F /* CamembertMisc.m */; }; + 6F7758461C43BBEA001E2091 /* CamembertModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFFB1C42FC7E00DCC79F /* CamembertModel.swift */; }; + 6F7758471C43BBEA001E2091 /* ExtensionsClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0749EFFC1C42FC7E00DCC79F /* ExtensionsClass.swift */; }; + 6F77584A1C43BCED001E2091 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F7758481C43BCED001E2091 /* libsqlite3.0.tbd */; }; + 6F77584B1C43BCED001E2091 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F7758491C43BCED001E2091 /* libsqlite3.tbd */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0749EFDF1C42FB8A00DCC79F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0749EFCA1C42FB8900DCC79F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0749EFD21C42FB8900DCC79F; + remoteInfo = Camembert; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0749EFD31C42FB8900DCC79F /* Camembert.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Camembert.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0749EFD61C42FB8A00DCC79F /* Camembert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Camembert.h; sourceTree = ""; }; + 0749EFD81C42FB8A00DCC79F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0749EFDD1C42FB8A00DCC79F /* CamembertTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CamembertTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 0749EFE21C42FB8A00DCC79F /* CamembertTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CamembertTests.swift; sourceTree = ""; }; + 0749EFE41C42FB8A00DCC79F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0749EFF91C42FC7E00DCC79F /* Camembert.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Camembert.swift; sourceTree = ""; }; + 0749EFFA1C42FC7E00DCC79F /* CamembertMisc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CamembertMisc.m; sourceTree = ""; }; + 0749EFFB1C42FC7E00DCC79F /* CamembertModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CamembertModel.swift; sourceTree = ""; }; + 0749EFFC1C42FC7E00DCC79F /* ExtensionsClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExtensionsClass.swift; sourceTree = ""; }; + 0749F00C1C430E2000DCC79F /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = usr/lib/libsqlite3.0.tbd; sourceTree = SDKROOT; }; + 0749F00D1C430E2000DCC79F /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; + 0749F0131C430EB900DCC79F /* module.map */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; name = module.map; path = Modules/module.map; sourceTree = ""; }; + 6F77583B1C43BB77001E2091 /* CamembertOSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CamembertOSX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6F77583D1C43BB77001E2091 /* CamembertOSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CamembertOSX.h; sourceTree = ""; }; + 6F77583F1C43BB77001E2091 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6F7758481C43BCED001E2091 /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/lib/libsqlite3.0.tbd; sourceTree = DEVELOPER_DIR; }; + 6F7758491C43BCED001E2091 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/lib/libsqlite3.tbd; sourceTree = DEVELOPER_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0749EFCF1C42FB8900DCC79F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0749F00E1C430E2000DCC79F /* libsqlite3.0.tbd in Frameworks */, + 0749F00F1C430E2000DCC79F /* libsqlite3.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0749EFDA1C42FB8A00DCC79F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0749EFDE1C42FB8A00DCC79F /* Camembert.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6F7758371C43BB77001E2091 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F77584A1C43BCED001E2091 /* libsqlite3.0.tbd in Frameworks */, + 6F77584B1C43BCED001E2091 /* libsqlite3.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0749EFC91C42FB8900DCC79F = { + isa = PBXGroup; + children = ( + 0749EFD51C42FB8A00DCC79F /* Camembert */, + 0749EFE11C42FB8A00DCC79F /* CamembertTests */, + 6F77583C1C43BB77001E2091 /* CamembertOSX */, + 0749EFD41C42FB8900DCC79F /* Products */, + ); + sourceTree = ""; + }; + 0749EFD41C42FB8900DCC79F /* Products */ = { + isa = PBXGroup; + children = ( + 0749EFD31C42FB8900DCC79F /* Camembert.framework */, + 0749EFDD1C42FB8A00DCC79F /* CamembertTests.xctest */, + 6F77583B1C43BB77001E2091 /* CamembertOSX.framework */, + ); + name = Products; + sourceTree = ""; + }; + 0749EFD51C42FB8A00DCC79F /* Camembert */ = { + isa = PBXGroup; + children = ( + 0749F0101C430E8700DCC79F /* Modules */, + 0749EFD61C42FB8A00DCC79F /* Camembert.h */, + 0749EFF91C42FC7E00DCC79F /* Camembert.swift */, + 0749EFFA1C42FC7E00DCC79F /* CamembertMisc.m */, + 0749EFFB1C42FC7E00DCC79F /* CamembertModel.swift */, + 0749EFFC1C42FC7E00DCC79F /* ExtensionsClass.swift */, + 0749EFD81C42FB8A00DCC79F /* Info.plist */, + ); + path = Camembert; + sourceTree = ""; + }; + 0749EFE11C42FB8A00DCC79F /* CamembertTests */ = { + isa = PBXGroup; + children = ( + 0749EFE21C42FB8A00DCC79F /* CamembertTests.swift */, + 0749EFE41C42FB8A00DCC79F /* Info.plist */, + ); + path = CamembertTests; + sourceTree = ""; + }; + 0749F0101C430E8700DCC79F /* Modules */ = { + isa = PBXGroup; + children = ( + 0749F00C1C430E2000DCC79F /* libsqlite3.0.tbd */, + 0749F00D1C430E2000DCC79F /* libsqlite3.tbd */, + 0749F0131C430EB900DCC79F /* module.map */, + ); + name = Modules; + sourceTree = ""; + }; + 6F77583C1C43BB77001E2091 /* CamembertOSX */ = { + isa = PBXGroup; + children = ( + 6F77584C1C43BCFB001E2091 /* Modules */, + 6F77583D1C43BB77001E2091 /* CamembertOSX.h */, + 6F77583F1C43BB77001E2091 /* Info.plist */, + ); + path = CamembertOSX; + sourceTree = ""; + }; + 6F77584C1C43BCFB001E2091 /* Modules */ = { + isa = PBXGroup; + children = ( + 6F7758481C43BCED001E2091 /* libsqlite3.0.tbd */, + 6F7758491C43BCED001E2091 /* libsqlite3.tbd */, + ); + name = Modules; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 0749EFD01C42FB8900DCC79F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0749EFD71C42FB8A00DCC79F /* Camembert.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6F7758381C43BB77001E2091 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F77583E1C43BB77001E2091 /* CamembertOSX.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0749EFD21C42FB8900DCC79F /* Camembert */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0749EFE71C42FB8A00DCC79F /* Build configuration list for PBXNativeTarget "Camembert" */; + buildPhases = ( + 0749EFCE1C42FB8900DCC79F /* Sources */, + 0749EFCF1C42FB8900DCC79F /* Frameworks */, + 0749EFD01C42FB8900DCC79F /* Headers */, + 0749EFD11C42FB8900DCC79F /* Resources */, + 6FDE30DD1C438F7B00D25614 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Camembert; + productName = Camembert; + productReference = 0749EFD31C42FB8900DCC79F /* Camembert.framework */; + productType = "com.apple.product-type.framework"; + }; + 0749EFDC1C42FB8A00DCC79F /* CamembertTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0749EFEA1C42FB8A00DCC79F /* Build configuration list for PBXNativeTarget "CamembertTests" */; + buildPhases = ( + 0749EFD91C42FB8A00DCC79F /* Sources */, + 0749EFDA1C42FB8A00DCC79F /* Frameworks */, + 0749EFDB1C42FB8A00DCC79F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 0749EFE01C42FB8A00DCC79F /* PBXTargetDependency */, + ); + name = CamembertTests; + productName = CamembertTests; + productReference = 0749EFDD1C42FB8A00DCC79F /* CamembertTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 6F77583A1C43BB77001E2091 /* CamembertOSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6F7758401C43BB77001E2091 /* Build configuration list for PBXNativeTarget "CamembertOSX" */; + buildPhases = ( + 6F7758361C43BB77001E2091 /* Sources */, + 6F7758371C43BB77001E2091 /* Frameworks */, + 6F7758381C43BB77001E2091 /* Headers */, + 6F7758391C43BB77001E2091 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CamembertOSX; + productName = CamembertOSX; + productReference = 6F77583B1C43BB77001E2091 /* CamembertOSX.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0749EFCA1C42FB8900DCC79F /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = "Omar Bizreh"; + TargetAttributes = { + 0749EFD21C42FB8900DCC79F = { + CreatedOnToolsVersion = 7.2; + }; + 0749EFDC1C42FB8A00DCC79F = { + CreatedOnToolsVersion = 7.2; + }; + 6F77583A1C43BB77001E2091 = { + CreatedOnToolsVersion = 7.2; + }; + }; + }; + buildConfigurationList = 0749EFCD1C42FB8900DCC79F /* Build configuration list for PBXProject "Camembert" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 0749EFC91C42FB8900DCC79F; + productRefGroup = 0749EFD41C42FB8900DCC79F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0749EFD21C42FB8900DCC79F /* Camembert */, + 0749EFDC1C42FB8A00DCC79F /* CamembertTests */, + 6F77583A1C43BB77001E2091 /* CamembertOSX */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0749EFD11C42FB8900DCC79F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0749EFDB1C42FB8A00DCC79F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6F7758391C43BB77001E2091 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 6FDE30DD1C438F7B00D25614 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/bin/sh\n\nUNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal\n\n# make sure the output directory exists\nmkdir -p \"${UNIVERSAL_OUTPUTFOLDER}\"\n\n# Next, work out if we're in SIM or DEVICE\nif [ \"false\" == ${ALREADYINVOKED:-false} ]\nthen\n\nexport ALREADYINVOKED=\"true\"\n\nif [ ${PLATFORM_NAME} = \"iphonesimulator\" ]\nthen\nxcodebuild -target \"${PROJECT_NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" clean build\nelse\nxcodebuild -target \"${PROJECT_NAME}\" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" clean build\nfi\n# Step 2. Copy the framework structure (from iphoneos build) to the universal folder\ncp -R \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework\" \"${UNIVERSAL_OUTPUTFOLDER}/\"\n\n# Step 3. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory\nSIMULATOR_SWIFT_MODULES_DIR=\"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/.\"\nif [ -d \"${SIMULATOR_SWIFT_MODULES_DIR}\" ]; then\ncp -R \"${SIMULATOR_SWIFT_MODULES_DIR}\" \"${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule\"\nfi\n\n# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory\nlipo -create -output \"${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}\" \"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}\" \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}\"\n\n# Step 5. Convenience step to copy the framework to the project's directory\ncp -R \"${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework\" \"${PROJECT_DIR}\"\n\n# Step 6. Convenience step to open the project's directory in Finder\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0749EFCE1C42FB8900DCC79F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0749EFFF1C42FC7E00DCC79F /* CamembertMisc.m in Sources */, + 0749F0001C42FC7E00DCC79F /* CamembertModel.swift in Sources */, + 0749F0011C42FC7E00DCC79F /* ExtensionsClass.swift in Sources */, + 0749EFFE1C42FC7E00DCC79F /* Camembert.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0749EFD91C42FB8A00DCC79F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0749EFE31C42FB8A00DCC79F /* CamembertTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6F7758361C43BB77001E2091 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F7758441C43BBEA001E2091 /* Camembert.swift in Sources */, + 6F7758451C43BBEA001E2091 /* CamembertMisc.m in Sources */, + 6F7758461C43BBEA001E2091 /* CamembertModel.swift in Sources */, + 6F7758471C43BBEA001E2091 /* ExtensionsClass.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0749EFE01C42FB8A00DCC79F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0749EFD21C42FB8900DCC79F /* Camembert */; + targetProxy = 0749EFDF1C42FB8A00DCC79F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0749EFE51C42FB8A00DCC79F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = 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_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + 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 = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 0749EFE61C42FB8A00DCC79F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = 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_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 0749EFE81C42FB8A00DCC79F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(SDKROOT)", + ); + INFOPLIST_FILE = Camembert/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks @executable_path/../Frameworks @loader_path/../Frameworks"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = "-.Camembert"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos9.2; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx"; + SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Camembert/Modules"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VALID_ARCHS = "arm64 armv7 armv7s x86_64"; + }; + name = Debug; + }; + 0749EFE91C42FB8A00DCC79F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO; + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(SDKROOT)", + ); + INFOPLIST_FILE = Camembert/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks @executable_path/../Frameworks @loader_path/../Frameworks"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = "-.Camembert"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos9.2; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos macosx"; + SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Camembert/Modules"; + VALID_ARCHS = "arm64 armv7 armv7s x86_64"; + }; + name = Release; + }; + 0749EFEB1C42FB8A00DCC79F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = CamembertTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "-.CamembertTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 0749EFEC1C42FB8A00DCC79F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = CamembertTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "-.CamembertTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 6F7758411C43BB77001E2091 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CamembertOSX/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "Omar-Bizreh.CamembertOSX"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Camembert/Modules"; + }; + name = Debug; + }; + 6F7758421C43BB77001E2091 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CamembertOSX/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "Omar-Bizreh.CamembertOSX"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Camembert/Modules"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0749EFCD1C42FB8900DCC79F /* Build configuration list for PBXProject "Camembert" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0749EFE51C42FB8A00DCC79F /* Debug */, + 0749EFE61C42FB8A00DCC79F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0749EFE71C42FB8A00DCC79F /* Build configuration list for PBXNativeTarget "Camembert" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0749EFE81C42FB8A00DCC79F /* Debug */, + 0749EFE91C42FB8A00DCC79F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0749EFEA1C42FB8A00DCC79F /* Build configuration list for PBXNativeTarget "CamembertTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0749EFEB1C42FB8A00DCC79F /* Debug */, + 0749EFEC1C42FB8A00DCC79F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6F7758401C43BB77001E2091 /* Build configuration list for PBXNativeTarget "CamembertOSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6F7758411C43BB77001E2091 /* Debug */, + 6F7758421C43BB77001E2091 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0749EFCA1C42FB8900DCC79F /* Project object */; +} diff --git a/Camembert Framework/Camembert.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Camembert Framework/Camembert.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..12e37a1 --- /dev/null +++ b/Camembert Framework/Camembert.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Camembert Framework/Camembert.xcodeproj/project.xcworkspace/xcuserdata/Omar.xcuserdatad/UserInterfaceState.xcuserstate b/Camembert Framework/Camembert.xcodeproj/project.xcworkspace/xcuserdata/Omar.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..7b15a1ce59152158625118cb2d4cfe92f2759a50 GIT binary patch literal 19993 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 literal 0 HcmV?d00001 diff --git a/Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/Camembert.xcscheme b/Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/Camembert.xcscheme new file mode 100644 index 0000000..826977e --- /dev/null +++ b/Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/Camembert.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/xcschememanagement.plist b/Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..a365be0 --- /dev/null +++ b/Camembert Framework/Camembert.xcodeproj/xcuserdata/Omar.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + Camembert.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 0749EFD21C42FB8900DCC79F + + primary + + + 0749EFDC1C42FB8A00DCC79F + + primary + + + + + diff --git a/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert OSX.xcscheme b/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert OSX.xcscheme new file mode 100644 index 0000000..ddcbbde --- /dev/null +++ b/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert OSX.xcscheme @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert.xcscheme b/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert.xcscheme new file mode 100644 index 0000000..a466738 --- /dev/null +++ b/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/Camembert.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/xcschememanagement.plist b/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..85d9539 --- /dev/null +++ b/Camembert Framework/Camembert.xcodeproj/xcuserdata/eduwaredotnet.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,42 @@ + + + + + SchemeUserState + + Camembert OSX.xcscheme + + orderHint + 1 + + Camembert.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 0749EFD21C42FB8900DCC79F + + primary + + + 0749EFDC1C42FB8A00DCC79F + + primary + + + 6F77582B1C43BA42001E2091 + + primary + + + 6F77583A1C43BB77001E2091 + + primary + + + + + diff --git a/Camembert Framework/Camembert/Camembert.h b/Camembert Framework/Camembert/Camembert.h new file mode 100644 index 0000000..20d1c3b --- /dev/null +++ b/Camembert Framework/Camembert/Camembert.h @@ -0,0 +1,26 @@ +// +// Camembert.swift +// SwiftSQL +// +// Created by Remi Robert on 28/08/14. +// Modified by Omar Bizreh on 11/1/16. +// Copyright (c) 2014 remirobert. All rights reserved. +// + +#import +#import + +//! Project version number for Camembert. +FOUNDATION_EXPORT double CamembertVersionNumber; + +//! Project version string for Camembert. +FOUNDATION_EXPORT const unsigned char CamembertVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + + +BOOL camembertExecSqlite3(void *ptrSqlite3, const char *request); +id camembertCreateObject(NSString *nameClass); + + diff --git a/sources/Camembert.swift b/Camembert Framework/Camembert/Camembert.swift similarity index 82% rename from sources/Camembert.swift rename to Camembert Framework/Camembert/Camembert.swift index def974b..e2fb527 100755 --- a/sources/Camembert.swift +++ b/Camembert Framework/Camembert/Camembert.swift @@ -4,27 +4,39 @@ // SwiftSQL // // Created by Remi Robert on 28/08/14. +// Modified by Omar Bizreh on 11/1/16. // Copyright (c) 2014 remirobert. All rights reserved. // import Foundation +// Code from https://github.com/nerdyc/Squeal +#if os(iOS) +#if arch(i386) || arch(x86_64) + import sqlite3_ios_simulator + #else + import sqlite3_ios +#endif +#else + import sqlite3_osx +#endif +// End of code -typealias INTEGER = Int -typealias REAL = Float -typealias TEXT = String -typealias DATE_TIME = NSDate -typealias BIT = Bool +public typealias INTEGER = Int +public typealias REAL = Float +public typealias TEXT = String +public typealias DATE_TIME = NSDate +public typealias BIT = Bool -enum Operator { +public enum Operator { case LargerThan, LargerOrEqual, SmallerThan,SmallerOrEqual, EqualsTo, IsNull, NotNull } -enum OrderOperator{ +public enum OrderOperator{ case Ascending, Descending } -enum Select { +public enum Select { case SelectAll(OrderOperator, String) case CustomRequest(String) case Limit(Int, OrderOperator, String) @@ -32,11 +44,11 @@ enum Select { case Where(String, Operator, Any, OrderOperator, String) } -class DataAccess { - var dataAccess :COpaquePointer = nil - var nameDataBase: String? = nil +@objc public class DataAccess : NSObject { + public var dataAccess :COpaquePointer = nil + public var nameDataBase: String? = nil private var _dbpath: String? = nil; - var DbPath: String? { + public var DbPath: String? { get{ return self._dbpath; } @@ -54,24 +66,24 @@ class DataAccess { self._dbpath = value; } } - - class var access :DataAccess { - struct Static { - static let instance : DataAccess = DataAccess() + + public class var access :DataAccess { + struct Static { + static let instance : DataAccess = DataAccess() } return Static.instance } } -class Camembert { +@objc public class Camembert : NSObject{ class var Date_Time_Format:String { get - { - return "yyyy'-'MM'-'dd hh':'mm':'ss'"; + { + return "yyyy'-'MM'-'dd hh':'mm':'ss'"; } } - class func initDataBase(nameDatabase :String) -> Bool { + public class func initDataBase(nameDatabase :String) -> Bool { let documentDirectory :String = NSSearchPathForDirectoriesInDomains( .DocumentDirectory, .UserDomainMask, true)[0] as String @@ -87,7 +99,7 @@ class Camembert { return true } - class func initDataBase(databaseFolder: String, nameDatabase :String) -> Bool{ + public class func initDataBase(databaseFolder: String, nameDatabase :String) -> Bool{ DataAccess.access.DbPath = databaseFolder; let ret = sqlite3_open(databaseFolder.cStringUsingEncoding(NSUTF8StringEncoding)!, @@ -98,8 +110,8 @@ class Camembert { DataAccess.access.nameDataBase = nameDatabase return true; } - - class func createDataBase(nameDatabase: String) -> Bool { + + public class func createDataBase(nameDatabase: String) -> Bool { let documentDirectory :String = NSSearchPathForDirectoriesInDomains( .DocumentDirectory, .UserDomainMask, true)[0] as String @@ -107,7 +119,7 @@ class Camembert { if sqlite3_open_v2(pathDatabase.cStringUsingEncoding(NSUTF8StringEncoding)!, &DataAccess.access.dataAccess, (SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE), nil) != SQLITE_OK { - + DataAccess.access.dataAccess = nil return false } @@ -115,7 +127,7 @@ class Camembert { return true } - class func createDataBase(databaseFolder: String, nameDatabase: String) -> Bool { + public class func createDataBase(databaseFolder: String, nameDatabase: String) -> Bool { if DataAccess.access.DbPath == nil { DataAccess.access.DbPath = databaseFolder; } @@ -130,7 +142,7 @@ class Camembert { return true } - class func closeDataBase() -> Bool { + public class func closeDataBase() -> Bool { if sqlite3_close(DataAccess.access.dataAccess) == SQLITE_OK { DataAccess.access.dataAccess = nil return true @@ -138,7 +150,7 @@ class Camembert { DataAccess.access.dataAccess = nil return false } - + func getObjectsWithQuery(query :String, table :String) -> [AnyObject]! { var ptrRequest :COpaquePointer = nil var objects :Array = [] @@ -175,7 +187,7 @@ class Camembert { return objects } - class func execQuery(query :String) -> COpaquePointer { + public class func execQuery(query :String) -> COpaquePointer { var ptrRequest :COpaquePointer = nil if sqlite3_prepare_v2(DataAccess.access.dataAccess, @@ -187,7 +199,7 @@ class Camembert { return ptrRequest } - class func getListTable() -> [String] { + public class func getListTable() -> [String] { var tables :[String] = [] var ptrRequest :COpaquePointer = nil let requestListTables :String = "SELECT name FROM sqlite_master WHERE type='table';" diff --git a/sources/CamembertMisc.m b/Camembert Framework/Camembert/CamembertMisc.m similarity index 94% rename from sources/CamembertMisc.m rename to Camembert Framework/Camembert/CamembertMisc.m index ca59db1..3e40393 100755 --- a/sources/CamembertMisc.m +++ b/Camembert Framework/Camembert/CamembertMisc.m @@ -3,10 +3,12 @@ // SwiftSQL // // Created by Remi Robert on 25/08/14. +// Modified by Omar Bizreh on 11/1/16. // Copyright (c) 2014 remirobert. All rights reserved. // #import "Camembert.h" +#import "sqlite3.h" BOOL camembertExecSqlite3(void *ptrSqlite3, const char *request) { char *msgErr; diff --git a/sources/CamembertModel.swift b/Camembert Framework/Camembert/CamembertModel.swift similarity index 98% rename from sources/CamembertModel.swift rename to Camembert Framework/Camembert/CamembertModel.swift index 43e0c39..a8ea071 100755 --- a/sources/CamembertModel.swift +++ b/Camembert Framework/Camembert/CamembertModel.swift @@ -3,12 +3,23 @@ // SwiftSQL // // Created by Remi Robert on 20/08/14. +// Modified by Omar Bizreh on 11/1/16. // Copyright (c) 2014 remirobert. All rights reserved. // - import Foundation - -class CamembertModel :NSObject { +// Code from https://github.com/nerdyc/Squeal +#if os(iOS) +#if arch(i386) || arch(x86_64) + import sqlite3_ios_simulator + #else + import sqlite3_ios +#endif +#else + import sqlite3_osx +#endif +// End of code + +@objc public class CamembertModel :NSObject { private var nameTable :String! = nil var id :Int? = nil diff --git a/sources/ExtensionsClass.swift b/Camembert Framework/Camembert/ExtensionsClass.swift similarity index 100% rename from sources/ExtensionsClass.swift rename to Camembert Framework/Camembert/ExtensionsClass.swift diff --git a/Camembert Framework/Camembert/Info.plist b/Camembert Framework/Camembert/Info.plist new file mode 100644 index 0000000..d3de8ee --- /dev/null +++ b/Camembert Framework/Camembert/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Camembert Framework/Camembert/Modules/module.map b/Camembert Framework/Camembert/Modules/module.map new file mode 100644 index 0000000..1cc34bf --- /dev/null +++ b/Camembert Framework/Camembert/Modules/module.map @@ -0,0 +1,19 @@ +// Thanks to nerdyc "https://github.com/nerdyc" who have implemented SQLite in Swift Framework in his project Squeal "https://github.com/nerdyc/Squeal" + +module sqlite3_osx [system] { + header "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/sqlite3.h" + link "sqlite3" + export * +} + +module sqlite3_ios [system] { + header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sqlite3.h" + link "sqlite3" + export * +} + +module sqlite3_ios_simulator [system] { + header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sqlite3.h" + link "sqlite3" + export * +} \ No newline at end of file diff --git a/Camembert Framework/Camembert/Scripts/BuildScript.sh b/Camembert Framework/Camembert/Scripts/BuildScript.sh new file mode 100644 index 0000000..cc917db --- /dev/null +++ b/Camembert Framework/Camembert/Scripts/BuildScript.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal + +# make sure the output directory exists +mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" + +# Next, work out if we're in SIM or DEVICE +if [ "false" == ${ALREADYINVOKED:-false} ] +then + +export ALREADYINVOKED="true" + +if [ ${PLATFORM_NAME} = "iphonesimulator" ] +then +xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build +else +xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build +fi +# Step 2. Copy the framework structure (from iphoneos build) to the universal folder +cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/" + +# Step 3. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory +SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/." +if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then +cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule" +fi + +# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory +lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}" + +# Step 5. Convenience step to copy the framework to the project's directory +cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}" + +# Step 6. Convenience step to open the project's directory in Finder +fi \ No newline at end of file diff --git a/Camembert Framework/CamembertOSX/CamembertOSX.h b/Camembert Framework/CamembertOSX/CamembertOSX.h new file mode 100644 index 0000000..cf903a1 --- /dev/null +++ b/Camembert Framework/CamembertOSX/CamembertOSX.h @@ -0,0 +1,22 @@ +// +// CamembertOSX.h +// CamembertOSX +// +// Created by Eduware Dot Net on 1/11/16. +// Copyright © 2016 Omar Bizreh. All rights reserved. +// +#import +#import + +//! Project version number for Camembert. +FOUNDATION_EXPORT double CamembertVersionNumber; + +//! Project version string for Camembert. +FOUNDATION_EXPORT const unsigned char CamembertVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + + +BOOL camembertExecSqlite3(void *ptrSqlite3, const char *request); +id camembertCreateObject(NSString *nameClass); diff --git a/Camembert Framework/CamembertOSX/Info.plist b/Camembert Framework/CamembertOSX/Info.plist new file mode 100644 index 0000000..d3de8ee --- /dev/null +++ b/Camembert Framework/CamembertOSX/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Camembert Framework/CamembertTests/CamembertTests.swift b/Camembert Framework/CamembertTests/CamembertTests.swift new file mode 100644 index 0000000..ed81c96 --- /dev/null +++ b/Camembert Framework/CamembertTests/CamembertTests.swift @@ -0,0 +1,36 @@ +// +// CamembertTests.swift +// CamembertTests +// +// Created by Omar Bizreh on 1/10/16. +// Copyright © 2016 Omar Bizreh. All rights reserved. +// + +import XCTest +@testable import Camembert + +class CamembertTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measureBlock { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/Camembert Framework/CamembertTests/Info.plist b/Camembert Framework/CamembertTests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/Camembert Framework/CamembertTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/ressources/CamembertLogo.png b/Github Resources/CamembertLogo.png similarity index 100% rename from ressources/CamembertLogo.png rename to Github Resources/CamembertLogo.png diff --git a/sources/Camembert.h b/sources/Camembert.h deleted file mode 100755 index df8a3d9..0000000 --- a/sources/Camembert.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// Camembert.h -// CamemberDebug -// -// Created by Remi Robert on 23/10/14. -// Copyright (c) 2014 remirobert. All rights reserved. -// - -#ifndef CamemberDebug_Camembert_h -#define CamemberDebug_Camembert_h - - -#import -#import "sqlite3.h" -#import - -BOOL camembertExecSqlite3(void *ptrSqlite3, const char *request); -id camembertCreateObject(NSString *nameClass); - -#endif From 863c47c4c4f72063accb2680ad37288b449b2e64 Mon Sep 17 00:00:00 2001 From: Omar Bizreh Date: Mon, 11 Jan 2016 15:44:25 +0200 Subject: [PATCH 2/2] Fix access of some functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added missing “public” access modifier in CamembertModel --- .../UserInterfaceState.xcuserstate | Bin 21399 -> 21462 bytes .../Camembert/CamembertModel.swift | 40 +++++++++--------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Camembert Framework/Camembert.xcodeproj/project.xcworkspace/xcuserdata/eduwaredotnet.xcuserdatad/UserInterfaceState.xcuserstate b/Camembert Framework/Camembert.xcodeproj/project.xcworkspace/xcuserdata/eduwaredotnet.xcuserdatad/UserInterfaceState.xcuserstate index 5be59b139c5b164e69289ed984f6aa65e10782e6..de31b685ea33418d25e3ed90fc22d9866d40a80b 100644 GIT binary patch delta 11631 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 VIiwig=+72-DlpQ{{#BN9LE3v delta 11747 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 diff --git a/Camembert Framework/Camembert/CamembertModel.swift b/Camembert Framework/Camembert/CamembertModel.swift index a8ea071..7d462c7 100755 --- a/Camembert Framework/Camembert/CamembertModel.swift +++ b/Camembert Framework/Camembert/CamembertModel.swift @@ -18,7 +18,7 @@ import Foundation import sqlite3_osx #endif // End of code - + @objc public class CamembertModel :NSObject { private var nameTable :String! = nil @@ -37,11 +37,11 @@ import Foundation } } - enum OperationResult{ + public enum OperationResult{ case Success, Error_DuplicatedID, Error_NoRecordFoundWithID, Error_GeneralFailure } - func push() -> OperationResult{ + public func push() -> OperationResult{ if self.id != nil { return OperationResult.Error_DuplicatedID; } @@ -113,7 +113,7 @@ import Foundation return opResult } - func update() -> OperationResult + public func update() -> OperationResult { if self.id == -1 { @@ -165,7 +165,7 @@ import Foundation return opResult; } - func remove() -> OperationResult{ + public func remove() -> OperationResult{ if self.id == nil { return OperationResult.Error_NoRecordFoundWithID; } @@ -181,7 +181,7 @@ import Foundation return OperationResult.Success } - func getSchemaTable() -> [String]! { + public func getSchemaTable() -> [String]! { CamembertModel.openConnection() var arrayString :[String] = [] @@ -212,7 +212,7 @@ import Foundation return arrayString } - func isTableExist() -> Bool { + public func isTableExist() -> Bool { CamembertModel.openConnection() for currentTable in Camembert.getListTable() { @@ -223,7 +223,7 @@ import Foundation return false } - class func getNameTable(inout tmpNameTable :String) -> String { + public class func getNameTable(inout tmpNameTable :String) -> String { let parseString = "0123456789" for currentNumberParse in parseString.characters { @@ -242,7 +242,7 @@ import Foundation self.nameTable = CamembertModel.getNameTable(&tmpNameTable).componentsSeparatedByString(".")[1] } - func sendRequest(inout ptrRequest :COpaquePointer, request :String) -> Bool { + public func sendRequest(inout ptrRequest :COpaquePointer, request :String) -> Bool { CamembertModel.openConnection() if sqlite3_prepare_v2(DataAccess.access.dataAccess, @@ -254,7 +254,7 @@ import Foundation return true } - func createTable() -> Bool { + public func createTable() -> Bool { CamembertModel.openConnection() if self.isTableExist() == false { @@ -267,7 +267,7 @@ import Foundation } } requestCreateTable += ");" -// let request :COpaquePointer = nil + // let request :COpaquePointer = nil camembertExecSqlite3(UnsafeMutablePointer(DataAccess.access.dataAccess), requestCreateTable.cStringUsingEncoding(NSUTF8StringEncoding)!) } @@ -275,7 +275,7 @@ import Foundation return true } - class func numberElement() -> Int { + public class func numberElement() -> Int { CamembertModel.openConnection() var tmpNameTable = NSString(CString: class_getName(self), encoding: NSUTF8StringEncoding) as! String @@ -296,7 +296,7 @@ import Foundation return 0 } - func _initWithId(id :Int) { + public func _initWithId(id :Int) { CamembertModel.openConnection() let requestInit :String = "SELECT * FROM \(self.nameTable) WHERE id=\(id);" @@ -332,13 +332,13 @@ import Foundation sqlite3_finalize(ptrRequest); } - class func getRawClassName() -> String? { + public class func getRawClassName() -> String? { let name = NSStringFromClass(self) let components = name.componentsSeparatedByString(".") return components.last } - class func select(selectRequest select: Select) -> [AnyObject]? { + public class func select(selectRequest select: Select) -> [AnyObject]? { let camembert = Camembert() let table = getRawClassName() var requestSelect: String? = nil @@ -461,8 +461,8 @@ import Foundation resultValue = "\(value)"; } requestSelect = "SELECT * FROM \(table!) WHERE \(Field) < \(resultValue) ORDER BY \(m_OrderBy) \(op)" -// case .IsNull: -// requestSelect = "SELECT * FROM \(table!) WHERE \(Field) IS NULL ORDER BY \(m_OrderBy) \(op)" + // case .IsNull: + // requestSelect = "SELECT * FROM \(table!) WHERE \(Field) IS NULL ORDER BY \(m_OrderBy) \(op)" } break; } @@ -473,7 +473,7 @@ import Foundation return nil } - class func removeTable() { + public class func removeTable() { CamembertModel.openConnection() let table = getRawClassName() let requestRemove :String = "DROP TABLE IF EXISTS \(table!);" @@ -482,13 +482,13 @@ import Foundation requestRemove.cStringUsingEncoding(NSUTF8StringEncoding)!) } - override init() { + public override init() { super.init() self._initNameTable() self.createTable() } - init(id :Int) { + public init(id :Int) { super.init() self._initNameTable() self.createTable()