├── .gitignore
├── HelloSwiftAndCPP
├── HelloSwiftAndCPP-Bridging-Header.h
├── ABCpp.h
├── SomeCPPClass.cpp
├── XYZSomething.m
├── XYZSomething.h
├── ABCpp.mm
├── main.swift
└── SomeCPPClass.h
├── HelloSwiftAndCPP.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── project.pbxproj
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | Builds/
2 | /DerivedData
3 | .DS_Store
4 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/HelloSwiftAndCPP-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | #import "ABCpp.h"
6 | #import "XYZSomething.h"
--------------------------------------------------------------------------------
/HelloSwiftAndCPP.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/ABCpp.h:
--------------------------------------------------------------------------------
1 | //
2 | // ABCpp.h
3 | // HelloSwiftAndCPP
4 | //
5 | // Created by Ron Olson on 6/12/14.
6 | // Copyright (c) 2014 Ron Olson. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface ABCpp : NSObject
13 |
14 | -(int)playWithFoo;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/SomeCPPClass.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // SomeCPPClass.cpp
3 | // HelloSwiftAndCPP
4 | //
5 | // Created by Ron Olson on 6/12/14.
6 | // Copyright (c) 2014 Ron Olson. All rights reserved.
7 | //
8 |
9 | #include "SomeCPPClass.h"
10 |
11 |
12 | int Foo::addNums(int x, int y)
13 | {
14 | return x + y;
15 | }
16 |
17 |
18 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/XYZSomething.m:
--------------------------------------------------------------------------------
1 | //
2 | // XYZSomething.m
3 | // HelloSwiftAndCPP
4 | //
5 | // Created by Ron Olson on 6/12/14.
6 | // Copyright (c) 2014 Ron Olson. All rights reserved.
7 | //
8 |
9 | #import "XYZSomething.h"
10 |
11 | @implementation XYZSomething
12 |
13 | -(int)addX:(int)x andY:(int)y
14 | {
15 | return x + y;
16 | }
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/XYZSomething.h:
--------------------------------------------------------------------------------
1 | //
2 | // XYZSomething.h
3 | // HelloSwiftAndCPP
4 | //
5 | // Created by Ron Olson on 6/12/14.
6 | // Copyright (c) 2014 Ron Olson. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface XYZSomething : NSObject
12 | {
13 | int z;
14 | }
15 |
16 | -(int)addX:(int)x andY:(int)y;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/ABCpp.mm:
--------------------------------------------------------------------------------
1 | //
2 | // ABCpp.m
3 | // HelloSwiftAndCPP
4 | //
5 | // Created by Ron Olson on 6/12/14.
6 | // Copyright (c) 2014 Ron Olson. All rights reserved.
7 | //
8 |
9 | #import "ABCpp.h"
10 | #include "SomeCPPClass.h"
11 |
12 | @implementation ABCpp
13 |
14 | -(int)playWithFoo
15 | {
16 | Foo foo;
17 |
18 | return foo.addNums(25, 25);
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/main.swift:
--------------------------------------------------------------------------------
1 | //
2 | // main.swift
3 | // HelloSwiftAndCPP
4 | //
5 | // Created by Ron Olson on 6/12/14.
6 | // Copyright (c) 2014 Ron Olson. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | print("Hello, World!")
12 |
13 | let foo = XYZSomething()
14 |
15 | print("Val is \(foo.addX(50, andY: 50))")
16 |
17 | let bar = ABCpp();
18 |
19 | print("And from CPP the value is \(bar.playWithFoo())")
20 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP/SomeCPPClass.h:
--------------------------------------------------------------------------------
1 | //
2 | // SomeCPPClass.h
3 | // HelloSwiftAndCPP
4 | //
5 | // Created by Ron Olson on 6/12/14.
6 | // Copyright (c) 2014 Ron Olson. All rights reserved.
7 | //
8 |
9 | #ifndef __somecppclass__
10 | #define __somecppclass__
11 |
12 | #include
13 | #include
14 | using std::cout;
15 | using std::endl;
16 | using std::string;
17 |
18 | class Foo
19 | {
20 | public:
21 |
22 | Foo()
23 | {
24 | cout << "In the foo!" << endl;
25 |
26 | string someString("hello from a C++ constructor!");
27 | cout << someString << endl;
28 | }
29 |
30 | int addNums(int x, int y);
31 |
32 | };
33 |
34 | #endif
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | HelloSwiftAndCPP
2 | ================
3 |
4 | A sample project that mixes Apple's Swift language with Objective C and C++. I wrote it trying to figure out how I can add existing C++ code into a Swift project. It's meant to be C++/ObjC/Swift 101 just to show the interop between the three, without getting bogged down in frameworks.
5 |
6 | main.swift
7 | - The main program that calls both Objective C and C++ (via Objective C++) code
8 |
9 | SomeCPPClass.cpp/h
10 | - A regular C++ class using iostream and string
11 |
12 | HelloSwiftAndCPP-Bridging-Header.h
13 | - The file necessary to expose the Objective C/C++ classes to Swift
14 |
15 | XYZSomething.m/h
16 | - Basic Objective C class
17 |
18 | ABCpp.mm/h
19 | - Objective C++ class that uses SomeCPPClass
20 |
21 |
22 |
--------------------------------------------------------------------------------
/HelloSwiftAndCPP.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0FB0086A1949E50A0014F78F /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB008691949E50A0014F78F /* main.swift */; };
11 | 0FB00875194A1BE40014F78F /* SomeCPPClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB00874194A1BE40014F78F /* SomeCPPClass.cpp */; };
12 | 0FB00878194A22390014F78F /* XYZSomething.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FB00877194A22390014F78F /* XYZSomething.m */; };
13 | 0FB0087B194A23AF0014F78F /* ABCpp.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FB0087A194A23AF0014F78F /* ABCpp.mm */; };
14 | /* End PBXBuildFile section */
15 |
16 | /* Begin PBXCopyFilesBuildPhase section */
17 | 0FB008641949E50A0014F78F /* CopyFiles */ = {
18 | isa = PBXCopyFilesBuildPhase;
19 | buildActionMask = 2147483647;
20 | dstPath = /usr/share/man/man1/;
21 | dstSubfolderSpec = 0;
22 | files = (
23 | );
24 | runOnlyForDeploymentPostprocessing = 1;
25 | };
26 | /* End PBXCopyFilesBuildPhase section */
27 |
28 | /* Begin PBXFileReference section */
29 | 0FB008661949E50A0014F78F /* HelloSwiftAndCPP */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = HelloSwiftAndCPP; sourceTree = BUILT_PRODUCTS_DIR; };
30 | 0FB008691949E50A0014F78F /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; };
31 | 0FB008701949E5550014F78F /* HelloSwiftAndCPP-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "HelloSwiftAndCPP-Bridging-Header.h"; sourceTree = ""; };
32 | 0FB008731949E5C50014F78F /* SomeCPPClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SomeCPPClass.h; sourceTree = ""; };
33 | 0FB00874194A1BE40014F78F /* SomeCPPClass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SomeCPPClass.cpp; sourceTree = ""; };
34 | 0FB00876194A22390014F78F /* XYZSomething.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XYZSomething.h; sourceTree = ""; };
35 | 0FB00877194A22390014F78F /* XYZSomething.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XYZSomething.m; sourceTree = ""; };
36 | 0FB00879194A23AF0014F78F /* ABCpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ABCpp.h; sourceTree = ""; };
37 | 0FB0087A194A23AF0014F78F /* ABCpp.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = ABCpp.mm; sourceTree = ""; };
38 | /* End PBXFileReference section */
39 |
40 | /* Begin PBXFrameworksBuildPhase section */
41 | 0FB008631949E50A0014F78F /* Frameworks */ = {
42 | isa = PBXFrameworksBuildPhase;
43 | buildActionMask = 2147483647;
44 | files = (
45 | );
46 | runOnlyForDeploymentPostprocessing = 0;
47 | };
48 | /* End PBXFrameworksBuildPhase section */
49 |
50 | /* Begin PBXGroup section */
51 | 0FB0085D1949E50A0014F78F = {
52 | isa = PBXGroup;
53 | children = (
54 | 0FB008681949E50A0014F78F /* HelloSwiftAndCPP */,
55 | 0FB008671949E50A0014F78F /* Products */,
56 | );
57 | sourceTree = "";
58 | };
59 | 0FB008671949E50A0014F78F /* Products */ = {
60 | isa = PBXGroup;
61 | children = (
62 | 0FB008661949E50A0014F78F /* HelloSwiftAndCPP */,
63 | );
64 | name = Products;
65 | sourceTree = "";
66 | };
67 | 0FB008681949E50A0014F78F /* HelloSwiftAndCPP */ = {
68 | isa = PBXGroup;
69 | children = (
70 | 0FB008691949E50A0014F78F /* main.swift */,
71 | 0FB00874194A1BE40014F78F /* SomeCPPClass.cpp */,
72 | 0FB008731949E5C50014F78F /* SomeCPPClass.h */,
73 | 0FB008701949E5550014F78F /* HelloSwiftAndCPP-Bridging-Header.h */,
74 | 0FB00876194A22390014F78F /* XYZSomething.h */,
75 | 0FB00877194A22390014F78F /* XYZSomething.m */,
76 | 0FB00879194A23AF0014F78F /* ABCpp.h */,
77 | 0FB0087A194A23AF0014F78F /* ABCpp.mm */,
78 | );
79 | path = HelloSwiftAndCPP;
80 | sourceTree = "";
81 | };
82 | /* End PBXGroup section */
83 |
84 | /* Begin PBXNativeTarget section */
85 | 0FB008651949E50A0014F78F /* HelloSwiftAndCPP */ = {
86 | isa = PBXNativeTarget;
87 | buildConfigurationList = 0FB0086D1949E50A0014F78F /* Build configuration list for PBXNativeTarget "HelloSwiftAndCPP" */;
88 | buildPhases = (
89 | 0FB008621949E50A0014F78F /* Sources */,
90 | 0FB008631949E50A0014F78F /* Frameworks */,
91 | 0FB008641949E50A0014F78F /* CopyFiles */,
92 | );
93 | buildRules = (
94 | );
95 | dependencies = (
96 | );
97 | name = HelloSwiftAndCPP;
98 | productName = HelloSwiftAndCPP;
99 | productReference = 0FB008661949E50A0014F78F /* HelloSwiftAndCPP */;
100 | productType = "com.apple.product-type.tool";
101 | };
102 | /* End PBXNativeTarget section */
103 |
104 | /* Begin PBXProject section */
105 | 0FB0085E1949E50A0014F78F /* Project object */ = {
106 | isa = PBXProject;
107 | attributes = {
108 | LastUpgradeCheck = 1030;
109 | ORGANIZATIONNAME = "Ron Olson";
110 | TargetAttributes = {
111 | 0FB008651949E50A0014F78F = {
112 | CreatedOnToolsVersion = 6.0;
113 | };
114 | };
115 | };
116 | buildConfigurationList = 0FB008611949E50A0014F78F /* Build configuration list for PBXProject "HelloSwiftAndCPP" */;
117 | compatibilityVersion = "Xcode 3.2";
118 | developmentRegion = en;
119 | hasScannedForEncodings = 0;
120 | knownRegions = (
121 | en,
122 | Base,
123 | );
124 | mainGroup = 0FB0085D1949E50A0014F78F;
125 | productRefGroup = 0FB008671949E50A0014F78F /* Products */;
126 | projectDirPath = "";
127 | projectRoot = "";
128 | targets = (
129 | 0FB008651949E50A0014F78F /* HelloSwiftAndCPP */,
130 | );
131 | };
132 | /* End PBXProject section */
133 |
134 | /* Begin PBXSourcesBuildPhase section */
135 | 0FB008621949E50A0014F78F /* Sources */ = {
136 | isa = PBXSourcesBuildPhase;
137 | buildActionMask = 2147483647;
138 | files = (
139 | 0FB0087B194A23AF0014F78F /* ABCpp.mm in Sources */,
140 | 0FB00878194A22390014F78F /* XYZSomething.m in Sources */,
141 | 0FB00875194A1BE40014F78F /* SomeCPPClass.cpp in Sources */,
142 | 0FB0086A1949E50A0014F78F /* main.swift in Sources */,
143 | );
144 | runOnlyForDeploymentPostprocessing = 0;
145 | };
146 | /* End PBXSourcesBuildPhase section */
147 |
148 | /* Begin XCBuildConfiguration section */
149 | 0FB0086B1949E50A0014F78F /* Debug */ = {
150 | isa = XCBuildConfiguration;
151 | buildSettings = {
152 | ALWAYS_SEARCH_USER_PATHS = NO;
153 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
154 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
155 | CLANG_CXX_LIBRARY = "libc++";
156 | CLANG_ENABLE_MODULES = YES;
157 | CLANG_ENABLE_OBJC_ARC = YES;
158 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
159 | CLANG_WARN_BOOL_CONVERSION = YES;
160 | CLANG_WARN_COMMA = YES;
161 | CLANG_WARN_CONSTANT_CONVERSION = YES;
162 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
163 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
164 | CLANG_WARN_EMPTY_BODY = YES;
165 | CLANG_WARN_ENUM_CONVERSION = YES;
166 | CLANG_WARN_INFINITE_RECURSION = YES;
167 | CLANG_WARN_INT_CONVERSION = YES;
168 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
169 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
170 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
171 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
172 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
173 | CLANG_WARN_STRICT_PROTOTYPES = YES;
174 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
175 | CLANG_WARN_UNREACHABLE_CODE = YES;
176 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
177 | COPY_PHASE_STRIP = NO;
178 | ENABLE_STRICT_OBJC_MSGSEND = YES;
179 | ENABLE_TESTABILITY = YES;
180 | GCC_C_LANGUAGE_STANDARD = gnu99;
181 | GCC_DYNAMIC_NO_PIC = NO;
182 | GCC_NO_COMMON_BLOCKS = YES;
183 | GCC_OPTIMIZATION_LEVEL = 0;
184 | GCC_PREPROCESSOR_DEFINITIONS = (
185 | "DEBUG=1",
186 | "$(inherited)",
187 | );
188 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
189 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
190 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
191 | GCC_WARN_UNDECLARED_SELECTOR = YES;
192 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
193 | GCC_WARN_UNUSED_FUNCTION = YES;
194 | GCC_WARN_UNUSED_VARIABLE = YES;
195 | MACOSX_DEPLOYMENT_TARGET = 10.9;
196 | METAL_ENABLE_DEBUG_INFO = YES;
197 | ONLY_ACTIVE_ARCH = YES;
198 | SDKROOT = macosx;
199 | SWIFT_OBJC_BRIDGING_HEADER = "";
200 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
201 | };
202 | name = Debug;
203 | };
204 | 0FB0086C1949E50A0014F78F /* Release */ = {
205 | isa = XCBuildConfiguration;
206 | buildSettings = {
207 | ALWAYS_SEARCH_USER_PATHS = NO;
208 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
209 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
210 | CLANG_CXX_LIBRARY = "libc++";
211 | CLANG_ENABLE_MODULES = YES;
212 | CLANG_ENABLE_OBJC_ARC = YES;
213 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
214 | CLANG_WARN_BOOL_CONVERSION = YES;
215 | CLANG_WARN_COMMA = YES;
216 | CLANG_WARN_CONSTANT_CONVERSION = YES;
217 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
218 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
219 | CLANG_WARN_EMPTY_BODY = YES;
220 | CLANG_WARN_ENUM_CONVERSION = YES;
221 | CLANG_WARN_INFINITE_RECURSION = YES;
222 | CLANG_WARN_INT_CONVERSION = YES;
223 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
224 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
225 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
226 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
227 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
228 | CLANG_WARN_STRICT_PROTOTYPES = YES;
229 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
230 | CLANG_WARN_UNREACHABLE_CODE = YES;
231 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
232 | COPY_PHASE_STRIP = YES;
233 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
234 | ENABLE_NS_ASSERTIONS = NO;
235 | ENABLE_STRICT_OBJC_MSGSEND = YES;
236 | GCC_C_LANGUAGE_STANDARD = gnu99;
237 | GCC_NO_COMMON_BLOCKS = YES;
238 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
239 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
240 | GCC_WARN_UNDECLARED_SELECTOR = YES;
241 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
242 | GCC_WARN_UNUSED_FUNCTION = YES;
243 | GCC_WARN_UNUSED_VARIABLE = YES;
244 | MACOSX_DEPLOYMENT_TARGET = 10.9;
245 | METAL_ENABLE_DEBUG_INFO = NO;
246 | SDKROOT = macosx;
247 | SWIFT_COMPILATION_MODE = wholemodule;
248 | SWIFT_OBJC_BRIDGING_HEADER = "";
249 | };
250 | name = Release;
251 | };
252 | 0FB0086E1949E50A0014F78F /* Debug */ = {
253 | isa = XCBuildConfiguration;
254 | buildSettings = {
255 | CLANG_ENABLE_MODULES = YES;
256 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
257 | PRODUCT_NAME = "$(TARGET_NAME)";
258 | SDKROOT = macosx;
259 | SWIFT_OBJC_BRIDGING_HEADER = "HelloSwiftAndCPP/HelloSwiftAndCPP-Bridging-Header.h";
260 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
261 | SWIFT_VERSION = 5.0;
262 | };
263 | name = Debug;
264 | };
265 | 0FB0086F1949E50A0014F78F /* Release */ = {
266 | isa = XCBuildConfiguration;
267 | buildSettings = {
268 | CLANG_ENABLE_MODULES = YES;
269 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
270 | PRODUCT_NAME = "$(TARGET_NAME)";
271 | SDKROOT = macosx;
272 | SWIFT_OBJC_BRIDGING_HEADER = "HelloSwiftAndCPP/HelloSwiftAndCPP-Bridging-Header.h";
273 | SWIFT_VERSION = 5.0;
274 | };
275 | name = Release;
276 | };
277 | /* End XCBuildConfiguration section */
278 |
279 | /* Begin XCConfigurationList section */
280 | 0FB008611949E50A0014F78F /* Build configuration list for PBXProject "HelloSwiftAndCPP" */ = {
281 | isa = XCConfigurationList;
282 | buildConfigurations = (
283 | 0FB0086B1949E50A0014F78F /* Debug */,
284 | 0FB0086C1949E50A0014F78F /* Release */,
285 | );
286 | defaultConfigurationIsVisible = 0;
287 | defaultConfigurationName = Release;
288 | };
289 | 0FB0086D1949E50A0014F78F /* Build configuration list for PBXNativeTarget "HelloSwiftAndCPP" */ = {
290 | isa = XCConfigurationList;
291 | buildConfigurations = (
292 | 0FB0086E1949E50A0014F78F /* Debug */,
293 | 0FB0086F1949E50A0014F78F /* Release */,
294 | );
295 | defaultConfigurationIsVisible = 0;
296 | defaultConfigurationName = Release;
297 | };
298 | /* End XCConfigurationList section */
299 | };
300 | rootObject = 0FB0085E1949E50A0014F78F /* Project object */;
301 | }
302 |
--------------------------------------------------------------------------------