[CalendarServer-changes] [1053] PyOpenDirectory/branches/users/cdaboo/od-schema-1044

source_changes at macosforge.org source_changes at macosforge.org
Tue Jan 16 13:47:36 PST 2007


Revision: 1053
          http://trac.macosforge.org/projects/calendarserver/changeset/1053
Author:   cdaboo at apple.com
Date:     2007-01-16 13:47:35 -0800 (Tue, 16 Jan 2007)

Log Message:
-----------
Make sure we can convert string values > 256 bytes long.

Modified Paths:
--------------
    PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/CFStringUtil.cpp
    PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/PythonWrapper.cpp
    PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3
    PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser
    PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/test.cpp
    PyOpenDirectory/branches/users/cdaboo/od-schema-1044/test.py

Modified: PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/CFStringUtil.cpp
===================================================================
--- PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/CFStringUtil.cpp	2007-01-16 20:30:25 UTC (rev 1052)
+++ PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/CFStringUtil.cpp	2007-01-16 21:47:35 UTC (rev 1053)
@@ -77,13 +77,39 @@
 	
 	if (bytes == NULL)
 	{
-		char localBuffer[256];
-		localBuffer[0] = 0;
-		Boolean success = ::CFStringGetCString(mRef, localBuffer, 256, kCFStringEncodingUTF8);
-		if (!success)
-			localBuffer[0] = 0;
+		// Need to convert the CFString to UTF-8. Since we don't know the exact length of the UTF-8 data
+		// we have to iterate over the conversion process until we succeed or the length we are allocating
+		// is greater than the value it could maximally be. We start with half the UTF-16 encoded value,
+		// which will give an accurate count for an ascii only string (plus add one for \0).
+		CFIndex len = ::CFStringGetLength(mRef)/2 + 1;
+		CFIndex maxSize = ::CFStringGetMaximumSizeForEncoding(::CFStringGetLength(mRef), kCFStringEncodingUTF8) + 1;
+		char* buffer = NULL;
+		while(true)
+		{
+			buffer = (char*)::malloc(len);
+			if (buffer == NULL)
+				break;
+			buffer[0] = 0;
+			Boolean success = ::CFStringGetCString(mRef, buffer, len, kCFStringEncodingUTF8);
+			if (!success)
+			{
+				::free(buffer);
+				buffer = NULL;
+				if (len == maxSize)
+				{
+					buffer = (char*)::malloc(1);
+					buffer[0] = 0;
+					break;
+				}
+				len *= 2;
+				if (len > maxSize)
+					len = maxSize;
+			}
+			else
+				break;
+		}
 		
-		return ::strdup(localBuffer);
+		return buffer;
 	}
 	else
 	{

Modified: PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/PythonWrapper.cpp
===================================================================
--- PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/PythonWrapper.cpp	2007-01-16 20:30:25 UTC (rev 1052)
+++ PyOpenDirectory/branches/users/cdaboo/od-schema-1044/src/PythonWrapper.cpp	2007-01-16 21:47:35 UTC (rev 1053)
@@ -35,23 +35,8 @@
 // Utility function - not exposed to Python
 static PyObject* CFStringToPyStr(CFStringRef str)
 {
-	PyObject* pystr = NULL;
-	const char* bytes = CFStringGetCStringPtr(str, kCFStringEncodingUTF8);
-	
-	if (bytes == NULL)
-	{
-		char localBuffer[256];
-		Boolean success = CFStringGetCString(str, localBuffer, 256, kCFStringEncodingUTF8);
-		if (!success)
-			localBuffer[0] = 0;
-		pystr = PyString_FromString(localBuffer);
-	}
-	else
-	{
-		pystr = PyString_FromString(bytes);
-	}
-	
-	return pystr;
+	CFStringUtil s(str);
+	return PyString_FromString(s.temp_str());
 }
 
 // Utility function - not exposed to Python

Modified: PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3
===================================================================
--- PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3	2007-01-16 20:30:25 UTC (rev 1052)
+++ PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3	2007-01-16 21:47:35 UTC (rev 1053)
@@ -195,48 +195,7 @@
 	<key>Notifications</key>
 	<array/>
 	<key>OpenEditors</key>
-	<array>
-		<dict>
-			<key>Content</key>
-			<dict>
-				<key>PBXProjectModuleGUID</key>
-				<string>AF99D3960B5D69F100F4C984</string>
-				<key>PBXProjectModuleLabel</key>
-				<string>PythonWrapper.cpp</string>
-				<key>PBXSplitModuleInNavigatorKey</key>
-				<dict>
-					<key>Split0</key>
-					<dict>
-						<key>PBXProjectModuleGUID</key>
-						<string>AF99D3970B5D69F100F4C984</string>
-						<key>PBXProjectModuleLabel</key>
-						<string>PythonWrapper.cpp</string>
-						<key>_historyCapacity</key>
-						<integer>0</integer>
-						<key>bookmark</key>
-						<string>AF99D3AE0B5D6F5D00F4C984</string>
-						<key>history</key>
-						<array>
-							<string>AF99D3940B5D69C700F4C984</string>
-						</array>
-					</dict>
-					<key>SplitCount</key>
-					<string>1</string>
-				</dict>
-				<key>StatusBarVisibility</key>
-				<true/>
-			</dict>
-			<key>Geometry</key>
-			<dict>
-				<key>Frame</key>
-				<string>{{0, 20}, {972, 884}}</string>
-				<key>PBXModuleWindowStatusBarHidden2</key>
-				<false/>
-				<key>RubberWindowFrame</key>
-				<string>303 147 972 925 0 0 1920 1178 </string>
-			</dict>
-		</dict>
-	</array>
+	<array/>
 	<key>PerspectiveWidths</key>
 	<array>
 		<integer>-1</integer>
@@ -362,27 +321,26 @@
 										<key>_historyCapacity</key>
 										<integer>0</integer>
 										<key>bookmark</key>
-										<string>AF99D3AD0B5D6F5D00F4C984</string>
+										<string>AF78F4A90B5D8169005825FF</string>
 										<key>history</key>
 										<array>
 											<string>AF99D2C70B5D2FD100F4C984</string>
-											<string>AF99D3790B5D55FC00F4C984</string>
-											<string>AF99D35C0B5D539800F4C984</string>
+											<string>AF78F48C0B5D7F57005825FF</string>
+											<string>AF78F4A50B5D8169005825FF</string>
+											<string>AF78F4A60B5D8169005825FF</string>
 										</array>
 										<key>prevStack</key>
 										<array>
 											<string>AF99D2B40B5D2CF000F4C984</string>
 											<string>AF99D2BC0B5D2D2A00F4C984</string>
-											<string>AF99D2C80B5D2FD100F4C984</string>
-											<string>AF99D2E00B5D381900F4C984</string>
 											<string>AF99D3310B5D4C9300F4C984</string>
-											<string>AF99D3320B5D4C9300F4C984</string>
-											<string>AF99D3330B5D4C9300F4C984</string>
-											<string>AF99D3340B5D4C9300F4C984</string>
-											<string>AF99D3350B5D4C9300F4C984</string>
-											<string>AF99D35E0B5D539800F4C984</string>
-											<string>AF99D35F0B5D539800F4C984</string>
-											<string>AF99D37A0B5D55FC00F4C984</string>
+											<string>AF78F48E0B5D7F57005825FF</string>
+											<string>AF78F48F0B5D7F57005825FF</string>
+											<string>AF78F4900B5D7F57005825FF</string>
+											<string>AF78F4910B5D7F57005825FF</string>
+											<string>AF78F4920B5D7F57005825FF</string>
+											<string>AF78F4A70B5D8169005825FF</string>
+											<string>AF78F4A80B5D8169005825FF</string>
 										</array>
 									</dict>
 									<key>SplitCount</key>
@@ -442,9 +400,9 @@
 			</array>
 			<key>TableOfContents</key>
 			<array>
-				<string>AF99D2690B5D1D6000F4C984</string>
+				<string>AF78F46E0B5D7C6C005825FF</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>AF99D26A0B5D1D6000F4C984</string>
+				<string>AF78F46F0B5D7C6C005825FF</string>
 				<string>1CE0B20306471E060097A5F4</string>
 				<string>1CE0B20506471E060097A5F4</string>
 			</array>
@@ -578,49 +536,20 @@
 	<integer>5</integer>
 	<key>WindowOrderList</key>
 	<array>
-		<string>AF99D3AF0B5D6F5D00F4C984</string>
-		<string>AF99D3AA0B5D6EB600F4C984</string>
-		<string>AF99D3AB0B5D6EB600F4C984</string>
-		<string>AF99D3990B5D69F100F4C984</string>
-		<string>AF99D3910B5D5FA700F4C984</string>
-		<string>AF99D37E0B5D56A900F4C984</string>
-		<string>AF99D3640B5D539800F4C984</string>
-		<string>AF99D3650B5D539800F4C984</string>
-		<string>AF99D3610B5D539800F4C984</string>
-		<string>AF99D3660B5D539800F4C984</string>
-		<string>AF99D3670B5D539800F4C984</string>
-		<string>AF99D3480B5D503D00F4C984</string>
-		<string>AF99D3410B5D4E3A00F4C984</string>
-		<string>AF99D33E0B5D4E3A00F4C984</string>
-		<string>AF99D3370B5D4C9300F4C984</string>
-		<string>AF99D3380B5D4C9300F4C984</string>
-		<string>AF99D3390B5D4C9300F4C984</string>
-		<string>AF99D3230B5D483900F4C984</string>
-		<string>AF99D31C0B5D471300F4C984</string>
-		<string>AF99D30F0B5D469A00F4C984</string>
-		<string>AF99D3030B5D3E5F00F4C984</string>
-		<string>AF99D3040B5D3E5F00F4C984</string>
-		<string>AF99D2EB0B5D3BA200F4C984</string>
-		<string>AF99D2EC0B5D3BA200F4C984</string>
-		<string>AF99D2ED0B5D3BA200F4C984</string>
-		<string>AF99D2E60B5D3BA200F4C984</string>
-		<string>AF99D2CB0B5D2FD100F4C984</string>
-		<string>AF99D2C10B5D2D2A00F4C984</string>
-		<string>AFBD6A500B4AC44700A565AE</string>
-		<string>AF99D2A60B5D2C2C00F4C984</string>
-		<string>AF99D29B0B5D275900F4C984</string>
-		<string>AF99D29C0B5D275900F4C984</string>
-		<string>AF99D29D0B5D275900F4C984</string>
-		<string>AF99D29E0B5D275900F4C984</string>
-		<string>AF99D29F0B5D275900F4C984</string>
-		<string>AF99D2A00B5D275900F4C984</string>
-		<string>AF99D2A10B5D275900F4C984</string>
-		<string>AF99D2A20B5D275900F4C984</string>
-		<string>AF99D2980B5D275900F4C984</string>
-		<string>AF99D2A30B5D275900F4C984</string>
+		<string>AF78F4AA0B5D8169005825FF</string>
+		<string>1C530D57069F1CE1000CFCEE</string>
+		<string>AF78F4AB0B5D8169005825FF</string>
+		<string>AF78F49A0B5D801B005825FF</string>
+		<string>AF78F4940B5D7F57005825FF</string>
+		<string>AF78F4950B5D7F57005825FF</string>
+		<string>AF78F4960B5D7F57005825FF</string>
+		<string>1C78EAAD065D492600B07095</string>
 		<string>1CD10A99069EF8BA00B06720</string>
+		<string>AFBD6A500B4AC44700A565AE</string>
+		<string>AF78F4970B5D7F57005825FF</string>
+		<string>AF78F4700B5D7C6C005825FF</string>
+		<string>AF282B810B5D77BA00EB6205</string>
 		<string>AF99D3960B5D69F100F4C984</string>
-		<string>1C78EAAD065D492600B07095</string>
 		<string>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/PyOpenDirectory/support/PyOpenDirectory.xcodeproj</string>
 	</array>
 	<key>WindowString</key>
@@ -647,7 +576,7 @@
 								<key>PBXProjectModuleGUID</key>
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>PythonWrapper.cpp</string>
+								<string>CFStringUtil.cpp</string>
 								<key>StatusBarVisibility</key>
 								<true/>
 							</dict>
@@ -703,7 +632,7 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>AFBD6A500B4AC44700A565AE</string>
-				<string>AF99D2AE0B5D2CCB00F4C984</string>
+				<string>AF78F47B0B5D7F0C005825FF</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
 			</array>
@@ -745,8 +674,8 @@
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {588, 390}}</string>
-											<string>{{588, 0}, {701, 390}}</string>
+											<string>{{0, 0}, {588, 395}}</string>
+											<string>{{588, 0}, {701, 395}}</string>
 										</array>
 									</dict>
 									<key>VerticalSplitView</key>
