├── CppFramework ├── CppFramework.h ├── include │ ├── CppClass │ │ └── CppClass.hpp │ ├── IntrusiveRefCounted │ │ └── IntrusiveRefCounted.hpp │ └── Mountain │ │ └── Mountain.hpp └── lib │ ├── CppClass │ └── CppClass.cpp │ └── Mountain │ └── Mountain.cpp ├── CppPractice.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ ├── insub.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── joshua.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ ├── insub.xcuserdatad │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ │ └── xcschememanagement.plist │ └── joshua.xcuserdatad │ └── xcschemes │ └── xcschememanagement.plist ├── CppPractice ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── ContentView.swift ├── CppPractice.entitlements ├── CppPracticeApp.swift └── Preview Content │ └── Preview Assets.xcassets │ └── Contents.json └── README.md /CppFramework/CppFramework.h: -------------------------------------------------------------------------------- 1 | // 2 | // CppFramework.h 3 | // CppFramework 4 | // 5 | // Created by 김인섭 on 10/21/23. 6 | // 7 | 8 | #import 9 | 10 | //! Project version number for CppFramework. 11 | FOUNDATION_EXPORT double CppFrameworkVersionNumber; 12 | 13 | //! Project version string for CppFramework. 14 | FOUNDATION_EXPORT const unsigned char CppFrameworkVersionString[]; 15 | 16 | // In this header, you should import all the public headers of your framework using statements like #import 17 | 18 | #import 19 | #import 20 | -------------------------------------------------------------------------------- /CppFramework/include/CppClass/CppClass.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // CppClass.hpp 3 | // CppFramework 4 | // 5 | // Created by 김인섭 on 10/23/23. 6 | // 7 | 8 | #ifndef CppClass_hpp 9 | #define CppClass_hpp 10 | 11 | #include 12 | 13 | #endif /* CppClass_hpp */ 14 | -------------------------------------------------------------------------------- /CppFramework/include/IntrusiveRefCounted/IntrusiveRefCounted.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // IntrusiveRefCounted.hpp 3 | // CppFramework 4 | // 5 | // Created by 김인섭 on 10/22/23. 6 | // 7 | 8 | #pragma once 9 | 10 | template 11 | class IntrusiveRefCounted { 12 | public: 13 | IntrusiveRefCounted() : referenceCount(1) {} 14 | 15 | IntrusiveRefCounted(const IntrusiveRefCounted &) = delete; 16 | 17 | void retain() { 18 | ++referenceCount; 19 | } 20 | 21 | void release() { 22 | --referenceCount; 23 | if (referenceCount == 0) 24 | delete static_cast(this); 25 | } 26 | private: 27 | int referenceCount; 28 | }; 29 | -------------------------------------------------------------------------------- /CppFramework/include/Mountain/Mountain.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // Mountain.hpp 3 | // CppFramework 4 | // 5 | // Created by 김인섭 on 10/21/23. 6 | // 7 | 8 | #pragma once 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | class Mountain: public IntrusiveRefCounted { 15 | public: 16 | Mountain(std::string name, double height); 17 | void displayInfo(); 18 | void setHeight(double height); 19 | static Mountain* _Nonnull create(std::string name, double height); 20 | 21 | private: 22 | const std::string name; 23 | double height; 24 | } SWIFT_SHARED_REFERENCE(mountainRetain, mountainRelease); 25 | 26 | void mountainRetain(Mountain* _Nonnull mountain); 27 | 28 | void mountainRelease(Mountain* _Nonnull mountain); 29 | -------------------------------------------------------------------------------- /CppFramework/lib/CppClass/CppClass.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // CppClass.cpp 3 | // CppFramework 4 | // 5 | // Created by 김인섭 on 10/23/23. 6 | // 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /CppFramework/lib/Mountain/Mountain.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Mountain.cpp 3 | // CppFramework 4 | // 5 | // Created by 김인섭 on 10/21/23. 6 | // 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | Mountain::Mountain(std::string name, double height): name(name), height(height) {} 13 | 14 | Mountain* _Nonnull Mountain::create(std::string name, double height) { 15 | auto result = new Mountain(name, height); 16 | 17 | return result; 18 | } 19 | 20 | void Mountain::displayInfo() { 21 | std::cout << "Mountain Name: " << name << std::endl; 22 | std::cout << "Height: " << height << " meters" << std::endl; 23 | } 24 | 25 | void Mountain::setHeight(double height) { 26 | this->height = height; 27 | } 28 | 29 | void mountainRetain(Mountain* _Nonnull mountain) { 30 | mountain->retain(); 31 | } 32 | 33 | void mountainRelease(Mountain* _Nonnull mountain) { 34 | mountain->release(); 35 | } 36 | -------------------------------------------------------------------------------- /CppPractice.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 422B63C22AE471CF0072EECF /* Mountain.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 422B63C02AE470D80072EECF /* Mountain.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | FB696F7D2AE6916C0065AEFD /* CppClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB696F7B2AE6916C0065AEFD /* CppClass.cpp */; }; 12 | FB696F7E2AE6916C0065AEFD /* CppClass.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FB696F7C2AE6916C0065AEFD /* CppClass.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; 13 | FB696FBC2AE6B6D70065AEFD /* IntrusiveRefCounted.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FB696FBA2AE6B6D70065AEFD /* IntrusiveRefCounted.hpp */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | FB90B4E92AE3DC2200564514 /* CppPracticeApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB90B4E82AE3DC2200564514 /* CppPracticeApp.swift */; }; 15 | FB90B4EB2AE3DC2200564514 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB90B4EA2AE3DC2200564514 /* ContentView.swift */; }; 16 | FB90B4ED2AE3DC2400564514 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FB90B4EC2AE3DC2400564514 /* Assets.xcassets */; }; 17 | FB90B4F12AE3DC2400564514 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FB90B4F02AE3DC2400564514 /* Preview Assets.xcassets */; }; 18 | FB90B5392AE3E19500564514 /* CppFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = FB90B5382AE3E19500564514 /* CppFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 19 | FB90B53C2AE3E19500564514 /* CppFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB90B5362AE3E19500564514 /* CppFramework.framework */; }; 20 | FB90B53D2AE3E19500564514 /* CppFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FB90B5362AE3E19500564514 /* CppFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 21 | FB90B5432AE3E1AC00564514 /* Mountain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FB90B5412AE3E1AC00564514 /* Mountain.cpp */; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXContainerItemProxy section */ 25 | FB90B53A2AE3E19500564514 /* PBXContainerItemProxy */ = { 26 | isa = PBXContainerItemProxy; 27 | containerPortal = FB90B4DD2AE3DC2200564514 /* Project object */; 28 | proxyType = 1; 29 | remoteGlobalIDString = FB90B5352AE3E19500564514; 30 | remoteInfo = CppFramework; 31 | }; 32 | /* End PBXContainerItemProxy section */ 33 | 34 | /* Begin PBXCopyFilesBuildPhase section */ 35 | FB90B5302AE3E0C200564514 /* Embed Frameworks */ = { 36 | isa = PBXCopyFilesBuildPhase; 37 | buildActionMask = 2147483647; 38 | dstPath = ""; 39 | dstSubfolderSpec = 10; 40 | files = ( 41 | FB90B53D2AE3E19500564514 /* CppFramework.framework in Embed Frameworks */, 42 | ); 43 | name = "Embed Frameworks"; 44 | runOnlyForDeploymentPostprocessing = 0; 45 | }; 46 | /* End PBXCopyFilesBuildPhase section */ 47 | 48 | /* Begin PBXFileReference section */ 49 | 422B63C02AE470D80072EECF /* Mountain.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Mountain.hpp; sourceTree = ""; }; 50 | FB696F7B2AE6916C0065AEFD /* CppClass.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CppClass.cpp; sourceTree = ""; }; 51 | FB696F7C2AE6916C0065AEFD /* CppClass.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CppClass.hpp; sourceTree = ""; }; 52 | FB696FBA2AE6B6D70065AEFD /* IntrusiveRefCounted.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = IntrusiveRefCounted.hpp; sourceTree = ""; }; 53 | FB90B4E52AE3DC2200564514 /* CppPractice.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CppPractice.app; sourceTree = BUILT_PRODUCTS_DIR; }; 54 | FB90B4E82AE3DC2200564514 /* CppPracticeApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CppPracticeApp.swift; sourceTree = ""; }; 55 | FB90B4EA2AE3DC2200564514 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 56 | FB90B4EC2AE3DC2400564514 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 57 | FB90B4EE2AE3DC2400564514 /* CppPractice.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = CppPractice.entitlements; sourceTree = ""; }; 58 | FB90B4F02AE3DC2400564514 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 59 | FB90B5362AE3E19500564514 /* CppFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CppFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 60 | FB90B5382AE3E19500564514 /* CppFramework.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; path = CppFramework.h; sourceTree = ""; }; 61 | FB90B5412AE3E1AC00564514 /* Mountain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Mountain.cpp; sourceTree = ""; }; 62 | /* End PBXFileReference section */ 63 | 64 | /* Begin PBXFrameworksBuildPhase section */ 65 | FB90B4E22AE3DC2200564514 /* Frameworks */ = { 66 | isa = PBXFrameworksBuildPhase; 67 | buildActionMask = 2147483647; 68 | files = ( 69 | FB90B53C2AE3E19500564514 /* CppFramework.framework in Frameworks */, 70 | ); 71 | runOnlyForDeploymentPostprocessing = 0; 72 | }; 73 | FB90B5332AE3E19500564514 /* Frameworks */ = { 74 | isa = PBXFrameworksBuildPhase; 75 | buildActionMask = 2147483647; 76 | files = ( 77 | ); 78 | runOnlyForDeploymentPostprocessing = 0; 79 | }; 80 | /* End PBXFrameworksBuildPhase section */ 81 | 82 | /* Begin PBXGroup section */ 83 | 422B63C42AE6AA770072EECF /* include */ = { 84 | isa = PBXGroup; 85 | children = ( 86 | FB696FB82AE6B6D10065AEFD /* IntrusiveRefCounted */, 87 | 422B63C72AE6AB400072EECF /* CppClass */, 88 | 422B63C62AE6AB360072EECF /* Mountain */, 89 | ); 90 | path = include; 91 | sourceTree = ""; 92 | }; 93 | 422B63C52AE6AA9A0072EECF /* lib */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 422B63C92AE6AB540072EECF /* CppClass */, 97 | 422B63C82AE6AB4A0072EECF /* Mountain */, 98 | ); 99 | path = lib; 100 | sourceTree = ""; 101 | }; 102 | 422B63C62AE6AB360072EECF /* Mountain */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 422B63C02AE470D80072EECF /* Mountain.hpp */, 106 | ); 107 | path = Mountain; 108 | sourceTree = ""; 109 | }; 110 | 422B63C72AE6AB400072EECF /* CppClass */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | FB696F7C2AE6916C0065AEFD /* CppClass.hpp */, 114 | ); 115 | path = CppClass; 116 | sourceTree = ""; 117 | }; 118 | 422B63C82AE6AB4A0072EECF /* Mountain */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | FB90B5412AE3E1AC00564514 /* Mountain.cpp */, 122 | ); 123 | path = Mountain; 124 | sourceTree = ""; 125 | }; 126 | 422B63C92AE6AB540072EECF /* CppClass */ = { 127 | isa = PBXGroup; 128 | children = ( 129 | FB696F7B2AE6916C0065AEFD /* CppClass.cpp */, 130 | ); 131 | path = CppClass; 132 | sourceTree = ""; 133 | }; 134 | FB696FB82AE6B6D10065AEFD /* IntrusiveRefCounted */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | FB696FBA2AE6B6D70065AEFD /* IntrusiveRefCounted.hpp */, 138 | ); 139 | path = IntrusiveRefCounted; 140 | sourceTree = ""; 141 | }; 142 | FB90B4DC2AE3DC2200564514 = { 143 | isa = PBXGroup; 144 | children = ( 145 | FB90B4E72AE3DC2200564514 /* CppPractice */, 146 | FB90B5372AE3E19500564514 /* CppFramework */, 147 | FB90B4E62AE3DC2200564514 /* Products */, 148 | FB90B52B2AE3E0C200564514 /* Frameworks */, 149 | ); 150 | sourceTree = ""; 151 | }; 152 | FB90B4E62AE3DC2200564514 /* Products */ = { 153 | isa = PBXGroup; 154 | children = ( 155 | FB90B4E52AE3DC2200564514 /* CppPractice.app */, 156 | FB90B5362AE3E19500564514 /* CppFramework.framework */, 157 | ); 158 | name = Products; 159 | sourceTree = ""; 160 | }; 161 | FB90B4E72AE3DC2200564514 /* CppPractice */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | FB90B4E82AE3DC2200564514 /* CppPracticeApp.swift */, 165 | FB90B4EA2AE3DC2200564514 /* ContentView.swift */, 166 | FB90B4EC2AE3DC2400564514 /* Assets.xcassets */, 167 | FB90B4EE2AE3DC2400564514 /* CppPractice.entitlements */, 168 | FB90B4EF2AE3DC2400564514 /* Preview Content */, 169 | ); 170 | path = CppPractice; 171 | sourceTree = ""; 172 | }; 173 | FB90B4EF2AE3DC2400564514 /* Preview Content */ = { 174 | isa = PBXGroup; 175 | children = ( 176 | FB90B4F02AE3DC2400564514 /* Preview Assets.xcassets */, 177 | ); 178 | path = "Preview Content"; 179 | sourceTree = ""; 180 | }; 181 | FB90B52B2AE3E0C200564514 /* Frameworks */ = { 182 | isa = PBXGroup; 183 | children = ( 184 | ); 185 | name = Frameworks; 186 | sourceTree = ""; 187 | }; 188 | FB90B5372AE3E19500564514 /* CppFramework */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | 422B63C52AE6AA9A0072EECF /* lib */, 192 | 422B63C42AE6AA770072EECF /* include */, 193 | FB90B5382AE3E19500564514 /* CppFramework.h */, 194 | ); 195 | path = CppFramework; 196 | sourceTree = ""; 197 | }; 198 | /* End PBXGroup section */ 199 | 200 | /* Begin PBXHeadersBuildPhase section */ 201 | FB90B5312AE3E19500564514 /* Headers */ = { 202 | isa = PBXHeadersBuildPhase; 203 | buildActionMask = 2147483647; 204 | files = ( 205 | FB90B5392AE3E19500564514 /* CppFramework.h in Headers */, 206 | FB696FBC2AE6B6D70065AEFD /* IntrusiveRefCounted.hpp in Headers */, 207 | FB696F7E2AE6916C0065AEFD /* CppClass.hpp in Headers */, 208 | 422B63C22AE471CF0072EECF /* Mountain.hpp in Headers */, 209 | ); 210 | runOnlyForDeploymentPostprocessing = 0; 211 | }; 212 | /* End PBXHeadersBuildPhase section */ 213 | 214 | /* Begin PBXNativeTarget section */ 215 | FB90B4E42AE3DC2200564514 /* CppPractice */ = { 216 | isa = PBXNativeTarget; 217 | buildConfigurationList = FB90B4F42AE3DC2400564514 /* Build configuration list for PBXNativeTarget "CppPractice" */; 218 | buildPhases = ( 219 | FB90B4E12AE3DC2200564514 /* Sources */, 220 | FB90B4E22AE3DC2200564514 /* Frameworks */, 221 | FB90B4E32AE3DC2200564514 /* Resources */, 222 | FB90B5302AE3E0C200564514 /* Embed Frameworks */, 223 | ); 224 | buildRules = ( 225 | ); 226 | dependencies = ( 227 | FB90B53B2AE3E19500564514 /* PBXTargetDependency */, 228 | ); 229 | name = CppPractice; 230 | productName = CppPractice; 231 | productReference = FB90B4E52AE3DC2200564514 /* CppPractice.app */; 232 | productType = "com.apple.product-type.application"; 233 | }; 234 | FB90B5352AE3E19500564514 /* CppFramework */ = { 235 | isa = PBXNativeTarget; 236 | buildConfigurationList = FB90B53E2AE3E19500564514 /* Build configuration list for PBXNativeTarget "CppFramework" */; 237 | buildPhases = ( 238 | FB90B5312AE3E19500564514 /* Headers */, 239 | FB90B5322AE3E19500564514 /* Sources */, 240 | FB90B5332AE3E19500564514 /* Frameworks */, 241 | FB90B5342AE3E19500564514 /* Resources */, 242 | ); 243 | buildRules = ( 244 | ); 245 | dependencies = ( 246 | ); 247 | name = CppFramework; 248 | productName = CppFramework; 249 | productReference = FB90B5362AE3E19500564514 /* CppFramework.framework */; 250 | productType = "com.apple.product-type.framework"; 251 | }; 252 | /* End PBXNativeTarget section */ 253 | 254 | /* Begin PBXProject section */ 255 | FB90B4DD2AE3DC2200564514 /* Project object */ = { 256 | isa = PBXProject; 257 | attributes = { 258 | BuildIndependentTargetsInParallel = 1; 259 | LastSwiftUpdateCheck = 1500; 260 | LastUpgradeCheck = 1500; 261 | TargetAttributes = { 262 | FB90B4E42AE3DC2200564514 = { 263 | CreatedOnToolsVersion = 15.0; 264 | LastSwiftMigration = 1500; 265 | }; 266 | FB90B5352AE3E19500564514 = { 267 | CreatedOnToolsVersion = 15.0; 268 | }; 269 | }; 270 | }; 271 | buildConfigurationList = FB90B4E02AE3DC2200564514 /* Build configuration list for PBXProject "CppPractice" */; 272 | compatibilityVersion = "Xcode 14.0"; 273 | developmentRegion = en; 274 | hasScannedForEncodings = 0; 275 | knownRegions = ( 276 | en, 277 | Base, 278 | ); 279 | mainGroup = FB90B4DC2AE3DC2200564514; 280 | productRefGroup = FB90B4E62AE3DC2200564514 /* Products */; 281 | projectDirPath = ""; 282 | projectRoot = ""; 283 | targets = ( 284 | FB90B4E42AE3DC2200564514 /* CppPractice */, 285 | FB90B5352AE3E19500564514 /* CppFramework */, 286 | ); 287 | }; 288 | /* End PBXProject section */ 289 | 290 | /* Begin PBXResourcesBuildPhase section */ 291 | FB90B4E32AE3DC2200564514 /* Resources */ = { 292 | isa = PBXResourcesBuildPhase; 293 | buildActionMask = 2147483647; 294 | files = ( 295 | FB90B4F12AE3DC2400564514 /* Preview Assets.xcassets in Resources */, 296 | FB90B4ED2AE3DC2400564514 /* Assets.xcassets in Resources */, 297 | ); 298 | runOnlyForDeploymentPostprocessing = 0; 299 | }; 300 | FB90B5342AE3E19500564514 /* Resources */ = { 301 | isa = PBXResourcesBuildPhase; 302 | buildActionMask = 2147483647; 303 | files = ( 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | /* End PBXResourcesBuildPhase section */ 308 | 309 | /* Begin PBXSourcesBuildPhase section */ 310 | FB90B4E12AE3DC2200564514 /* Sources */ = { 311 | isa = PBXSourcesBuildPhase; 312 | buildActionMask = 2147483647; 313 | files = ( 314 | FB90B4EB2AE3DC2200564514 /* ContentView.swift in Sources */, 315 | FB90B4E92AE3DC2200564514 /* CppPracticeApp.swift in Sources */, 316 | ); 317 | runOnlyForDeploymentPostprocessing = 0; 318 | }; 319 | FB90B5322AE3E19500564514 /* Sources */ = { 320 | isa = PBXSourcesBuildPhase; 321 | buildActionMask = 2147483647; 322 | files = ( 323 | FB696F7D2AE6916C0065AEFD /* CppClass.cpp in Sources */, 324 | FB90B5432AE3E1AC00564514 /* Mountain.cpp in Sources */, 325 | ); 326 | runOnlyForDeploymentPostprocessing = 0; 327 | }; 328 | /* End PBXSourcesBuildPhase section */ 329 | 330 | /* Begin PBXTargetDependency section */ 331 | FB90B53B2AE3E19500564514 /* PBXTargetDependency */ = { 332 | isa = PBXTargetDependency; 333 | target = FB90B5352AE3E19500564514 /* CppFramework */; 334 | targetProxy = FB90B53A2AE3E19500564514 /* PBXContainerItemProxy */; 335 | }; 336 | /* End PBXTargetDependency section */ 337 | 338 | /* Begin XCBuildConfiguration section */ 339 | FB90B4F22AE3DC2400564514 /* Debug */ = { 340 | isa = XCBuildConfiguration; 341 | buildSettings = { 342 | ALWAYS_SEARCH_USER_PATHS = NO; 343 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 344 | CLANG_ANALYZER_NONNULL = YES; 345 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 346 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 347 | CLANG_ENABLE_MODULES = YES; 348 | CLANG_ENABLE_OBJC_ARC = YES; 349 | CLANG_ENABLE_OBJC_WEAK = YES; 350 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 351 | CLANG_WARN_BOOL_CONVERSION = YES; 352 | CLANG_WARN_COMMA = YES; 353 | CLANG_WARN_CONSTANT_CONVERSION = YES; 354 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 355 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 356 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 357 | CLANG_WARN_EMPTY_BODY = YES; 358 | CLANG_WARN_ENUM_CONVERSION = YES; 359 | CLANG_WARN_INFINITE_RECURSION = YES; 360 | CLANG_WARN_INT_CONVERSION = YES; 361 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 362 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 363 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 364 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 365 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 366 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 367 | CLANG_WARN_STRICT_PROTOTYPES = YES; 368 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 369 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 370 | CLANG_WARN_UNREACHABLE_CODE = YES; 371 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 372 | COPY_PHASE_STRIP = NO; 373 | DEBUG_INFORMATION_FORMAT = dwarf; 374 | ENABLE_STRICT_OBJC_MSGSEND = YES; 375 | ENABLE_TESTABILITY = YES; 376 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 377 | GCC_C_LANGUAGE_STANDARD = gnu17; 378 | GCC_DYNAMIC_NO_PIC = NO; 379 | GCC_NO_COMMON_BLOCKS = YES; 380 | GCC_OPTIMIZATION_LEVEL = 0; 381 | GCC_PREPROCESSOR_DEFINITIONS = ( 382 | "DEBUG=1", 383 | "$(inherited)", 384 | ); 385 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 386 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 387 | GCC_WARN_UNDECLARED_SELECTOR = YES; 388 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 389 | GCC_WARN_UNUSED_FUNCTION = YES; 390 | GCC_WARN_UNUSED_VARIABLE = YES; 391 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 392 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 393 | MTL_FAST_MATH = YES; 394 | ONLY_ACTIVE_ARCH = YES; 395 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; 396 | SWIFT_OBJC_INTEROP_MODE = objcxx; 397 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 398 | SWIFT_VERSION = 5.0; 399 | }; 400 | name = Debug; 401 | }; 402 | FB90B4F32AE3DC2400564514 /* Release */ = { 403 | isa = XCBuildConfiguration; 404 | buildSettings = { 405 | ALWAYS_SEARCH_USER_PATHS = NO; 406 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 407 | CLANG_ANALYZER_NONNULL = YES; 408 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 409 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 410 | CLANG_ENABLE_MODULES = YES; 411 | CLANG_ENABLE_OBJC_ARC = YES; 412 | CLANG_ENABLE_OBJC_WEAK = YES; 413 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 414 | CLANG_WARN_BOOL_CONVERSION = YES; 415 | CLANG_WARN_COMMA = YES; 416 | CLANG_WARN_CONSTANT_CONVERSION = YES; 417 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 418 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 419 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 420 | CLANG_WARN_EMPTY_BODY = YES; 421 | CLANG_WARN_ENUM_CONVERSION = YES; 422 | CLANG_WARN_INFINITE_RECURSION = YES; 423 | CLANG_WARN_INT_CONVERSION = YES; 424 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 425 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 426 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 427 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 428 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 429 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 430 | CLANG_WARN_STRICT_PROTOTYPES = YES; 431 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 432 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 433 | CLANG_WARN_UNREACHABLE_CODE = YES; 434 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 435 | COPY_PHASE_STRIP = NO; 436 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 437 | ENABLE_NS_ASSERTIONS = NO; 438 | ENABLE_STRICT_OBJC_MSGSEND = YES; 439 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 440 | GCC_C_LANGUAGE_STANDARD = gnu17; 441 | GCC_NO_COMMON_BLOCKS = YES; 442 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 443 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 444 | GCC_WARN_UNDECLARED_SELECTOR = YES; 445 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 446 | GCC_WARN_UNUSED_FUNCTION = YES; 447 | GCC_WARN_UNUSED_VARIABLE = YES; 448 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 449 | MTL_ENABLE_DEBUG_INFO = NO; 450 | MTL_FAST_MATH = YES; 451 | SWIFT_COMPILATION_MODE = wholemodule; 452 | SWIFT_OBJC_INTEROP_MODE = objcxx; 453 | SWIFT_VERSION = 5.0; 454 | }; 455 | name = Release; 456 | }; 457 | FB90B4F52AE3DC2400564514 /* Debug */ = { 458 | isa = XCBuildConfiguration; 459 | buildSettings = { 460 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 461 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 462 | CLANG_ENABLE_MODULES = YES; 463 | CODE_SIGN_ENTITLEMENTS = CppPractice/CppPractice.entitlements; 464 | CODE_SIGN_STYLE = Automatic; 465 | CURRENT_PROJECT_VERSION = 1; 466 | DEVELOPMENT_ASSET_PATHS = "\"CppPractice/Preview Content\""; 467 | DEVELOPMENT_TEAM = 76AJ433CP5; 468 | ENABLE_HARDENED_RUNTIME = YES; 469 | ENABLE_PREVIEWS = YES; 470 | GENERATE_INFOPLIST_FILE = YES; 471 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; 472 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; 473 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; 474 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; 475 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; 476 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; 477 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; 478 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; 479 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 480 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 481 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 482 | LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; 483 | "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; 484 | MACOSX_DEPLOYMENT_TARGET = 14.0; 485 | MARKETING_VERSION = 1.0; 486 | PRODUCT_BUNDLE_IDENTIFIER = kim.CppPractice; 487 | PRODUCT_NAME = "$(TARGET_NAME)"; 488 | SDKROOT = auto; 489 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; 490 | SWIFT_EMIT_LOC_STRINGS = YES; 491 | SWIFT_OBJC_BRIDGING_HEADER = ""; 492 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 493 | SWIFT_VERSION = 5.0; 494 | TARGETED_DEVICE_FAMILY = "1,2"; 495 | }; 496 | name = Debug; 497 | }; 498 | FB90B4F62AE3DC2400564514 /* Release */ = { 499 | isa = XCBuildConfiguration; 500 | buildSettings = { 501 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 502 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 503 | CLANG_ENABLE_MODULES = YES; 504 | CODE_SIGN_ENTITLEMENTS = CppPractice/CppPractice.entitlements; 505 | CODE_SIGN_STYLE = Automatic; 506 | CURRENT_PROJECT_VERSION = 1; 507 | DEVELOPMENT_ASSET_PATHS = "\"CppPractice/Preview Content\""; 508 | DEVELOPMENT_TEAM = 76AJ433CP5; 509 | ENABLE_HARDENED_RUNTIME = YES; 510 | ENABLE_PREVIEWS = YES; 511 | GENERATE_INFOPLIST_FILE = YES; 512 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; 513 | "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; 514 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; 515 | "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; 516 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; 517 | "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; 518 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; 519 | "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; 520 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 521 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 522 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 523 | LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; 524 | "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; 525 | MACOSX_DEPLOYMENT_TARGET = 14.0; 526 | MARKETING_VERSION = 1.0; 527 | PRODUCT_BUNDLE_IDENTIFIER = kim.CppPractice; 528 | PRODUCT_NAME = "$(TARGET_NAME)"; 529 | SDKROOT = auto; 530 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; 531 | SWIFT_EMIT_LOC_STRINGS = YES; 532 | SWIFT_OBJC_BRIDGING_HEADER = ""; 533 | SWIFT_VERSION = 5.0; 534 | TARGETED_DEVICE_FAMILY = "1,2"; 535 | }; 536 | name = Release; 537 | }; 538 | FB90B53F2AE3E19500564514 /* Debug */ = { 539 | isa = XCBuildConfiguration; 540 | buildSettings = { 541 | CODE_SIGN_STYLE = Automatic; 542 | COMBINE_HIDPI_IMAGES = YES; 543 | CURRENT_PROJECT_VERSION = 1; 544 | DEFINES_MODULE = YES; 545 | DEVELOPMENT_TEAM = 76AJ433CP5; 546 | DYLIB_COMPATIBILITY_VERSION = 1; 547 | DYLIB_CURRENT_VERSION = 1; 548 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 549 | ENABLE_MODULE_VERIFIER = YES; 550 | GENERATE_INFOPLIST_FILE = YES; 551 | HEADER_SEARCH_PATHS = ""; 552 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 553 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 554 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 555 | LD_RUNPATH_SEARCH_PATHS = ( 556 | "$(inherited)", 557 | "@executable_path/../Frameworks", 558 | "@loader_path/Frameworks", 559 | ); 560 | MACOSX_DEPLOYMENT_TARGET = 14.0; 561 | MARKETING_VERSION = 1.0; 562 | MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c++"; 563 | MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; 564 | PRODUCT_BUNDLE_IDENTIFIER = kim.CppFramework; 565 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 566 | SDKROOT = macosx; 567 | SKIP_INSTALL = YES; 568 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; 569 | SUPPORTS_MACCATALYST = NO; 570 | SWIFT_EMIT_LOC_STRINGS = YES; 571 | SWIFT_VERSION = 5.0; 572 | TARGETED_DEVICE_FAMILY = 1; 573 | VERSIONING_SYSTEM = "apple-generic"; 574 | VERSION_INFO_PREFIX = ""; 575 | }; 576 | name = Debug; 577 | }; 578 | FB90B5402AE3E19500564514 /* Release */ = { 579 | isa = XCBuildConfiguration; 580 | buildSettings = { 581 | CODE_SIGN_STYLE = Automatic; 582 | COMBINE_HIDPI_IMAGES = YES; 583 | CURRENT_PROJECT_VERSION = 1; 584 | DEFINES_MODULE = YES; 585 | DEVELOPMENT_TEAM = 76AJ433CP5; 586 | DYLIB_COMPATIBILITY_VERSION = 1; 587 | DYLIB_CURRENT_VERSION = 1; 588 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 589 | ENABLE_MODULE_VERIFIER = YES; 590 | GENERATE_INFOPLIST_FILE = YES; 591 | HEADER_SEARCH_PATHS = ""; 592 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 593 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 594 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 595 | LD_RUNPATH_SEARCH_PATHS = ( 596 | "$(inherited)", 597 | "@executable_path/../Frameworks", 598 | "@loader_path/Frameworks", 599 | ); 600 | MACOSX_DEPLOYMENT_TARGET = 14.0; 601 | MARKETING_VERSION = 1.0; 602 | MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c++"; 603 | MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; 604 | PRODUCT_BUNDLE_IDENTIFIER = kim.CppFramework; 605 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 606 | SDKROOT = macosx; 607 | SKIP_INSTALL = YES; 608 | SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; 609 | SUPPORTS_MACCATALYST = NO; 610 | SWIFT_EMIT_LOC_STRINGS = YES; 611 | SWIFT_VERSION = 5.0; 612 | TARGETED_DEVICE_FAMILY = 1; 613 | VERSIONING_SYSTEM = "apple-generic"; 614 | VERSION_INFO_PREFIX = ""; 615 | }; 616 | name = Release; 617 | }; 618 | /* End XCBuildConfiguration section */ 619 | 620 | /* Begin XCConfigurationList section */ 621 | FB90B4E02AE3DC2200564514 /* Build configuration list for PBXProject "CppPractice" */ = { 622 | isa = XCConfigurationList; 623 | buildConfigurations = ( 624 | FB90B4F22AE3DC2400564514 /* Debug */, 625 | FB90B4F32AE3DC2400564514 /* Release */, 626 | ); 627 | defaultConfigurationIsVisible = 0; 628 | defaultConfigurationName = Release; 629 | }; 630 | FB90B4F42AE3DC2400564514 /* Build configuration list for PBXNativeTarget "CppPractice" */ = { 631 | isa = XCConfigurationList; 632 | buildConfigurations = ( 633 | FB90B4F52AE3DC2400564514 /* Debug */, 634 | FB90B4F62AE3DC2400564514 /* Release */, 635 | ); 636 | defaultConfigurationIsVisible = 0; 637 | defaultConfigurationName = Release; 638 | }; 639 | FB90B53E2AE3E19500564514 /* Build configuration list for PBXNativeTarget "CppFramework" */ = { 640 | isa = XCConfigurationList; 641 | buildConfigurations = ( 642 | FB90B53F2AE3E19500564514 /* Debug */, 643 | FB90B5402AE3E19500564514 /* Release */, 644 | ); 645 | defaultConfigurationIsVisible = 0; 646 | defaultConfigurationName = Release; 647 | }; 648 | /* End XCConfigurationList section */ 649 | }; 650 | rootObject = FB90B4DD2AE3DC2200564514 /* Project object */; 651 | } 652 | -------------------------------------------------------------------------------- /CppPractice.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CppPractice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /CppPractice.xcodeproj/project.xcworkspace/xcuserdata/insub.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/insub4067/MixCppSwift/ff1086c8c4466d7904caad9f69d7bd0e0fcc6a1c/CppPractice.xcodeproj/project.xcworkspace/xcuserdata/insub.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /CppPractice.xcodeproj/project.xcworkspace/xcuserdata/joshua.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/insub4067/MixCppSwift/ff1086c8c4466d7904caad9f69d7bd0e0fcc6a1c/CppPractice.xcodeproj/project.xcworkspace/xcuserdata/joshua.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /CppPractice.xcodeproj/xcuserdata/insub.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /CppPractice.xcodeproj/xcuserdata/insub.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CppFramework.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | CppKit.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 0 16 | 17 | CppPractice.xcscheme_^#shared#^_ 18 | 19 | orderHint 20 | 1 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CppPractice.xcodeproj/xcuserdata/joshua.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CppFramework.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | CppPractice.xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /CppPractice/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /CppPractice/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "scale" : "1x", 11 | "size" : "16x16" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "scale" : "2x", 16 | "size" : "16x16" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "scale" : "1x", 21 | "size" : "32x32" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "scale" : "2x", 26 | "size" : "32x32" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "scale" : "1x", 31 | "size" : "128x128" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "scale" : "2x", 36 | "size" : "128x128" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "scale" : "1x", 41 | "size" : "256x256" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "scale" : "2x", 46 | "size" : "256x256" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "scale" : "1x", 51 | "size" : "512x512" 52 | }, 53 | { 54 | "idiom" : "mac", 55 | "scale" : "2x", 56 | "size" : "512x512" 57 | } 58 | ], 59 | "info" : { 60 | "author" : "xcode", 61 | "version" : 1 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /CppPractice/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /CppPractice/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // CppPractice 4 | // 5 | // Created by 김인섭 on 10/21/23. 6 | // 7 | 8 | import SwiftUI 9 | import CppFramework 10 | 11 | struct ContentView: View { 12 | var body: some View { 13 | VStack { 14 | Image(systemName: "globe") 15 | .imageScale(.large) 16 | .foregroundStyle(.tint) 17 | Text("Hello, world!") 18 | } 19 | .padding() 20 | .onAppear(perform: { 21 | // available from macOS 13.3.0 22 | if #available(iOS 16.4.0, *) { 23 | let mountain = Mountain.create("관악산", 632) 24 | mountain.displayInfo() 25 | } else { 26 | // Fallback on earlier versions 27 | } 28 | }) 29 | } 30 | } 31 | 32 | #Preview { 33 | ContentView() 34 | } 35 | -------------------------------------------------------------------------------- /CppPractice/CppPractice.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /CppPractice/CppPracticeApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CppPracticeApp.swift 3 | // CppPractice 4 | // 5 | // Created by 김인섭 on 10/21/23. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct CppPracticeApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /CppPractice/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CppPractice 2 | 3 | This repo is example of using C++ directly from Swift without Obj-c bridge. 4 | 5 | ## References 6 | 7 | ### Apple docs 8 | - https://www.swift.org/documentation/cxx-interop/project-build-setup/ 9 | - https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes 10 | - https://developer.apple.com/videos/play/wwdc2023/10172/ 11 | - https://github.com/apple/swift-cmake-examples 12 | - https://developer.apple.com/documentation/swift/mixinglanguagesinanxcodeproject 13 | 14 | ### the others 15 | - https://medium.com/swlh/c-project-structure-for-cmake-67d60135f6f5 16 | --------------------------------------------------------------------------------