@@ -761,8 +690,8 @@
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {1289, 390}}</string>
-											<string>{{0, 390}, {1289, 360}}</string>
+											<string>{{0, 0}, {1289, 395}}</string>
+											<string>{{0, 395}, {1289, 355}}</string>
 										</array>
 									</dict>
 								</dict>
@@ -795,7 +724,7 @@
 										<real>323</real>
 									</array>
 									<key>Frame</key>
-									<string>{{588, 0}, {701, 390}}</string>
+									<string>{{588, 0}, {701, 395}}</string>
 									<key>RubberWindowFrame</key>
 									<string>1 380 1289 791 0 0 1920 1178 </string>
 								</dict>
@@ -823,13 +752,13 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1CD10A99069EF8BA00B06720</string>
-				<string>AF99D26B0B5D1D6000F4C984</string>
+				<string>AF78F47E0B5D7F24005825FF</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>AF99D26C0B5D1D6000F4C984</string>
-				<string>AF99D26D0B5D1D6000F4C984</string>
-				<string>AF99D26E0B5D1D6000F4C984</string>
-				<string>AF99D26F0B5D1D6000F4C984</string>
-				<string>AF99D2700B5D1D6000F4C984</string>
+				<string>AF78F47F0B5D7F24005825FF</string>
+				<string>AF78F4800B5D7F24005825FF</string>
+				<string>AF78F4810B5D7F24005825FF</string>
+				<string>AF78F4820B5D7F24005825FF</string>
+				<string>AF78F4830B5D7F24005825FF</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugV3</string>
@@ -919,8 +848,8 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1C530D57069F1CE1000CFCEE</string>
-				<string>AF8974B30B4B08A700965268</string>
-				<string>AF8974B40B4B08A700965268</string>
+				<string>AF78F4A00B5D809B005825FF</string>
+				<string>AF78F4A10B5D809B005825FF</string>
 				<string>1CDD528C0622207200134675</string>
 				<string>1CD0528E0623707200166675</string>
 			</array>
@@ -985,7 +914,7 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1C78EAAD065D492600B07095</string>
-				<string>AF99D2EA0B5D3BA200F4C984</string>
+				<string>AF78F4840B5D7F24005825FF</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
 			<key>ToolbarConfiguration</key>
@@ -995,7 +924,7 @@
 			<key>WindowToolGUID</key>
 			<string>1C78EAAD065D492600B07095</string>
 			<key>WindowToolIsVisible</key>
-			<true/>
+			<false/>
 		</dict>
 		<dict>
 			<key>Identifier</key>

Modified: PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser
===================================================================
--- PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser	2007-01-16 20:30:25 UTC (rev 1052)
+++ PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser	2007-01-16 21:47:35 UTC (rev 1053)
@@ -61,154 +61,63 @@
 					PBXFileDataSource_Target_ColumnID,
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 190651725;
-			PBXWorkspaceStateSaveDate = 190651725;
+			PBXPerProjectTemplateStateSaveDate = 190676062;
+			PBXWorkspaceStateSaveDate = 190676062;
 		};
 		perUserProjectItems = {
-			AF99D25A0B5D1D4D00F4C984 /* PBXTextBookmark */ = AF99D25A0B5D1D4D00F4C984 /* PBXTextBookmark */;
-			AF99D2720B5D1D9600F4C984 /* PBXBookmark */ = AF99D2720B5D1D9600F4C984 /* PBXBookmark */;
-			AF99D2960B5D275900F4C984 /* PBXTextBookmark */ = AF99D2960B5D275900F4C984 /* PBXTextBookmark */;
-			AF99D2970B5D275900F4C984 /* PBXTextBookmark */ = AF99D2970B5D275900F4C984 /* PBXTextBookmark */;
-			AF99D29A0B5D275900F4C984 /* PBXTextBookmark */ = AF99D29A0B5D275900F4C984 /* PBXTextBookmark */;
-			AF99D2A40B5D2C2C00F4C984 /* PBXTextBookmark */ = AF99D2A40B5D2C2C00F4C984 /* PBXTextBookmark */;
-			AF99D2A50B5D2C2C00F4C984 /* PBXTextBookmark */ = AF99D2A50B5D2C2C00F4C984 /* PBXTextBookmark */;
-			AF99D2A80B5D2C2C00F4C984 /* PBXTextBookmark */ = AF99D2A80B5D2C2C00F4C984 /* PBXTextBookmark */;
-			AF99D2A90B5D2C2C00F4C984 /* PBXTextBookmark */ = AF99D2A90B5D2C2C00F4C984 /* PBXTextBookmark */;
-			AF99D2B10B5D2CEF00F4C984 /* PBXTextBookmark */ = AF99D2B10B5D2CEF00F4C984 /* PBXTextBookmark */;
-			AF99D2B20B5D2CEF00F4C984 /* PBXTextBookmark */ = AF99D2B20B5D2CEF00F4C984 /* PBXTextBookmark */;
-			AF99D2B30B5D2CF000F4C984 /* PBXTextBookmark */ = AF99D2B30B5D2CF000F4C984 /* PBXTextBookmark */;
-			AF99D2B40B5D2CF000F4C984 /* PBXTextBookmark */ = AF99D2B40B5D2CF000F4C984 /* PBXTextBookmark */;
-			AF99D2B50B5D2CF000F4C984 /* PBXTextBookmark */ = AF99D2B50B5D2CF000F4C984 /* PBXTextBookmark */;
-			AF99D2B60B5D2CF000F4C984 /* PBXTextBookmark */ = AF99D2B60B5D2CF000F4C984 /* PBXTextBookmark */;
-			AF99D2B70B5D2CF000F4C984 /* PBXTextBookmark */ = AF99D2B70B5D2CF000F4C984 /* PBXTextBookmark */;
-			AF99D2BB0B5D2D2A00F4C984 /* PBXTextBookmark */ = AF99D2BB0B5D2D2A00F4C984 /* PBXTextBookmark */;
-			AF99D2BC0B5D2D2A00F4C984 /* PBXTextBookmark */ = AF99D2BC0B5D2D2A00F4C984 /* PBXTextBookmark */;
-			AF99D2BD0B5D2D2A00F4C984 /* PBXTextBookmark */ = AF99D2BD0B5D2D2A00F4C984 /* PBXTextBookmark */;
-			AF99D2BE0B5D2D2A00F4C984 /* PBXTextBookmark */ = AF99D2BE0B5D2D2A00F4C984 /* PBXTextBookmark */;
-			AF99D2BF0B5D2D2A00F4C984 /* PBXTextBookmark */ = AF99D2BF0B5D2D2A00F4C984 /* PBXTextBookmark */;
-			AF99D2C00B5D2D2A00F4C984 /* PBXTextBookmark */ = AF99D2C00B5D2D2A00F4C984 /* PBXTextBookmark */;
-			AF99D2C40B5D2FA100F4C984 /* PBXTextBookmark */ = AF99D2C40B5D2FA100F4C984 /* PBXTextBookmark */;
-			AF99D2C50B5D2FA100F4C984 /* PBXTextBookmark */ = AF99D2C50B5D2FA100F4C984 /* PBXTextBookmark */;
-			AF99D2C70B5D2FD100F4C984 /* PBXTextBookmark */ = AF99D2C70B5D2FD100F4C984 /* PBXTextBookmark */;
-			AF99D2C80B5D2FD100F4C984 /* PBXTextBookmark */ = AF99D2C80B5D2FD100F4C984 /* PBXTextBookmark */;
-			AF99D2C90B5D2FD100F4C984 /* PBXTextBookmark */ = AF99D2C90B5D2FD100F4C984 /* PBXTextBookmark */;
-			AF99D2CA0B5D2FD100F4C984 /* PBXTextBookmark */ = AF99D2CA0B5D2FD100F4C984 /* PBXTextBookmark */;
-			AF99D2CF0B5D303C00F4C984 /* PBXTextBookmark */ = AF99D2CF0B5D303C00F4C984 /* PBXTextBookmark */;
-			AF99D2D00B5D303C00F4C984 /* PBXTextBookmark */ = AF99D2D00B5D303C00F4C984 /* PBXTextBookmark */;
-			AF99D2D30B5D311000F4C984 /* PBXTextBookmark */ = AF99D2D30B5D311000F4C984 /* PBXTextBookmark */;
-			AF99D2D40B5D311000F4C984 /* PBXTextBookmark */ = AF99D2D40B5D311000F4C984 /* PBXTextBookmark */;
-			AF99D2DA0B5D381700F4C984 /* PBXTextBookmark */ = AF99D2DA0B5D381700F4C984 /* PBXTextBookmark */;
-			AF99D2DB0B5D381700F4C984 /* PBXTextBookmark */ = AF99D2DB0B5D381700F4C984 /* PBXTextBookmark */;
-			AF99D2DC0B5D381700F4C984 /* PBXTextBookmark */ = AF99D2DC0B5D381700F4C984 /* PBXTextBookmark */;
-			AF99D2DD0B5D381700F4C984 /* PBXTextBookmark */ = AF99D2DD0B5D381700F4C984 /* PBXTextBookmark */;
-			AF99D2DE0B5D381900F4C984 /* PBXTextBookmark */ = AF99D2DE0B5D381900F4C984 /* PBXTextBookmark */;
-			AF99D2DF0B5D381900F4C984 /* PBXBookmark */ = AF99D2DF0B5D381900F4C984 /* PBXBookmark */;
-			AF99D2E00B5D381900F4C984 /* PBXTextBookmark */ = AF99D2E00B5D381900F4C984 /* PBXTextBookmark */;
-			AF99D2E10B5D381900F4C984 /* PBXTextBookmark */ = AF99D2E10B5D381900F4C984 /* PBXTextBookmark */;
-			AF99D2E20B5D381900F4C984 /* PBXTextBookmark */ = AF99D2E20B5D381900F4C984 /* PBXTextBookmark */;
-			AF99D2E30B5D3B8100F4C984 /* PBXBookmark */ = AF99D2E30B5D3B8100F4C984 /* PBXBookmark */;
-			AF99D2E50B5D3BA200F4C984 /* PBXTextBookmark */ = AF99D2E50B5D3BA200F4C984 /* PBXTextBookmark */;
-			AF99D2E80B5D3BA200F4C984 /* PBXTextBookmark */ = AF99D2E80B5D3BA200F4C984 /* PBXTextBookmark */;
-			AF99D2E90B5D3BA200F4C984 /* PBXTextBookmark */ = AF99D2E90B5D3BA200F4C984 /* PBXTextBookmark */;
-			AF99D2EE0B5D3CB700F4C984 /* PBXTextBookmark */ = AF99D2EE0B5D3CB700F4C984 /* PBXTextBookmark */;
-			AF99D2EF0B5D3CB700F4C984 /* PBXTextBookmark */ = AF99D2EF0B5D3CB700F4C984 /* PBXTextBookmark */;
-			AF99D2F00B5D3CB700F4C984 /* PBXTextBookmark */ = AF99D2F00B5D3CB700F4C984 /* PBXTextBookmark */;
-			AF99D2F10B5D3CB700F4C984 /* PBXTextBookmark */ = AF99D2F10B5D3CB700F4C984 /* PBXTextBookmark */;
-			AF99D2F20B5D3CB700F4C984 /* PBXTextBookmark */ = AF99D2F20B5D3CB700F4C984 /* PBXTextBookmark */;
-			AF99D2F30B5D3CB700F4C984 /* PBXTextBookmark */ = AF99D2F30B5D3CB700F4C984 /* PBXTextBookmark */;
-			AF99D2F40B5D3CB700F4C984 /* PBXTextBookmark */ = AF99D2F40B5D3CB700F4C984 /* PBXTextBookmark */;
-			AF99D3010B5D3E5F00F4C984 /* PBXTextBookmark */ = AF99D3010B5D3E5F00F4C984 /* PBXTextBookmark */;
-			AF99D3020B5D3E5F00F4C984 /* PBXTextBookmark */ = AF99D3020B5D3E5F00F4C984 /* PBXTextBookmark */;
-			AF99D3050B5D3E6300F4C984 /* PBXTextBookmark */ = AF99D3050B5D3E6300F4C984 /* PBXTextBookmark */;
-			AF99D3060B5D3E6300F4C984 /* PBXTextBookmark */ = AF99D3060B5D3E6300F4C984 /* PBXTextBookmark */;
-			AF99D30D0B5D469A00F4C984 /* PBXTextBookmark */ = AF99D30D0B5D469A00F4C984 /* PBXTextBookmark */;
-			AF99D30E0B5D469A00F4C984 /* PBXTextBookmark */ = AF99D30E0B5D469A00F4C984 /* PBXTextBookmark */;
-			AF99D3100B5D469C00F4C984 /* PBXTextBookmark */ = AF99D3100B5D469C00F4C984 /* PBXTextBookmark */;
-			AF99D3110B5D469C00F4C984 /* PBXTextBookmark */ = AF99D3110B5D469C00F4C984 /* PBXTextBookmark */;
-			AF99D3150B5D46D300F4C984 /* PBXTextBookmark */ = AF99D3150B5D46D300F4C984 /* PBXTextBookmark */;
-			AF99D3160B5D46D500F4C984 /* PBXTextBookmark */ = AF99D3160B5D46D500F4C984 /* PBXTextBookmark */;
-			AF99D31B0B5D471300F4C984 /* PBXTextBookmark */ = AF99D31B0B5D471300F4C984 /* PBXTextBookmark */;
-			AF99D3210B5D483900F4C984 /* PBXTextBookmark */ = AF99D3210B5D483900F4C984 /* PBXTextBookmark */;
-			AF99D3220B5D483900F4C984 /* PBXTextBookmark */ = AF99D3220B5D483900F4C984 /* PBXTextBookmark */;
-			AF99D32B0B5D4C0200F4C984 /* PBXTextBookmark */ = AF99D32B0B5D4C0200F4C984 /* PBXTextBookmark */;
-			AF99D32D0B5D4C7100F4C984 /* PBXTextBookmark */ = AF99D32D0B5D4C7100F4C984 /* PBXTextBookmark */;
-			AF99D32F0B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D32F0B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D3300B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D3300B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D3310B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D3310B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D3320B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D3320B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D3330B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D3330B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D3340B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D3340B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D3350B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D3350B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D3360B5D4C9300F4C984 /* PBXTextBookmark */ = AF99D3360B5D4C9300F4C984 /* PBXTextBookmark */;
-			AF99D33A0B5D4CF300F4C984 /* PBXTextBookmark */ = AF99D33A0B5D4CF300F4C984 /* PBXTextBookmark */;
-			AF99D33B0B5D4CF700F4C984 /* PBXBookmark */ = AF99D33B0B5D4CF700F4C984 /* PBXBookmark */;
-			AF99D33D0B5D4E3A00F4C984 /* PBXTextBookmark */ = AF99D33D0B5D4E3A00F4C984 /* PBXTextBookmark */;
-			AF99D3400B5D4E3A00F4C984 /* PBXTextBookmark */ = AF99D3400B5D4E3A00F4C984 /* PBXTextBookmark */;
-			AF99D3430B5D4E3A00F4C984 /* PBXTextBookmark */ = AF99D3430B5D4E3A00F4C984 /* PBXTextBookmark */;
-			AF99D3440B5D4E3A00F4C984 /* PBXTextBookmark */ = AF99D3440B5D4E3A00F4C984 /* PBXTextBookmark */;
-			AF99D3460B5D503D00F4C984 /* PBXTextBookmark */ = AF99D3460B5D503D00F4C984 /* PBXTextBookmark */;
-			AF99D3470B5D503D00F4C984 /* PBXTextBookmark */ = AF99D3470B5D503D00F4C984 /* PBXTextBookmark */;
-			AF99D34A0B5D503D00F4C984 /* PBXTextBookmark */ = AF99D34A0B5D503D00F4C984 /* PBXTextBookmark */;
-			AF99D34C0B5D503D00F4C984 /* PBXTextBookmark */ = AF99D34C0B5D503D00F4C984 /* PBXTextBookmark */;
-			AF99D34E0B5D503D00F4C984 /* PBXTextBookmark */ = AF99D34E0B5D503D00F4C984 /* PBXTextBookmark */;
-			AF99D3530B5D51EA00F4C984 /* PBXTextBookmark */ = AF99D3530B5D51EA00F4C984 /* PBXTextBookmark */;
-			AF99D3540B5D51EA00F4C984 /* PBXTextBookmark */ = AF99D3540B5D51EA00F4C984 /* PBXTextBookmark */;
-			AF99D3550B5D51EA00F4C984 /* PBXTextBookmark */ = AF99D3550B5D51EA00F4C984 /* PBXTextBookmark */;
-			AF99D3560B5D51EA00F4C984 /* PBXTextBookmark */ = AF99D3560B5D51EA00F4C984 /* PBXTextBookmark */;
-			AF99D35B0B5D52FC00F4C984 /* PBXBookmark */ = AF99D35B0B5D52FC00F4C984 /* PBXBookmark */;
-			AF99D35C0B5D539800F4C984 /* PBXTextBookmark */ = AF99D35C0B5D539800F4C984 /* PBXTextBookmark */;
-			AF99D35D0B5D539800F4C984 /* PBXTextBookmark */ = AF99D35D0B5D539800F4C984 /* PBXTextBookmark */;
-			AF99D35E0B5D539800F4C984 /* PBXTextBookmark */ = AF99D35E0B5D539800F4C984 /* PBXTextBookmark */;
-			AF99D35F0B5D539800F4C984 /* PBXTextBookmark */ = AF99D35F0B5D539800F4C984 /* PBXTextBookmark */;
-			AF99D3600B5D539800F4C984 /* PBXTextBookmark */ = AF99D3600B5D539800F4C984 /* PBXTextBookmark */;
-			AF99D3630B5D539800F4C984 /* PBXTextBookmark */ = AF99D3630B5D539800F4C984 /* PBXTextBookmark */;
-			AF99D3690B5D554E00F4C984 /* PBXTextBookmark */ = AF99D3690B5D554E00F4C984 /* PBXTextBookmark */;
-			AF99D36A0B5D554E00F4C984 /* PBXTextBookmark */ = AF99D36A0B5D554E00F4C984 /* PBXTextBookmark */;
-			AF99D36C0B5D556100F4C984 /* PBXTextBookmark */ = AF99D36C0B5D556100F4C984 /* PBXTextBookmark */;
-			AF99D36D0B5D556100F4C984 /* PBXTextBookmark */ = AF99D36D0B5D556100F4C984 /* PBXTextBookmark */;
-			AF99D36F0B5D559300F4C984 /* PBXTextBookmark */ = AF99D36F0B5D559300F4C984 /* PBXTextBookmark */;
-			AF99D3700B5D559300F4C984 /* PBXTextBookmark */ = AF99D3700B5D559300F4C984 /* PBXTextBookmark */;
-			AF99D3730B5D55E000F4C984 /* PBXTextBookmark */ = AF99D3730B5D55E000F4C984 /* PBXTextBookmark */;
-			AF99D3740B5D55E000F4C984 /* PBXTextBookmark */ = AF99D3740B5D55E000F4C984 /* PBXTextBookmark */;
-			AF99D3750B5D55E000F4C984 /* PBXTextBookmark */ = AF99D3750B5D55E000F4C984 /* PBXTextBookmark */;
-			AF99D3760B5D55E000F4C984 /* PBXTextBookmark */ = AF99D3760B5D55E000F4C984 /* PBXTextBookmark */;
-			AF99D3790B5D55FC00F4C984 /* PBXTextBookmark */ = AF99D3790B5D55FC00F4C984 /* PBXTextBookmark */;
-			AF99D37A0B5D55FC00F4C984 /* PBXTextBookmark */ = AF99D37A0B5D55FC00F4C984 /* PBXTextBookmark */;
-			AF99D37B0B5D55FC00F4C984 /* PBXTextBookmark */ = AF99D37B0B5D55FC00F4C984 /* PBXTextBookmark */;
-			AF99D37C0B5D561300F4C984 /* PBXBookmark */ = AF99D37C0B5D561300F4C984 /* PBXBookmark */;
-			AF99D37D0B5D56A900F4C984 /* PBXTextBookmark */ = AF99D37D0B5D56A900F4C984 /* PBXTextBookmark */;
-			AF99D3800B5D56A900F4C984 /* PBXTextBookmark */ = AF99D3800B5D56A900F4C984 /* PBXTextBookmark */;
-			AF99D3820B5D579A00F4C984 /* PBXTextBookmark */ = AF99D3820B5D579A00F4C984 /* PBXTextBookmark */;
-			AF99D3830B5D579A00F4C984 /* PBXTextBookmark */ = AF99D3830B5D579A00F4C984 /* PBXTextBookmark */;
-			AF99D3840B5D579A00F4C984 /* PBXTextBookmark */ = AF99D3840B5D579A00F4C984 /* PBXTextBookmark */;
-			AF99D3850B5D58E800F4C984 /* PBXTextBookmark */ = AF99D3850B5D58E800F4C984 /* PBXTextBookmark */;
-			AF99D3860B5D58E800F4C984 /* PBXTextBookmark */ = AF99D3860B5D58E800F4C984 /* PBXTextBookmark */;
-			AF99D3870B5D5A5C00F4C984 /* PBXTextBookmark */ = AF99D3870B5D5A5C00F4C984 /* PBXTextBookmark */;
-			AF99D3880B5D5A5C00F4C984 /* PBXTextBookmark */ = AF99D3880B5D5A5C00F4C984 /* PBXTextBookmark */;
-			AF99D3890B5D5DD300F4C984 /* PBXTextBookmark */ = AF99D3890B5D5DD300F4C984 /* PBXTextBookmark */;
-			AF99D38A0B5D5DD300F4C984 /* PBXTextBookmark */ = AF99D38A0B5D5DD300F4C984 /* PBXTextBookmark */;
-			AF99D38C0B5D5E2700F4C984 /* PBXTextBookmark */ = AF99D38C0B5D5E2700F4C984 /* PBXTextBookmark */;
-			AF99D38D0B5D5E2700F4C984 /* PBXTextBookmark */ = AF99D38D0B5D5E2700F4C984 /* PBXTextBookmark */;
-			AF99D38F0B5D5F8500F4C984 /* PBXBookmark */ = AF99D38F0B5D5F8500F4C984 /* PBXBookmark */;
-			AF99D3900B5D5FA700F4C984 /* PBXTextBookmark */ = AF99D3900B5D5FA700F4C984 /* PBXTextBookmark */;
-			AF99D3930B5D5FA700F4C984 /* PBXTextBookmark */ = AF99D3930B5D5FA700F4C984 /* PBXTextBookmark */;
-			AF99D3940B5D69C700F4C984 /* PBXBookmark */ = AF99D3940B5D69C700F4C984 /* PBXBookmark */;
-			AF99D3950B5D69F100F4C984 /* PBXTextBookmark */ = AF99D3950B5D69F100F4C984 /* PBXTextBookmark */;
-			AF99D3980B5D69F100F4C984 /* PBXTextBookmark */ = AF99D3980B5D69F100F4C984 /* PBXTextBookmark */;
-			AF99D39A0B5D6A5B00F4C984 /* PBXTextBookmark */ = AF99D39A0B5D6A5B00F4C984 /* PBXTextBookmark */;
-			AF99D39B0B5D6A5B00F4C984 /* PBXTextBookmark */ = AF99D39B0B5D6A5B00F4C984 /* PBXTextBookmark */;
-			AF99D39C0B5D6A7C00F4C984 /* PBXTextBookmark */ = AF99D39C0B5D6A7C00F4C984 /* PBXTextBookmark */;
-			AF99D39D0B5D6A7C00F4C984 /* PBXTextBookmark */ = AF99D39D0B5D6A7C00F4C984 /* PBXTextBookmark */;
-			AF99D39E0B5D6AFF00F4C984 /* PBXTextBookmark */ = AF99D39E0B5D6AFF00F4C984 /* PBXTextBookmark */;
-			AF99D39F0B5D6AFF00F4C984 /* PBXTextBookmark */ = AF99D39F0B5D6AFF00F4C984 /* PBXTextBookmark */;
-			AF99D3A00B5D6B3700F4C984 /* PBXTextBookmark */ = AF99D3A00B5D6B3700F4C984 /* PBXTextBookmark */;
-			AF99D3A10B5D6B3700F4C984 /* PBXTextBookmark */ = AF99D3A10B5D6B3700F4C984 /* PBXTextBookmark */;
-			AF99D3A20B5D6BCD00F4C984 /* PBXTextBookmark */ = AF99D3A20B5D6BCD00F4C984 /* PBXTextBookmark */;
-			AF99D3A30B5D6BCD00F4C984 /* PBXTextBookmark */ = AF99D3A30B5D6BCD00F4C984 /* PBXTextBookmark */;
-			AF99D3A80B5D6EB600F4C984 /* PBXTextBookmark */ = AF99D3A80B5D6EB600F4C984 /* PBXTextBookmark */;
-			AF99D3A90B5D6EB600F4C984 /* PBXTextBookmark */ = AF99D3A90B5D6EB600F4C984 /* PBXTextBookmark */;
-			AF99D3AD0B5D6F5D00F4C984 /* PBXTextBookmark */ = AF99D3AD0B5D6F5D00F4C984 /* PBXTextBookmark */;
-			AF99D3AE0B5D6F5D00F4C984 /* PBXTextBookmark */ = AF99D3AE0B5D6F5D00F4C984 /* PBXTextBookmark */;
+			AF282B7C0B5D777700EB6205 = AF282B7C0B5D777700EB6205 /* PBXBookmark */;
+			AF282B7D0B5D77BA00EB6205 = AF282B7D0B5D77BA00EB6205 /* PBXTextBookmark */;
+			AF282B7E0B5D77BA00EB6205 = AF282B7E0B5D77BA00EB6205 /* PBXTextBookmark */;
+			AF282B830B5D77BA00EB6205 = AF282B830B5D77BA00EB6205 /* PBXTextBookmark */;
+			AF282B840B5D77BA00EB6205 = AF282B840B5D77BA00EB6205 /* PBXTextBookmark */;
+			AF282B850B5D780D00EB6205 = AF282B850B5D780D00EB6205 /* PBXTextBookmark */;
+			AF282B860B5D780D00EB6205 = AF282B860B5D780D00EB6205 /* PBXTextBookmark */;
+			AF282B870B5D780D00EB6205 = AF282B870B5D780D00EB6205 /* PBXTextBookmark */;
+			AF78F46C0B5D7C64005825FF /* PBXBookmark */ = AF78F46C0B5D7C64005825FF /* PBXBookmark */;
+			AF78F46D0B5D7C6C005825FF /* PBXTextBookmark */ = AF78F46D0B5D7C6C005825FF /* PBXTextBookmark */;
+			AF78F4720B5D7C6C005825FF /* PBXTextBookmark */ = AF78F4720B5D7C6C005825FF /* PBXTextBookmark */;
+			AF78F4730B5D7C6C005825FF /* PBXTextBookmark */ = AF78F4730B5D7C6C005825FF /* PBXTextBookmark */;
+			AF78F4790B5D7F0C005825FF /* PBXTextBookmark */ = AF78F4790B5D7F0C005825FF /* PBXTextBookmark */;
+			AF78F47A0B5D7F0C005825FF /* PBXTextBookmark */ = AF78F47A0B5D7F0C005825FF /* PBXTextBookmark */;
+			AF78F47D0B5D7F24005825FF /* PBXTextBookmark */ = AF78F47D0B5D7F24005825FF /* PBXTextBookmark */;
+			AF78F48A0B5D7F54005825FF /* PBXTextBookmark */ = AF78F48A0B5D7F54005825FF /* PBXTextBookmark */;
+			AF78F48B0B5D7F57005825FF /* PBXTextBookmark */ = AF78F48B0B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F48C0B5D7F57005825FF /* PBXTextBookmark */ = AF78F48C0B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F48D0B5D7F57005825FF /* PBXTextBookmark */ = AF78F48D0B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F48E0B5D7F57005825FF /* PBXTextBookmark */ = AF78F48E0B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F48F0B5D7F57005825FF /* PBXTextBookmark */ = AF78F48F0B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F4900B5D7F57005825FF /* PBXTextBookmark */ = AF78F4900B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F4910B5D7F57005825FF /* PBXTextBookmark */ = AF78F4910B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F4920B5D7F57005825FF /* PBXTextBookmark */ = AF78F4920B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F4930B5D7F57005825FF /* PBXTextBookmark */ = AF78F4930B5D7F57005825FF /* PBXTextBookmark */;
+			AF78F4980B5D7FB7005825FF /* PBXBookmark */ = AF78F4980B5D7FB7005825FF /* PBXBookmark */;
+			AF78F4990B5D801B005825FF /* PBXTextBookmark */ = AF78F4990B5D801B005825FF /* PBXTextBookmark */;
+			AF78F49C0B5D801B005825FF /* PBXTextBookmark */ = AF78F49C0B5D801B005825FF /* PBXTextBookmark */;
+			AF78F49E0B5D809B005825FF /* PBXTextBookmark */ = AF78F49E0B5D809B005825FF /* PBXTextBookmark */;
+			AF78F4A40B5D8165005825FF /* PBXTextBookmark */ = AF78F4A40B5D8165005825FF /* PBXTextBookmark */;
+			AF78F4A50B5D8169005825FF /* PBXTextBookmark */ = AF78F4A50B5D8169005825FF /* PBXTextBookmark */;
+			AF78F4A60B5D8169005825FF /* PBXTextBookmark */ = AF78F4A60B5D8169005825FF /* PBXTextBookmark */;
+			AF78F4A70B5D8169005825FF /* PBXTextBookmark */ = AF78F4A70B5D8169005825FF /* PBXTextBookmark */;
+			AF78F4A80B5D8169005825FF /* PBXTextBookmark */ = AF78F4A80B5D8169005825FF /* PBXTextBookmark */;
+			AF78F4A90B5D8169005825FF /* PBXTextBookmark */ = AF78F4A90B5D8169005825FF /* PBXTextBookmark */;
+			AF99D2B40B5D2CF000F4C984 = AF99D2B40B5D2CF000F4C984 /* PBXTextBookmark */;
+			AF99D2BC0B5D2D2A00F4C984 = AF99D2BC0B5D2D2A00F4C984 /* PBXTextBookmark */;
+			AF99D2C70B5D2FD100F4C984 = AF99D2C70B5D2FD100F4C984 /* PBXTextBookmark */;
+			AF99D2C80B5D2FD100F4C984 = AF99D2C80B5D2FD100F4C984 /* PBXTextBookmark */;
+			AF99D2E00B5D381900F4C984 = AF99D2E00B5D381900F4C984 /* PBXTextBookmark */;
+			AF99D3310B5D4C9300F4C984 = AF99D3310B5D4C9300F4C984 /* PBXTextBookmark */;
+			AF99D3320B5D4C9300F4C984 = AF99D3320B5D4C9300F4C984 /* PBXTextBookmark */;
+			AF99D3330B5D4C9300F4C984 = AF99D3330B5D4C9300F4C984 /* PBXTextBookmark */;
+			AF99D3340B5D4C9300F4C984 = AF99D3340B5D4C9300F4C984 /* PBXTextBookmark */;
+			AF99D3350B5D4C9300F4C984 = AF99D3350B5D4C9300F4C984 /* PBXTextBookmark */;
+			AF99D35C0B5D539800F4C984 = AF99D35C0B5D539800F4C984 /* PBXTextBookmark */;
+			AF99D35E0B5D539800F4C984 = AF99D35E0B5D539800F4C984 /* PBXTextBookmark */;
+			AF99D35F0B5D539800F4C984 = AF99D35F0B5D539800F4C984 /* PBXTextBookmark */;
+			AF99D3790B5D55FC00F4C984 = AF99D3790B5D55FC00F4C984 /* PBXTextBookmark */;
+			AF99D37A0B5D55FC00F4C984 = AF99D37A0B5D55FC00F4C984 /* PBXTextBookmark */;
+			AF99D3940B5D69C700F4C984 = AF99D3940B5D69C700F4C984 /* PBXBookmark */;
+			AF99D3B20B5D768A00F4C984 = AF99D3B20B5D768A00F4C984 /* PBXTextBookmark */;
+			AF99D3B30B5D768A00F4C984 = AF99D3B30B5D768A00F4C984 /* PBXTextBookmark */;
 		};
 		sourceControlManager = AF155A2D0A501F7B007E1E6E /* Source Control */;
 		userBuildSettings = {
@@ -216,9 +125,9 @@
 	};
 	08FB7796FE84155DC02AAC07 /* test.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {2534, 3094}}";
-			sepNavSelRange = "{3457, 0}";
-			sepNavVisRect = "{{0, 1081}, {1090, 471}}";
+			sepNavIntBoundsRect = "{{0, 0}, {2534, 3108}}";
+			sepNavSelRange = "{7488, 0}";
+			sepNavVisRect = "{{0, 1939}, {1090, 471}}";
 			sepNavWindowFrame = "{{50, 4}, {1175, 828}}";
 		};
 	};
@@ -287,9 +196,9 @@
 	};
 	AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {987, 11074}}";
-			sepNavSelRange = "{34667, 11}";
-			sepNavVisRect = "{{0, 10046}, {987, 699}}";
+			sepNavIntBoundsRect = "{{0, 0}, {1090, 10822}}";
+			sepNavSelRange = "{15223, 0}";
+			sepNavVisRect = "{{0, 4137}, {1090, 448}}";
 			sepNavWindowFrame = "{{144, 4}, {1046, 828}}";
 		};
 	};
@@ -303,10 +212,10 @@
 	};
 	AF155A310A501F84007E1E6E /* PythonWrapper.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1016, 7406}}";
-			sepNavSelRange = "{3328, 36}";
-			sepNavVisRect = "{{0, 1639}, {913, 852}}";
-			sepNavWindowFrame = "{{113, 4}, {811, 828}}";
+			sepNavIntBoundsRect = "{{0, 0}, {1016, 6006}}";
+			sepNavSelRange = "{1162, 0}";
+			sepNavVisRect = "{{0, 235}, {913, 852}}";
+			sepNavWindowFrame = "{{303, 91}, {972, 981}}";
 		};
 	};
 	AF155AFB0A502C09007E1E6E /* CFStringUtil.h */ = {
@@ -319,662 +228,386 @@
 	};
 	AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {752, 1736}}";
-			sepNavSelRange = "{2303, 0}";
-			sepNavVisRect = "{{0, 841}, {752, 895}}";
+			sepNavIntBoundsRect = "{{0, 0}, {1090, 2100}}";
+			sepNavSelRange = "{2436, 0}";
+			sepNavVisRect = "{{0, 864}, {1090, 448}}";
 			sepNavWindowFrame = "{{36, 4}, {811, 1024}}";
 		};
 	};
-	AF99D25A0B5D1D4D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
+	AF282B7C0B5D777700EB6205 /* PBXBookmark */ = {
+		isa = PBXBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		rLen = 1;
-		rLoc = 108;
-		rType = 1;
 	};
-	AF99D2720B5D1D9600F4C984 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-	};
-	AF99D2960B5D275900F4C984 /* PBXTextBookmark */ = {
+	AF282B7D0B5D77BA00EB6205 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 462";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 135";
 		rLen = 0;
-		rLoc = 14598;
+		rLoc = 4692;
 		rType = 0;
-		vrLen = 1473;
-		vrLoc = 8373;
+		vrLen = 2018;
+		vrLoc = 3800;
 	};
-	AF99D2970B5D275900F4C984 /* PBXTextBookmark */ = {
+	AF282B7E0B5D77BA00EB6205 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 225";
-		rLen = 65;
-		rLoc = 6280;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 135";
+		rLen = 0;
+		rLoc = 4692;
 		rType = 0;
-		vrLen = 1004;
-		vrLoc = 5827;
+		vrLen = 2055;
+		vrLoc = 3763;
 	};
-	AF99D29A0B5D275900F4C984 /* PBXTextBookmark */ = {
+	AF282B830B5D77BA00EB6205 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 456";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 112";
 		rLen = 0;
-		rLoc = 14011;
+		rLoc = 3825;
 		rType = 0;
-		vrLen = 1930;
-		vrLoc = 12882;
+		vrLen = 2484;
+		vrLoc = 3336;
 	};
-	AF99D2A40B5D2C2C00F4C984 /* PBXTextBookmark */ = {
+	AF282B840B5D77BA00EB6205 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 225";
-		rLen = 65;
-		rLoc = 6280;
+		name = "PythonWrapper.cpp: 121";
+		rLen = 36;
+		rLoc = 3007;
 		rType = 0;
-		vrLen = 1004;
-		vrLoc = 5827;
+		vrLen = 1678;
+		vrLoc = 3258;
 	};
-	AF99D2A50B5D2C2C00F4C984 /* PBXTextBookmark */ = {
+	AF282B850B5D780D00EB6205 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 492";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 133";
 		rLen = 0;
-		rLoc = 15065;
+		rLoc = 4692;
 		rType = 0;
-		vrLen = 1976;
-		vrLoc = 13468;
+		vrLen = 1993;
+		vrLoc = 3763;
 	};
-	AF99D2A80B5D2C2C00F4C984 /* PBXTextBookmark */ = {
+	AF282B860B5D780D00EB6205 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 113";
 		rLen = 0;
-		rLoc = 2948;
+		rLoc = 3867;
 		rType = 0;
+		vrLen = 2502;
+		vrLoc = 3336;
 	};
-	AF99D2A90B5D2C2C00F4C984 /* PBXTextBookmark */ = {
+	AF282B870B5D780D00EB6205 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2168;
-		vrLoc = 714;
-	};
-	AF99D2B10B5D2CEF00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: Python.h: No such file or directory";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 25;
-		rType = 1;
-	};
-	AF99D2B20B5D2CEF00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 26";
-		rLen = 27;
-		rLoc = 820;
-		rType = 0;
-		vrLen = 654;
-		vrLoc = 755;
-	};
-	AF99D2B30B5D2CF000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 225";
-		rLen = 65;
-		rLoc = 6280;
+		name = "PythonWrapper.cpp: 121";
+		rLen = 36;
+		rLoc = 3007;
 		rType = 0;
-		vrLen = 1004;
-		vrLoc = 5827;
+		vrLen = 1678;
+		vrLoc = 3258;
 	};
-	AF99D2B40B5D2CF000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 225";
-		rLen = 65;
-		rLoc = 6280;
-		rType = 0;
-		vrLen = 1004;
-		vrLoc = 5827;
+	AF78F46C0B5D7C64005825FF /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
 	};
-	AF99D2B50B5D2CF000F4C984 /* PBXTextBookmark */ = {
+	AF78F46D0B5D7C6C005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 26";
-		rLen = 27;
-		rLoc = 820;
-		rType = 0;
-		vrLen = 1030;
-		vrLoc = 0;
-	};
-	AF99D2B60B5D2CF000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 424";
-		rLen = 147;
-		rLoc = 13167;
-		rType = 0;
-		vrLen = 2117;
-		vrLoc = 12455;
-	};
-	AF99D2B70B5D2CF000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2168;
-		vrLoc = 714;
-	};
-	AF99D2BB0B5D2D2A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 26";
-		rLen = 27;
-		rLoc = 820;
-		rType = 0;
-		vrLen = 1030;
-		vrLoc = 0;
-	};
-	AF99D2BC0B5D2D2A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 26";
-		rLen = 27;
-		rLoc = 820;
-		rType = 0;
-		vrLen = 1030;
-		vrLoc = 0;
-	};
-	AF99D2BD0B5D2D2A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 20";
-		rLen = 15;
-		rLoc = 721;
-		rType = 0;
-		vrLen = 1058;
-		vrLoc = 201;
-	};
-	AF99D2BE0B5D2D2A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 424";
-		rLen = 147;
-		rLoc = 13167;
-		rType = 0;
-		vrLen = 2117;
-		vrLoc = 12455;
-	};
-	AF99D2BF0B5D2D2A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 26";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 133";
 		rLen = 0;
-		rLoc = 843;
+		rLoc = 4692;
 		rType = 0;
-		vrLen = 1778;
-		vrLoc = 0;
+		vrLen = 2035;
+		vrLoc = 3733;
 	};
-	AF99D2C00B5D2D2A00F4C984 /* PBXTextBookmark */ = {
+	AF78F4720B5D7C6C005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2168;
-		vrLoc = 714;
-	};
-	AF99D2C40B5D2FA100F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: 'recNames' was not declared in this scope";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 592;
-		rType = 1;
-	};
-	AF99D2C50B5D2FA100F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 609";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 82";
 		rLen = 0;
-		rLoc = 19263;
+		rLoc = 2836;
 		rType = 0;
-		vrLen = 462;
-		vrLoc = 18712;
+		vrLen = 1287;
+		vrLoc = 1434;
 	};
-	AF99D2C70B5D2FD100F4C984 /* PBXTextBookmark */ = {
+	AF78F4730B5D7C6C005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 20";
-		rLen = 15;
-		rLoc = 721;
+		name = "PythonWrapper.cpp: 121";
+		rLen = 36;
+		rLoc = 3007;
 		rType = 0;
-		vrLen = 1058;
-		vrLoc = 201;
+		vrLen = 1678;
+		vrLoc = 3258;
 	};
-	AF99D2C80B5D2FD100F4C984 /* PBXTextBookmark */ = {
+	AF78F4790B5D7F0C005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 20";
-		rLen = 15;
-		rLoc = 721;
-		rType = 0;
-		vrLen = 1058;
-		vrLoc = 201;
-	};
-	AF99D2C90B5D2FD100F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 11";
-		rLen = 0;
-		rLoc = 389;
-		rType = 0;
-		vrLen = 1037;
-		vrLoc = 0;
-	};
-	AF99D2CA0B5D2FD100F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2168;
-		vrLoc = 714;
-	};
-	AF99D2CF0B5D303C00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: '::dsBuildNodeAllocateString' has not been declared";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		comments = "error: invalid conversion from 'void*' to 'char*'";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
 		rLen = 1;
-		rLoc = 1127;
+		rLoc = 99;
 		rType = 1;
 	};
-	AF99D2D00B5D303C00F4C984 /* PBXTextBookmark */ = {
+	AF78F47A0B5D7F0C005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1153";
-		rLen = 102;
-		rLoc = 32193;
-		rType = 0;
-		vrLen = 821;
-		vrLoc = 32006;
-	};
-	AF99D2D30B5D311000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: expected `;' before ')' token";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 1132;
-		rType = 1;
-	};
-	AF99D2D40B5D311000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1158";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 96";
 		rLen = 0;
-		rLoc = 32451;
+		rLoc = 2699;
 		rType = 0;
-		vrLen = 967;
-		vrLoc = 32226;
+		vrLen = 686;
+		vrLoc = 1671;
 	};
-	AF99D2DA0B5D381700F4C984 /* PBXTextBookmark */ = {
+	AF78F47D0B5D7F24005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1158";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 96";
 		rLen = 0;
-		rLoc = 32451;
+		rLoc = 2699;
 		rType = 0;
-		vrLen = 967;
-		vrLoc = 32226;
+		vrLen = 686;
+		vrLoc = 1671;
 	};
-	AF99D2DB0B5D381700F4C984 /* PBXTextBookmark */ = {
+	AF78F48A0B5D7F54005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: invalid conversion from 'const char*' to 'int'";
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		rLen = 1;
-		rLoc = 404;
-		rType = 1;
-	};
-	AF99D2DC0B5D381700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1158";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 96";
 		rLen = 0;
-		rLoc = 32451;
+		rLoc = 2699;
 		rType = 0;
-		vrLen = 967;
-		vrLoc = 32226;
+		vrLen = 686;
+		vrLoc = 1671;
 	};
-	AF99D2DD0B5D381700F4C984 /* PBXTextBookmark */ = {
+	AF78F48B0B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 85";
 		rLen = 0;
-		rLoc = 12611;
+		rLoc = 2436;
 		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
+		vrLen = 816;
+		vrLoc = 1475;
 	};
-	AF99D2DE0B5D381900F4C984 /* PBXTextBookmark */ = {
+	AF78F48C0B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 11";
+		name = "CDirectoryService.cpp: 494";
 		rLen = 0;
-		rLoc = 389;
+		rLoc = 15223;
 		rType = 0;
-		vrLen = 874;
-		vrLoc = 819;
+		vrLen = 1165;
+		vrLoc = 14225;
 	};
-	AF99D2DF0B5D381900F4C984 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-	};
-	AF99D2E00B5D381900F4C984 /* PBXTextBookmark */ = {
+	AF78F48D0B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 11";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
 		rLen = 0;
-		rLoc = 389;
-		rType = 0;
-		vrLen = 874;
-		vrLoc = 819;
+		rLoc = 207;
+		rType = 1;
 	};
-	AF99D2E10B5D381900F4C984 /* PBXTextBookmark */ = {
+	AF78F48E0B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 87";
+		name = "test.cpp: 133";
 		rLen = 0;
-		rLoc = 4743;
+		rLoc = 4692;
 		rType = 0;
-		vrLen = 1870;
-		vrLoc = 2601;
+		vrLen = 2035;
+		vrLoc = 3733;
 	};
-	AF99D2E20B5D381900F4C984 /* PBXTextBookmark */ = {
+	AF78F48F0B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2168;
-		vrLoc = 714;
-	};
-	AF99D2E30B5D3B8100F4C984 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-	};
-	AF99D2E50B5D3BA200F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 87";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 85";
 		rLen = 0;
-		rLoc = 4743;
+		rLoc = 2436;
 		rType = 0;
-		vrLen = 1796;
-		vrLoc = 2601;
+		vrLen = 816;
+		vrLoc = 1475;
 	};
-	AF99D2E80B5D3BA200F4C984 /* PBXTextBookmark */ = {
+	AF78F4900B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 43";
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 494";
 		rLen = 0;
-		rLoc = 1512;
+		rLoc = 15223;
 		rType = 0;
-		vrLen = 2245;
-		vrLoc = 817;
+		vrLen = 1165;
+		vrLoc = 14225;
 	};
-	AF99D2E90B5D3BA200F4C984 /* PBXTextBookmark */ = {
+	AF78F4910B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2114;
-		vrLoc = 714;
-	};
-	AF99D2EE0B5D3CB700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 106";
+		name = "test.cpp: 208";
 		rLen = 0;
-		rLoc = 4743;
+		rLoc = 7488;
 		rType = 0;
-		vrLen = 1793;
-		vrLoc = 2601;
+		vrLen = 964;
+		vrLoc = 7073;
 	};
-	AF99D2EF0B5D3CB700F4C984 /* PBXTextBookmark */ = {
+	AF78F4920B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 668";
+		name = "CDirectoryService.cpp: 494";
 		rLen = 0;
-		rLoc = 20796;
+		rLoc = 15223;
 		rType = 0;
-		vrLen = 1857;
-		vrLoc = 19365;
+		vrLen = 1165;
+		vrLoc = 14225;
 	};
-	AF99D2F00B5D3CB700F4C984 /* PBXTextBookmark */ = {
+	AF78F4930B5D7F57005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 208";
 		rLen = 0;
-		rLoc = 115;
-		rType = 1;
+		rLoc = 7488;
+		rType = 0;
+		vrLen = 1015;
+		vrLoc = 7073;
 	};
-	AF99D2F10B5D3CB700F4C984 /* PBXTextBookmark */ = {
+	AF78F4980B5D7FB7005825FF /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
+	};
+	AF78F4990B5D801B005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 43";
+		name = "test.cpp: 208";
 		rLen = 0;
-		rLoc = 1512;
+		rLoc = 7488;
 		rType = 0;
-		vrLen = 2245;
-		vrLoc = 817;
+		vrLen = 1015;
+		vrLoc = 7073;
 	};
-	AF99D2F20B5D3CB700F4C984 /* PBXTextBookmark */ = {
+	AF78F49C0B5D801B005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 668";
+		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
+		name = "PythonWrapper.cpp: 38";
 		rLen = 0;
-		rLoc = 20796;
+		rLoc = 1162;
 		rType = 0;
-		vrLen = 1857;
-		vrLoc = 19365;
+		vrLen = 1680;
+		vrLoc = 662;
 	};
-	AF99D2F30B5D3CB700F4C984 /* PBXTextBookmark */ = {
+	AF78F49E0B5D809B005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 87";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 96";
 		rLen = 0;
-		rLoc = 3402;
+		rLoc = 2699;
 		rType = 0;
-		vrLen = 2693;
-		vrLoc = 2098;
+		vrLen = 686;
+		vrLoc = 1671;
 	};
-	AF99D2F40B5D3CB700F4C984 /* PBXTextBookmark */ = {
+	AF78F4A40B5D8165005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2168;
-		vrLoc = 714;
-	};
-	AF99D3010B5D3E5F00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 112";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 100";
 		rLen = 0;
-		rLoc = 4743;
+		rLoc = 2699;
 		rType = 0;
-		vrLen = 1212;
-		vrLoc = 2601;
+		vrLen = 1002;
+		vrLoc = 1671;
 	};
-	AF99D3020B5D3E5F00F4C984 /* PBXTextBookmark */ = {
+	AF78F4A50B5D8169005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2114;
-		vrLoc = 714;
-	};
-	AF99D3050B5D3E6300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 112";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 89";
 		rLen = 0;
-		rLoc = 4743;
+		rLoc = 2436;
 		rType = 0;
-		vrLen = 1212;
-		vrLoc = 2601;
+		vrLen = 1149;
+		vrLoc = 1456;
 	};
-	AF99D3060B5D3E6300F4C984 /* PBXTextBookmark */ = {
+	AF78F4A60B5D8169005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2114;
-		vrLoc = 714;
-	};
-	AF99D30D0B5D469A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 112";
 		rLen = 0;
-		rLoc = 4743;
-		rType = 0;
-		vrLen = 1191;
-		vrLoc = 2601;
+		rLoc = 207;
+		rType = 1;
 	};
-	AF99D30E0B5D469A00F4C984 /* PBXTextBookmark */ = {
+	AF78F4A70B5D8169005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2114;
-		vrLoc = 714;
-	};
-	AF99D3100B5D469C00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 112";
+		name = "test.cpp: 208";
 		rLen = 0;
-		rLoc = 4743;
+		rLoc = 7488;
 		rType = 0;
-		vrLen = 1191;
-		vrLoc = 2601;
+		vrLen = 881;
+		vrLoc = 7061;
 	};
-	AF99D3110B5D469C00F4C984 /* PBXTextBookmark */ = {
+	AF78F4A80B5D8169005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2114;
-		vrLoc = 714;
-	};
-	AF99D3150B5D46D300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 89";
 		rLen = 0;
-		rLoc = 12611;
+		rLoc = 2436;
 		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
+		vrLen = 1149;
+		vrLoc = 1456;
 	};
-	AF99D3160B5D46D500F4C984 /* PBXTextBookmark */ = {
+	AF78F4A90B5D8169005825FF /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 208";
 		rLen = 0;
-		rLoc = 12611;
+		rLoc = 7488;
 		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
+		vrLen = 1015;
+		vrLoc = 7073;
 	};
-	AF99D31B0B5D471300F4C984 /* PBXTextBookmark */ = {
+	AF99D2B40B5D2CF000F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
-		rLen = 0;
-		rLoc = 12611;
+		name = "PythonWrapper.cpp: 225";
+		rLen = 65;
+		rLoc = 5959;
 		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
+		vrLen = 1004;
+		vrLoc = 5827;
 	};
-	AF99D3210B5D483900F4C984 /* PBXTextBookmark */ = {
+	AF99D2BC0B5D2D2A00F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 85";
-		rLen = 0;
-		rLoc = 2879;
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 26";
+		rLen = 27;
+		rLoc = 820;
 		rType = 0;
-		vrLen = 1652;
-		vrLoc = 2601;
+		vrLen = 1030;
+		vrLoc = 0;
 	};
-	AF99D3220B5D483900F4C984 /* PBXTextBookmark */ = {
+	AF99D2C70B5D2FD100F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 71";
-		rLen = 87;
-		rLoc = 2644;
-		rType = 0;
-		vrLen = 2168;
-		vrLoc = 714;
-	};
-	AF99D32B0B5D4C0200F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
-		rLen = 0;
-		rLoc = 12611;
+		name = "PythonWrapper.cpp: 20";
+		rLen = 15;
+		rLoc = 721;
 		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
+		vrLen = 1058;
+		vrLoc = 201;
 	};
-	AF99D32D0B5D4C7100F4C984 /* PBXTextBookmark */ = {
+	AF99D2C80B5D2FD100F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
-		rLen = 0;
-		rLoc = 12611;
+		name = "PythonWrapper.cpp: 20";
+		rLen = 15;
+		rLoc = 721;
 		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
+		vrLen = 1058;
+		vrLoc = 201;
 	};
-	AF99D32F0B5D4C9300F4C984 /* PBXTextBookmark */ = {
+	AF99D2E00B5D381900F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 93";
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 11";
 		rLen = 0;
-		rLoc = 3435;
+		rLoc = 389;
 		rType = 0;
-		vrLen = 1105;
-		vrLoc = 2562;
+		vrLen = 874;
+		vrLoc = 819;
 	};
-	AF99D3300B5D4C9300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 0;
-		rLoc = 457;
-		rType = 1;
-	};
 	AF99D3310B5D4C9300F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
@@ -1025,176 +658,6 @@
 		vrLen = 1105;
 		vrLoc = 2562;
 	};
-	AF99D3360B5D4C9300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 456";
-		rLen = 0;
-		rLoc = 14062;
-		rType = 0;
-		vrLen = 839;
-		vrLoc = 13460;
-	};
-	AF99D33A0B5D4CF300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
-		rLen = 0;
-		rLoc = 12611;
-		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
-	};
-	AF99D33B0B5D4CF700F4C984 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-	};
-	AF99D33D0B5D4E3A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 424";
-		rLen = 5;
-		rLoc = 13257;
-		rType = 0;
-		vrLen = 980;
-		vrLoc = 13633;
-	};
-	AF99D3400B5D4E3A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1175";
-		rLen = 0;
-		rLoc = 34610;
-		rType = 0;
-		vrLen = 2047;
-		vrLoc = 31874;
-	};
-	AF99D3430B5D4E3A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		rLen = 0;
-		rLoc = 2948;
-		rType = 0;
-	};
-	AF99D3440B5D4E3A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 72";
-		rLen = 112;
-		rLoc = 2731;
-		rType = 0;
-		vrLen = 2227;
-		vrLoc = 755;
-	};
-	AF99D3460B5D503D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 424";
-		rLen = 5;
-		rLoc = 13257;
-		rType = 0;
-		vrLen = 979;
-		vrLoc = 13633;
-	};
-	AF99D3470B5D503D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1203";
-		rLen = 0;
-		rLoc = 34430;
-		rType = 0;
-		vrLen = 2012;
-		vrLoc = 32467;
-	};
-	AF99D34A0B5D503D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF99D34B0B5D503D00F4C984 /* DirServicesTypes.h */;
-		rLen = 1;
-		rLoc = 351;
-		rType = 1;
-	};
-	AF99D34B0B5D503D00F4C984 /* DirServicesTypes.h */ = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = DirServicesTypes.h;
-		path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/DirectoryService.framework/Versions/A/Headers/DirServicesTypes.h;
-		sourceTree = "<absolute>";
-	};
-	AF99D34C0B5D503D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF99D34D0B5D503D00F4C984 /* DirServicesTypes.h */;
-		name = "DirServicesTypes.h: 354";
-		rLen = 11;
-		rLoc = 12302;
-		rType = 0;
-		vrLen = 2488;
-		vrLoc = 10949;
-	};
-	AF99D34D0B5D503D00F4C984 /* DirServicesTypes.h */ = {
-		isa = PBXFileReference;
-		lastKnownFileType = sourcecode.c.h;
-		name = DirServicesTypes.h;
-		path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/DirectoryService.framework/Versions/A/Headers/DirServicesTypes.h;
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {862, 7238}}";
-			sepNavSelRange = "{12198, 899}";
-			sepNavVisRect = "{{0, 4246}, {862, 1040}}";
-			sepNavWindowFrame = "{{15, 4}, {921, 1169}}";
-		};
-	};
-	AF99D34E0B5D503D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
-		name = "CDirectoryService.h: 72";
-		rLen = 112;
-		rLoc = 2731;
-		rType = 0;
-		vrLen = 2227;
-		vrLoc = 755;
-	};
-	AF99D3530B5D51EA00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
-		rLen = 0;
-		rLoc = 12611;
-		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
-	};
-	AF99D3540B5D51EA00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: 'compund' was not declared in this scope";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 1206;
-		rType = 1;
-	};
-	AF99D3550B5D51EA00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 395";
-		rLen = 0;
-		rLoc = 12611;
-		rType = 0;
-		vrLen = 906;
-		vrLoc = 11446;
-	};
-	AF99D3560B5D51EA00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1229";
-		rLen = 0;
-		rLoc = 34590;
-		rType = 0;
-		vrLen = 561;
-		vrLoc = 34050;
-	};
-	AF99D35B0B5D52FC00F4C984 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-	};
 	AF99D35C0B5D539800F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
@@ -1205,16 +668,6 @@
 		vrLen = 1170;
 		vrLoc = 2556;
 	};
-	AF99D35D0B5D539800F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 424";
-		rLen = 5;
-		rLoc = 13257;
-		rType = 0;
-		vrLen = 997;
-		vrLoc = 13633;
-	};
 	AF99D35E0B5D539800F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
@@ -1235,118 +688,6 @@
 		vrLen = 1170;
 		vrLoc = 2556;
 	};
-	AF99D3600B5D539800F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1215";
-		rLen = 0;
-		rLoc = 33956;
-		rType = 0;
-		vrLen = 902;
-		vrLoc = 34152;
-	};
-	AF99D3630B5D539800F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1223";
-		rLen = 0;
-		rLoc = 34300;
-		rType = 0;
-		vrLen = 1338;
-		vrLoc = 34369;
-	};
-	AF99D3690B5D554E00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: expected primary-expression before ')' token";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 1198;
-		rType = 1;
-	};
-	AF99D36A0B5D554E00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1223";
-		rLen = 0;
-		rLoc = 34300;
-		rType = 0;
-		vrLen = 742;
-		vrLoc = 34650;
-	};
-	AF99D36C0B5D556100F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: expected primary-expression before ')' token";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 1198;
-		rType = 1;
-	};
-	AF99D36D0B5D556100F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1223";
-		rLen = 0;
-		rLoc = 34268;
-		rType = 0;
-		vrLen = 741;
-		vrLoc = 34650;
-	};
-	AF99D36F0B5D559300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: expected primary-expression before ')' token";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 1198;
-		rType = 1;
-	};
-	AF99D3700B5D559300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1223";
-		rLen = 0;
-		rLoc = 34296;
-		rType = 0;
-		vrLen = 748;
-		vrLoc = 34650;
-	};
-	AF99D3730B5D55E000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1223";
-		rLen = 0;
-		rLoc = 34296;
-		rType = 0;
-		vrLen = 748;
-		vrLoc = 34650;
-	};
-	AF99D3740B5D55E000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: no matching function for call to 'CDirectoryService::QueryRecordsWithAttributes(const __CFDictionary*&, tDirPatternMatch, bool, const char*&, const __CFArray*&)'";
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		rLen = 1;
-		rLoc = 404;
-		rType = 1;
-	};
-	AF99D3750B5D55E000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1223";
-		rLen = 0;
-		rLoc = 34296;
-		rType = 0;
-		vrLen = 748;
-		vrLoc = 34650;
-	};
-	AF99D3760B5D55E000F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 397";
-		rLen = 0;
-		rLoc = 12580;
-		rType = 0;
-		vrLen = 917;
-		vrLoc = 11467;
-	};
 	AF99D3790B5D55FC00F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
@@ -1367,336 +708,28 @@
 		vrLen = 902;
 		vrLoc = 34152;
 	};
-	AF99D37B0B5D55FC00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D37C0B5D561300F4C984 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-	};
-	AF99D37D0B5D56A900F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3800B5D56A900F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 348";
-		rLen = 874;
-		rLoc = 10132;
-		rType = 0;
-		vrLen = 2588;
-		vrLoc = 9565;
-	};
-	AF99D3820B5D579A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3830B5D579A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 348";
-		rLen = 874;
-		rLoc = 10132;
-		rType = 0;
-		vrLen = 2588;
-		vrLoc = 9565;
-	};
-	AF99D3840B5D579A00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 372";
-		rLen = 0;
-		rLoc = 11301;
-		rType = 0;
-		vrLen = 2572;
-		vrLoc = 10228;
-	};
-	AF99D3850B5D58E800F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3860B5D58E800F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 373";
-		rLen = 0;
-		rLoc = 11489;
-		rType = 0;
-		vrLen = 2560;
-		vrLoc = 10084;
-	};
-	AF99D3870B5D5A5C00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3880B5D5A5C00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 374";
-		rLen = 0;
-		rLoc = 11350;
-		rType = 0;
-		vrLen = 2584;
-		vrLoc = 10129;
-	};
-	AF99D3890B5D5DD300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D38A0B5D5DD300F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 390";
-		rLen = 0;
-		rLoc = 12064;
-		rType = 0;
-		vrLen = 2434;
-		vrLoc = 9558;
-	};
-	AF99D38C0B5D5E2700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D38D0B5D5E2700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 391";
-		rLen = 0;
-		rLoc = 12049;
-		rType = 0;
-		vrLen = 2624;
-		vrLoc = 10317;
-	};
-	AF99D38F0B5D5F8500F4C984 /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-	};
-	AF99D3900B5D5FA700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3930B5D5FA700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1222";
-		rLen = 0;
-		rLoc = 34075;
-		rType = 0;
-		vrLen = 1249;
-		vrLoc = 34284;
-	};
 	AF99D3940B5D69C700F4C984 /* PBXBookmark */ = {
 		isa = PBXBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
 	};
-	AF99D3950B5D69F100F4C984 /* PBXTextBookmark */ = {
+	AF99D3B20B5D768A00F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
+		name = "test.cpp: 135";
 		rLen = 0;
-		rLoc = 3457;
+		rLoc = 4692;
 		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
+		vrLen = 2055;
+		vrLoc = 3763;
 	};
-	AF99D3980B5D69F100F4C984 /* PBXTextBookmark */ = {
+	AF99D3B30B5D768A00F4C984 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 374";
-		rLen = 0;
-		rLoc = 11301;
-		rType = 0;
-		vrLen = 2034;
-		vrLoc = 10970;
-	};
-	AF99D39A0B5D6A5B00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D39B0B5D6A5B00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 375";
-		rLen = 0;
-		rLoc = 11514;
-		rType = 0;
-		vrLen = 2038;
-		vrLoc = 10970;
-	};
-	AF99D39C0B5D6A7C00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D39D0B5D6A7C00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 374";
-		rLen = 16;
-		rLoc = 11270;
-		rType = 0;
-		vrLen = 2038;
-		vrLoc = 10970;
-	};
-	AF99D39E0B5D6AFF00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D39F0B5D6AFF00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 374";
-		rLen = 0;
-		rLoc = 11301;
-		rType = 0;
-		vrLen = 2037;
-		vrLoc = 10970;
-	};
-	AF99D3A00B5D6B3700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3A10B5D6B3700F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 375";
-		rLen = 0;
-		rLoc = 11409;
-		rType = 0;
-		vrLen = 2034;
-		vrLoc = 10970;
-	};
-	AF99D3A20B5D6BCD00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3A30B5D6BCD00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 514";
-		rLen = 0;
-		rLoc = 16188;
-		rType = 0;
-		vrLen = 2154;
-		vrLoc = 14864;
-	};
-	AF99D3A80B5D6EB600F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3A90B5D6EB600F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
 		name = "PythonWrapper.cpp: 121";
 		rLen = 36;
-		rLoc = 3328;
+		rLoc = 3007;
 		rType = 0;
 		vrLen = 1678;
 		vrLoc = 3258;
 	};
-	AF99D3AD0B5D6F5D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 95";
-		rLen = 0;
-		rLoc = 3457;
-		rType = 0;
-		vrLen = 2065;
-		vrLoc = 2724;
-	};
-	AF99D3AE0B5D6F5D00F4C984 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 121";
-		rLen = 36;
-		rLoc = 3328;
-		rType = 0;
-		vrLen = 1678;
-		vrLoc = 3258;
-	};
 }

Modified: PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/test.cpp
===================================================================
--- PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/test.cpp	2007-01-16 20:30:25 UTC (rev 1052)
+++ PyOpenDirectory/branches/users/cdaboo/od-schema-1044/support/test.cpp	2007-01-16 21:47:35 UTC (rev 1053)
@@ -78,7 +78,7 @@
 
 	AuthenticateUser(dir, "cdaboo", "appledav1234");
 	AuthenticateUser(dir, "cdaboo", "appledav6585");
-#elif 1
+#elif 0
 	CFStringRef keys[2];
 	keys[0] = CFSTR(kDS1AttrFirstName);
 	keys[1] = CFSTR(kDS1AttrLastName);
@@ -105,6 +105,31 @@
 	}
 	CFRelease(array);
 	
+#elif 1
+	CFStringRef keys[2];
+	keys[0] = CFSTR(kDS1AttrENetAddress);
+	CFStringRef values[2];
+	values[0] = CFSTR("00:17:f2:02:35:e4");
+	CFDictionaryRef kvdict = CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, (const void**)values, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
+                        
+	CFStringRef strings[2];
+	strings[0] = CFSTR(kDS1AttrDistinguishedName);
+	strings[1] = CFSTR(kDS1AttrXMLPlist);
+	CFArrayRef array = CFArrayCreate(kCFAllocatorDefault, (const void **)strings, 2, &kCFTypeArrayCallBacks);
+                        
+	CFMutableDictionaryRef dict = dir->QueryRecordsWithAttributes(kvdict, eDSExact, false, false, kDSStdRecordTypeComputers, array);
+	if (dict != NULL)
+	{
+		printf("\n*** Computers: %d ***\n", CFDictionaryGetCount(dict));
+		CFDictionaryApplyFunction(dict, PrintDictionaryDictionary, NULL);
+		CFRelease(dict);
+	}
+	else
+	{
+		printf("\nNo Users returned\n");
+	}
+	CFRelease(array);
+	
 #else
 	const char* u = "cyrusdaboo";
 	//const char* c = "nonce=\"1\", qop=\"auth\", realm=\"Test\", algorithm=\"md5\", opaque=\"1\"";

Modified: PyOpenDirectory/branches/users/cdaboo/od-schema-1044/test.py
===================================================================
--- PyOpenDirectory/branches/users/cdaboo/od-schema-1044/test.py	2007-01-16 20:30:25 UTC (rev 1052)
+++ PyOpenDirectory/branches/users/cdaboo/od-schema-1044/test.py	2007-01-16 21:47:35 UTC (rev 1053)
@@ -35,6 +35,7 @@
 		else:
 			names = [v for v in d.iterkeys()]
 			names.sort()
+			print "\nlistUsers number of results = %d" % (len(names),)
 			for n in names:
 				print "Name: %s" % n
 				print "dict: %s" % str(d[n])
@@ -47,10 +48,24 @@
 		else:
 			names = [v for v in d.iterkeys()]
 			names.sort()
+			print "\nlistGroups number of results = %d" % (len(names),)
 			for n in names:
 				print "Name: %s" % n
 				print "dict: %s" % str(d[n])
 	
+	def listComputers():
+		d = opendirectory.listAllRecordsWithAttributes(ref, dsattributes.kDSStdRecordTypeComputers,
+													   [dsattributes.kDS1AttrGeneratedUID, dsattributes.kDS1AttrXMLPlist,])
+		if d is None:
+			print "Failed to list computers"
+		else:
+			names = [v for v in d.iterkeys()]
+			names.sort()
+			print "\nlistComputers number of results = %d" % (len(names),)
+			for n in names:
+				print "Name: %s" % n
+				print "dict: %s" % str(d[n])
+	
 	def query(title, dict, matchType, casei, allmatch, recordType, attrs):
 		d = opendirectory.queryRecordsWithAttributes(
 		    ref,
@@ -121,13 +136,14 @@
 		else:
 			print "Failed to authenticate user"
 	
-	listUsers()
-	listGroups()
-	queryUsers()
-	queryUsersCompoundOr()
-	queryUsersCompoundOrExact()
-	queryUsersCompoundAnd()
-	authentciateBasic()
+	#listUsers()
+	#listGroups()
+	listComputers()
+	#queryUsers()
+	#queryUsersCompoundOr()
+	#queryUsersCompoundOrExact()
+	#queryUsersCompoundAnd()
+	#authentciateBasic()
 
 	ref = None
 except opendirectory.ODError, ex:

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070116/56dcb9bf/attachment.html


More information about the calendarserver-changes mailing list