Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| SHA1 Hash: | eb35efa5118b30a0ba0b82644d9a8cb3840d4e7a |
|---|---|
| Date: | 2009-10-09 15:36:02 |
| User: | dmitry |
| Comment: | Initial commit |
Tags And Properties
- branch=trunk inherited from [8f3b80c49a]
- sym-trunk inherited from [8f3b80c49a]
Changes
Added CRDB.m
| Old () | New (0b115a66503a79b5) | |||
|---|---|---|---|---|
| > | 1 | #import <Foundation/Foundation.h> | ||
| > | 2 | #import "CRDatabase.h" | ||
| > | 3 | |||
| > | 4 | // | ||
| > | 5 | // Some test code | ||
| > | 6 | // | ||
| > | 7 | |||
| > | 8 | int main (int argc, const char * argv[]) | ||
| > | 9 | { | ||
| > | 10 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; | ||
| > | 11 | |||
| > | 12 | // Create ~/Documents/database.db | ||
| > | 13 | // and CREATE TABLE posts(id PRIMARY KEY, body TEXT); | ||
| > | 14 | |||
| > | 15 | CRDatabase* database = [CRDatabase databaseWithURL:[NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/database.db"]]]; | ||
| > | 16 | |||
| > | 17 | |||
| > | 18 | __block dispatch_queue_t myQueue = dispatch_queue_create("com.codingrobots.CRDatabase.testQueue", NULL); | ||
| > | 19 | |||
| > | 20 | NSLog(@"---------------------------------------"); | ||
| > | 21 | |||
| > | 22 | |||
| > | 23 | for (NSInteger i = 0; i < 3; i++) { | ||
| > | 24 | |||
| > | 25 | [database asyncExecuteQuery:@"SELECT * FROM `posts`" | ||
| > | 26 | withArguments:nil | ||
| > | 27 | doWithResult:^(CRDatabaseResult *result) { | ||
| > | 28 | |||
| > | 29 | dispatch_sync(myQueue, ^{ | ||
| > | 30 | int me = random() % 100; | ||
| > | 31 | for(CRDatabaseRow *row in result) { | ||
| > | 32 | NSLog(@"(%d) Id: %d, Body: %@", me, [row integerForColumn:@"id"], [row stringForColumn:@"body"]); | ||
| > | 33 | } | ||
| > | 34 | }); | ||
| > | 35 | |||
| > | 36 | }]; | ||
| > | 37 | } | ||
| > | 38 | |||
| > | 39 | //// Insert test | ||
| > | 40 | |||
| > | 41 | //[database executeUpdate:@"INSERT INTO posts(body) VALUES (?)" | ||
| > | 42 | // withArguments:[NSArray arrayWithObject:[NSString stringWithFormat:@"Test body #%d", (random() % 100)]]]; | ||
| > | 43 | |||
| > | 44 | |||
| > | 45 | NSLog(@"=Done="); | ||
| > | 46 | |||
| > | 47 | // while(YES) {usleep(1000);}; // UNCOMMENT THIS WHEN RUNNING ASYNC CODE | ||
| > | 48 | // TO WAIT FOREVER. Terminate program with Ctrl+C | ||
| > | 49 | // or Shift+Cmd+Enter in Xcode | ||
| > | 50 | |||
| > | 51 | [pool drain]; | ||
| > | 52 | return 0; | ||
| > | 53 | } | ||
Added CRDB.xcodeproj/dmitry.mode1v3
| Old () | New (95bc2c028ab8dc79) | |||
|---|---|---|---|---|
| > | 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| > | 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| > | 3 | <plist version="1.0"> | ||
| > | 4 | <dict> | ||
| > | 5 | <key>ActivePerspectiveName</key> | ||
| > | 6 | <string>Project</string> | ||
| > | 7 | <key>AllowedModules</key> | ||
| > | 8 | <array> | ||
| > | 9 | <dict> | ||
| > | 10 | <key>BundleLoadPath</key> | ||
| > | 11 | <string></string> | ||
| > | 12 | <key>MaxInstances</key> | ||
| > | 13 | <string>n</string> | ||
| > | 14 | <key>Module</key> | ||
| > | 15 | <string>PBXSmartGroupTreeModule</string> | ||
| > | 16 | <key>Name</key> | ||
| > | 17 | <string>Groups and Files Outline View</string> | ||
| > | 18 | </dict> | ||
| > | 19 | <dict> | ||
| > | 20 | <key>BundleLoadPath</key> | ||
| > | 21 | <string></string> | ||
| > | 22 | <key>MaxInstances</key> | ||
| > | 23 | <string>n</string> | ||
| > | 24 | <key>Module</key> | ||
| > | 25 | <string>PBXNavigatorGroup</string> | ||
| > | 26 | <key>Name</key> | ||
| > | 27 | <string>Editor</string> | ||
| > | 28 | </dict> | ||
| > | 29 | <dict> | ||
| > | 30 | <key>BundleLoadPath</key> | ||
| > | 31 | <string></string> | ||
| > | 32 | <key>MaxInstances</key> | ||
| > | 33 | <string>n</string> | ||
| > | 34 | <key>Module</key> | ||
| > | 35 | <string>XCTaskListModule</string> | ||
| > | 36 | <key>Name</key> | ||
| > | 37 | <string>Task List</string> | ||
| > | 38 | </dict> | ||
| > | 39 | <dict> | ||
| > | 40 | <key>BundleLoadPath</key> | ||
| > | 41 | <string></string> | ||
| > | 42 | <key>MaxInstances</key> | ||
| > | 43 | <string>n</string> | ||
| > | 44 | <key>Module</key> | ||
| > | 45 | <string>XCDetailModule</string> | ||
| > | 46 | <key>Name</key> | ||
| > | 47 | <string>File and Smart Group Detail Viewer</string> | ||
| > | 48 | </dict> | ||
| > | 49 | <dict> | ||
| > | 50 | <key>BundleLoadPath</key> | ||
| > | 51 | <string></string> | ||
| > | 52 | <key>MaxInstances</key> | ||
| > | 53 | <string>1</string> | ||
| > | 54 | <key>Module</key> | ||
| > | 55 | <string>PBXBuildResultsModule</string> | ||
| > | 56 | <key>Name</key> | ||
| > | 57 | <string>Detailed Build Results Viewer</string> | ||
| > | 58 | </dict> | ||
| > | 59 | <dict> | ||
| > | 60 | <key>BundleLoadPath</key> | ||
| > | 61 | <string></string> | ||
| > | 62 | <key>MaxInstances</key> | ||
| > | 63 | <string>1</string> | ||
| > | 64 | <key>Module</key> | ||
| > | 65 | <string>PBXProjectFindModule</string> | ||
| > | 66 | <key>Name</key> | ||
| > | 67 | <string>Project Batch Find Tool</string> | ||
| > | 68 | </dict> | ||
| > | 69 | <dict> | ||
| > | 70 | <key>BundleLoadPath</key> | ||
| > | 71 | <string></string> | ||
| > | 72 | <key>MaxInstances</key> | ||
| > | 73 | <string>n</string> | ||
| > | 74 | <key>Module</key> | ||
| > | 75 | <string>XCProjectFormatConflictsModule</string> | ||
| > | 76 | <key>Name</key> | ||
| > | 77 | <string>Project Format Conflicts List</string> | ||
| > | 78 | </dict> | ||
| > | 79 | <dict> | ||
| > | 80 | <key>BundleLoadPath</key> | ||
| > | 81 | <string></string> | ||
| > | 82 | <key>MaxInstances</key> | ||
| > | 83 | <string>n</string> | ||
| > | 84 | <key>Module</key> | ||
| > | 85 | <string>PBXBookmarksModule</string> | ||
| > | 86 | <key>Name</key> | ||
| > | 87 | <string>Bookmarks Tool</string> | ||
| > | 88 | </dict> | ||
| > | 89 | <dict> | ||
| > | 90 | <key>BundleLoadPath</key> | ||
| > | 91 | <string></string> | ||
| > | 92 | <key>MaxInstances</key> | ||
| > | 93 | <string>n</string> | ||
| > | 94 | <key>Module</key> | ||
| > | 95 | <string>PBXClassBrowserModule</string> | ||
| > | 96 | <key>Name</key> | ||
| > | 97 | <string>Class Browser</string> | ||
| > | 98 | </dict> | ||
| > | 99 | <dict> | ||
| > | 100 | <key>BundleLoadPath</key> | ||
| > | 101 | <string></string> | ||
| > | 102 | <key>MaxInstances</key> | ||
| > | 103 | <string>n</string> | ||
| > | 104 | <key>Module</key> | ||
| > | 105 | <string>PBXCVSModule</string> | ||
| > | 106 | <key>Name</key> | ||
| > | 107 | <string>Source Code Control Tool</string> | ||
| > | 108 | </dict> | ||
| > | 109 | <dict> | ||
| > | 110 | <key>BundleLoadPath</key> | ||
| > | 111 | <string></string> | ||
| > | 112 | <key>MaxInstances</key> | ||
| > | 113 | <string>n</string> | ||
| > | 114 | <key>Module</key> | ||
| > | 115 | <string>PBXDebugBreakpointsModule</string> | ||
| > | 116 | <key>Name</key> | ||
| > | 117 | <string>Debug Breakpoints Tool</string> | ||
| > | 118 | </dict> | ||
| > | 119 | <dict> | ||
| > | 120 | <key>BundleLoadPath</key> | ||
| > | 121 | <string></string> | ||
| > | 122 | <key>MaxInstances</key> | ||
| > | 123 | <string>n</string> | ||
| > | 124 | <key>Module</key> | ||
| > | 125 | <string>XCDockableInspector</string> | ||
| > | 126 | <key>Name</key> | ||
| > | 127 | <string>Inspector</string> | ||
| > | 128 | </dict> | ||
| > | 129 | <dict> | ||
| > | 130 | <key>BundleLoadPath</key> | ||
| > | 131 | <string></string> | ||
| > | 132 | <key>MaxInstances</key> | ||
| > | 133 | <string>n</string> | ||
| > | 134 | <key>Module</key> | ||
| > | 135 | <string>PBXOpenQuicklyModule</string> | ||
| > | 136 | <key>Name</key> | ||
| > | 137 | <string>Open Quickly Tool</string> | ||
| > | 138 | </dict> | ||
| > | 139 | <dict> | ||
| > | 140 | <key>BundleLoadPath</key> | ||
| > | 141 | <string></string> | ||
| > | 142 | <key>MaxInstances</key> | ||
| > | 143 | <string>1</string> | ||
| > | 144 | <key>Module</key> | ||
| > | 145 | <string>PBXDebugSessionModule</string> | ||
| > | 146 | <key>Name</key> | ||
| > | 147 | <string>Debugger</string> | ||
| > | 148 | </dict> | ||
| > | 149 | <dict> | ||
| > | 150 | <key>BundleLoadPath</key> | ||
| > | 151 | <string></string> | ||
| > | 152 | <key>MaxInstances</key> | ||
| > | 153 | <string>1</string> | ||
| > | 154 | <key>Module</key> | ||
| > | 155 | <string>PBXDebugCLIModule</string> | ||
| > | 156 | <key>Name</key> | ||
| > | 157 | <string>Debug Console</string> | ||
| > | 158 | </dict> | ||
| > | 159 | <dict> | ||
| > | 160 | <key>BundleLoadPath</key> | ||
| > | 161 | <string></string> | ||
| > | 162 | <key>MaxInstances</key> | ||
| > | 163 | <string>n</string> | ||
| > | 164 | <key>Module</key> | ||
| > | 165 | <string>XCSnapshotModule</string> | ||
| > | 166 | <key>Name</key> | ||
| > | 167 | <string>Snapshots Tool</string> | ||
| > | 168 | </dict> | ||
| > | 169 | </array> | ||
| > | 170 | <key>BundlePath</key> | ||
| > | 171 | <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string> | ||
| > | 172 | <key>Description</key> | ||
| > | 173 | <string>DefaultDescriptionKey</string> | ||
| > | 174 | <key>DockingSystemVisible</key> | ||
| > | 175 | <false/> | ||
| > | 176 | <key>Extension</key> | ||
| > | 177 | <string>mode1v3</string> | ||
| > | 178 | <key>FavBarConfig</key> | ||
| > | 179 | <dict> | ||
| > | 180 | <key>PBXProjectModuleGUID</key> | ||
| > | 181 | <string>0ACEBDFA106E7ACF007FCDBD</string> | ||
| > | 182 | <key>XCBarModuleItemNames</key> | ||
| > | 183 | <dict/> | ||
| > | 184 | <key>XCBarModuleItems</key> | ||
| > | 185 | <array/> | ||
| > | 186 | </dict> | ||
| > | 187 | <key>FirstTimeWindowDisplayed</key> | ||
| > | 188 | <false/> | ||
| > | 189 | <key>Identifier</key> | ||
| > | 190 | <string>com.apple.perspectives.project.mode1v3</string> | ||
| > | 191 | <key>MajorVersion</key> | ||
| > | 192 | <integer>33</integer> | ||
| > | 193 | <key>MinorVersion</key> | ||
| > | 194 | <integer>0</integer> | ||
| > | 195 | <key>Name</key> | ||
| > | 196 | <string>Default</string> | ||
| > | 197 | <key>Notifications</key> | ||
| > | 198 | <array/> | ||
| > | 199 | <key>OpenEditors</key> | ||
| > | 200 | <array/> | ||
| > | 201 | <key>PerspectiveWidths</key> | ||
| > | 202 | <array> | ||
| > | 203 | <integer>-1</integer> | ||
| > | 204 | <integer>-1</integer> | ||
| > | 205 | </array> | ||
| > | 206 | <key>Perspectives</key> | ||
| > | 207 | <array> | ||
| > | 208 | <dict> | ||
| > | 209 | <key>ChosenToolbarItems</key> | ||
| > | 210 | <array> | ||
| > | 211 | <string>active-combo-popup</string> | ||
| > | 212 | <string>action</string> | ||
| > | 213 | <string>NSToolbarFlexibleSpaceItem</string> | ||
| > | 214 | <string>debugger-enable-breakpoints</string> | ||
| > | 215 | <string>build-and-go</string> | ||
| > | 216 | <string>com.apple.ide.PBXToolbarStopButton</string> | ||
| > | 217 | <string>get-info</string> | ||
| > | 218 | <string>NSToolbarFlexibleSpaceItem</string> | ||
| > | 219 | <string>com.apple.pbx.toolbar.searchfield</string> | ||
| > | 220 | </array> | ||
| > | 221 | <key>ControllerClassBaseName</key> | ||
| > | 222 | <string></string> | ||
| > | 223 | <key>IconName</key> | ||
| > | 224 | <string>WindowOfProjectWithEditor</string> | ||
| > | 225 | <key>Identifier</key> | ||
| > | 226 | <string>perspective.project</string> | ||
| > | 227 | <key>IsVertical</key> | ||
| > | 228 | <false/> | ||
| > | 229 | <key>Layout</key> | ||
| > | 230 | <array> | ||
| > | 231 | <dict> | ||
| > | 232 | <key>ContentConfiguration</key> | ||
| > | 233 | <dict> | ||
| > | 234 | <key>PBXBottomSmartGroupGIDs</key> | ||
| > | 235 | <array> | ||
| > | 236 | <string>1C37FBAC04509CD000000102</string> | ||
| > | 237 | <string>1C37FAAC04509CD000000102</string> | ||
| > | 238 | <string>1C37FABC05509CD000000102</string> | ||
| > | 239 | <string>1C37FABC05539CD112110102</string> | ||
| > | 240 | <string>E2644B35053B69B200211256</string> | ||
| > | 241 | <string>1C37FABC04509CD000100104</string> | ||
| > | 242 | <string>1CC0EA4004350EF90044410B</string> | ||
| > | 243 | <string>1CC0EA4004350EF90041110B</string> | ||
| > | 244 | </array> | ||
| > | 245 | <key>PBXProjectModuleGUID</key> | ||
| > | 246 | <string>1CE0B1FE06471DED0097A5F4</string> | ||
| > | 247 | <key>PBXProjectModuleLabel</key> | ||
| > | 248 | <string>Files</string> | ||
| > | 249 | <key>PBXProjectStructureProvided</key> | ||
| > | 250 | <string>yes</string> | ||
| > | 251 | <key>PBXSmartGroupTreeModuleColumnData</key> | ||
| > | 252 | <dict> | ||
| > | 253 | <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> | ||
| > | 254 | <array> | ||
| > | 255 | <real>186</real> | ||
| > | 256 | </array> | ||
| > | 257 | <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> | ||
| > | 258 | <array> | ||
| > | 259 | <string>MainColumn</string> | ||
| > | 260 | </array> | ||
| > | 261 | </dict> | ||
| > | 262 | <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> | ||
| > | 263 | <dict> | ||
| > | 264 | <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> | ||
| > | 265 | <array> | ||
| > | 266 | <string>08FB7794FE84155DC02AAC07</string> | ||
| > | 267 | <string>0ACEBDF5106E7ACA007FCDBD</string> | ||
| > | 268 | <string>08FB7795FE84155DC02AAC07</string> | ||
| > | 269 | <string>08FB779DFE84155DC02AAC07</string> | ||
| > | 270 | <string>1AB674ADFE9D54B511CA2CBB</string> | ||
| > | 271 | <string>1C37FBAC04509CD000000102</string> | ||
| > | 272 | <string>1C37FABC05509CD000000102</string> | ||
| > | 273 | </array> | ||
| > | 274 | <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> | ||
| > | 275 | <array> | ||
| > | 276 | <array> | ||
| > | 277 | <integer>8</integer> | ||
| > | 278 | <integer>1</integer> | ||
| > | 279 | <integer>0</integer> | ||
| > | 280 | </array> | ||
| > | 281 | </array> | ||
| > | 282 | <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> | ||
| > | 283 | <string>{{0, 0}, {186, 637}}</string> | ||
| > | 284 | </dict> | ||
| > | 285 | <key>PBXTopSmartGroupGIDs</key> | ||
| > | 286 | <array/> | ||
| > | 287 | <key>XCIncludePerspectivesSwitch</key> | ||
| > | 288 | <true/> | ||
| > | 289 | <key>XCSharingToken</key> | ||
| > | 290 | <string>com.apple.Xcode.GFSharingToken</string> | ||
| > | 291 | </dict> | ||
| > | 292 | <key>GeometryConfiguration</key> | ||
| > | 293 | <dict> | ||
| > | 294 | <key>Frame</key> | ||
| > | 295 | <string>{{0, 0}, {203, 655}}</string> | ||
| > | 296 | <key>GroupTreeTableConfiguration</key> | ||
| > | 297 | <array> | ||
| > | 298 | <string>MainColumn</string> | ||
| > | 299 | <real>186</real> | ||
| > | 300 | </array> | ||
| > | 301 | <key>RubberWindowFrame</key> | ||
| > | 302 | <string>19 60 983 696 0 0 1280 778 </string> | ||
| > | 303 | </dict> | ||
| > | 304 | <key>Module</key> | ||
| > | 305 | <string>PBXSmartGroupTreeModule</string> | ||
| > | 306 | <key>Proportion</key> | ||
| > | 307 | <string>203pt</string> | ||
| > | 308 | </dict> | ||
| > | 309 | <dict> | ||
| > | 310 | <key>Dock</key> | ||
| > | 311 | <array> | ||
| > | 312 | <dict> | ||
| > | 313 | <key>BecomeActive</key> | ||
| > | 314 | <true/> | ||
| > | 315 | <key>ContentConfiguration</key> | ||
| > | 316 | <dict> | ||
| > | 317 | <key>PBXProjectModuleGUID</key> | ||
| > | 318 | <string>1CE0B20306471E060097A5F4</string> | ||
| > | 319 | <key>PBXProjectModuleLabel</key> | ||
| > | 320 | <string>README</string> | ||
| > | 321 | <key>PBXSplitModuleInNavigatorKey</key> | ||
| > | 322 | <dict> | ||
| > | 323 | <key>Split0</key> | ||
| > | 324 | <dict> | ||
| > | 325 | <key>PBXProjectModuleGUID</key> | ||
| > | 326 | <string>1CE0B20406471E060097A5F4</string> | ||
| > | 327 | <key>PBXProjectModuleLabel</key> | ||
| > | 328 | <string>README</string> | ||
| > | 329 | <key>_historyCapacity</key> | ||
| > | 330 | <integer>0</integer> | ||
| > | 331 | <key>bookmark</key> | ||
| > | 332 | <string>0A76B97A106F73D90048097B</string> | ||
| > | 333 | <key>history</key> | ||
| > | 334 | <array> | ||
| > | 335 | <string>0A76B5BC106E949F0048097B</string> | ||
| > | 336 | <string>0A76B658106EA6530048097B</string> | ||
| > | 337 | <string>0A76B660106EA6530048097B</string> | ||
| > | 338 | <string>0A76B742106EAFBF0048097B</string> | ||
| > | 339 | <string>0A76B745106EAFBF0048097B</string> | ||
| > | 340 | <string>0A76B7D6106EC13E0048097B</string> | ||
| > | 341 | <string>0A76B912106EE11E0048097B</string> | ||
| > | 342 | <string>0A76B95C106F6F020048097B</string> | ||
| > | 343 | <string>0A76B95E106F6F020048097B</string> | ||
| > | 344 | <string>0A76B95F106F6F020048097B</string> | ||
| > | 345 | <string>0A76B960106F6F020048097B</string> | ||
| > | 346 | <string>0A76B961106F6F020048097B</string> | ||
| > | 347 | <string>0A76B977106F73D90048097B</string> | ||
| > | 348 | <string>0A76B978106F73D90048097B</string> | ||
| > | 349 | <string>0A76B979106F73D90048097B</string> | ||
| > | 350 | <string>0A76B95D106F6F020048097B</string> | ||
| > | 351 | </array> | ||
| > | 352 | </dict> | ||
| > | 353 | <key>SplitCount</key> | ||
| > | 354 | <string>1</string> | ||
| > | 355 | </dict> | ||
| > | 356 | <key>StatusBarVisibility</key> | ||
| > | 357 | <true/> | ||
| > | 358 | </dict> | ||
| > | 359 | <key>GeometryConfiguration</key> | ||
| > | 360 | <dict> | ||
| > | 361 | <key>Frame</key> | ||
| > | 362 | <string>{{0, 0}, {775, 650}}</string> | ||
| > | 363 | <key>RubberWindowFrame</key> | ||
| > | 364 | <string>19 60 983 696 0 0 1280 778 </string> | ||
| > | 365 | </dict> | ||
| > | 366 | <key>Module</key> | ||
| > | 367 | <string>PBXNavigatorGroup</string> | ||
| > | 368 | <key>Proportion</key> | ||
| > | 369 | <string>650pt</string> | ||
| > | 370 | </dict> | ||
| > | 371 | <dict> | ||
| > | 372 | <key>ContentConfiguration</key> | ||
| > | 373 | <dict> | ||
| > | 374 | <key>PBXProjectModuleGUID</key> | ||
| > | 375 | <string>1CE0B20506471E060097A5F4</string> | ||
| > | 376 | <key>PBXProjectModuleLabel</key> | ||
| > | 377 | <string>Detail</string> | ||
| > | 378 | </dict> | ||
| > | 379 | <key>GeometryConfiguration</key> | ||
| > | 380 | <dict> | ||
| > | 381 | <key>Frame</key> | ||
| > | 382 | <string>{{0, 655}, {775, 0}}</string> | ||
| > | 383 | <key>RubberWindowFrame</key> | ||
| > | 384 | <string>19 60 983 696 0 0 1280 778 </string> | ||
| > | 385 | </dict> | ||
| > | 386 | <key>Module</key> | ||
| > | 387 | <string>XCDetailModule</string> | ||
| > | 388 | <key>Proportion</key> | ||
| > | 389 | <string>0pt</string> | ||
| > | 390 | </dict> | ||
| > | 391 | </array> | ||
| > | 392 | <key>Proportion</key> | ||
| > | 393 | <string>775pt</string> | ||
| > | 394 | </dict> | ||
| > | 395 | </array> | ||
| > | 396 | <key>Name</key> | ||
| > | 397 | <string>Project</string> | ||
| > | 398 | <key>ServiceClasses</key> | ||
| > | 399 | <array> | ||
| > | 400 | <string>XCModuleDock</string> | ||
| > | 401 | <string>PBXSmartGroupTreeModule</string> | ||
| > | 402 | <string>XCModuleDock</string> | ||
| > | 403 | <string>PBXNavigatorGroup</string> | ||
| > | 404 | <string>XCDetailModule</string> | ||
| > | 405 | </array> | ||
| > | 406 | <key>TableOfContents</key> | ||
| > | 407 | <array> | ||
| > | 408 | <string>0A76B97B106F73D90048097B</string> | ||
| > | 409 | <string>1CE0B1FE06471DED0097A5F4</string> | ||
| > | 410 | <string>0A76B97C106F73D90048097B</string> | ||
| > | 411 | <string>1CE0B20306471E060097A5F4</string> | ||
| > | 412 | <string>1CE0B20506471E060097A5F4</string> | ||
| > | 413 | </array> | ||
| > | 414 | <key>ToolbarConfigUserDefaultsMinorVersion</key> | ||
| > | 415 | <string>2</string> | ||
| > | 416 | <key>ToolbarConfiguration</key> | ||
| > | 417 | <string>xcode.toolbar.config.defaultV3</string> | ||
| > | 418 | </dict> | ||
| > | 419 | <dict> | ||
| > | 420 | <key>ControllerClassBaseName</key> | ||
| > | 421 | <string></string> | ||
| > | 422 | <key>IconName</key> | ||
| > | 423 | <string>WindowOfProject</string> | ||
| > | 424 | <key>Identifier</key> | ||
| > | 425 | <string>perspective.morph</string> | ||
| > | 426 | <key>IsVertical</key> | ||
| > | 427 | <integer>0</integer> | ||
| > | 428 | <key>Layout</key> | ||
| > | 429 | <array> | ||
| > | 430 | <dict> | ||
| > | 431 | <key>BecomeActive</key> | ||
| > | 432 | <integer>1</integer> | ||
| > | 433 | <key>ContentConfiguration</key> | ||
| > | 434 | <dict> | ||
| > | 435 | <key>PBXBottomSmartGroupGIDs</key> | ||
| > | 436 | <array> | ||
| > | 437 | <string>1C37FBAC04509CD000000102</string> | ||
| > | 438 | <string>1C37FAAC04509CD000000102</string> | ||
| > | 439 | <string>1C08E77C0454961000C914BD</string> | ||
| > | 440 | <string>1C37FABC05509CD000000102</string> | ||
| > | 441 | <string>1C37FABC05539CD112110102</string> | ||
| > | 442 | <string>E2644B35053B69B200211256</string> | ||
| > | 443 | <string>1C37FABC04509CD000100104</string> | ||
| > | 444 | <string>1CC0EA4004350EF90044410B</string> | ||
| > | 445 | <string>1CC0EA4004350EF90041110B</string> | ||
| > | 446 | </array> | ||
| > | 447 | <key>PBXProjectModuleGUID</key> | ||
| > | 448 | <string>11E0B1FE06471DED0097A5F4</string> | ||
| > | 449 | <key>PBXProjectModuleLabel</key> | ||
| > | 450 | <string>Files</string> | ||
| > | 451 | <key>PBXProjectStructureProvided</key> | ||
| > | 452 | <string>yes</string> | ||
| > | 453 | <key>PBXSmartGroupTreeModuleColumnData</key> | ||
| > | 454 | <dict> | ||
| > | 455 | <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> | ||
| > | 456 | <array> | ||
| > | 457 | <real>186</real> | ||
| > | 458 | </array> | ||
| > | 459 | <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> | ||
| > | 460 | <array> | ||
| > | 461 | <string>MainColumn</string> | ||
| > | 462 | </array> | ||
| > | 463 | </dict> | ||
| > | 464 | <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> | ||
| > | 465 | <dict> | ||
| > | 466 | <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> | ||
| > | 467 | <array> | ||
| > | 468 | <string>29B97314FDCFA39411CA2CEA</string> | ||
| > | 469 | <string>1C37FABC05509CD000000102</string> | ||
| > | 470 | </array> | ||
| > | 471 | <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> | ||
| > | 472 | <array> | ||
| > | 473 | <array> | ||
| > | 474 | <integer>0</integer> | ||
| > | 475 | </array> | ||
| > | 476 | </array> | ||
| > | 477 | <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> | ||
| > | 478 | <string>{{0, 0}, {186, 337}}</string> | ||
| > | 479 | </dict> | ||
| > | 480 | <key>PBXTopSmartGroupGIDs</key> | ||
| > | 481 | <array/> | ||
| > | 482 | <key>XCIncludePerspectivesSwitch</key> | ||
| > | 483 | <integer>1</integer> | ||
| > | 484 | <key>XCSharingToken</key> | ||
| > | 485 | <string>com.apple.Xcode.GFSharingToken</string> | ||
| > | 486 | </dict> | ||
| > | 487 | <key>GeometryConfiguration</key> | ||
| > | 488 | <dict> | ||
| > | 489 | <key>Frame</key> | ||
| > | 490 | <string>{{0, 0}, {203, 355}}</string> | ||
| > | 491 | <key>GroupTreeTableConfiguration</key> | ||
| > | 492 | <array> | ||
| > | 493 | <string>MainColumn</string> | ||
| > | 494 | <real>186</real> | ||
| > | 495 | </array> | ||
| > | 496 | <key>RubberWindowFrame</key> | ||
| > | 497 | <string>373 269 690 397 0 0 1440 878 </string> | ||
| > | 498 | </dict> | ||
| > | 499 | <key>Module</key> | ||
| > | 500 | <string>PBXSmartGroupTreeModule</string> | ||
| > | 501 | <key>Proportion</key> | ||
| > | 502 | <string>100%</string> | ||
| > | 503 | </dict> | ||
| > | 504 | </array> | ||
| > | 505 | <key>Name</key> | ||
| > | 506 | <string>Morph</string> | ||
| > | 507 | <key>PreferredWidth</key> | ||
| > | 508 | <integer>300</integer> | ||
| > | 509 | <key>ServiceClasses</key> | ||
| > | 510 | <array> | ||
| > | 511 | <string>XCModuleDock</string> | ||
| > | 512 | <string>PBXSmartGroupTreeModule</string> | ||
| > | 513 | </array> | ||
| > | 514 | <key>TableOfContents</key> | ||
| > | 515 | <array> | ||
| > | 516 | <string>11E0B1FE06471DED0097A5F4</string> | ||
| > | 517 | </array> | ||
| > | 518 | <key>ToolbarConfiguration</key> | ||
| > | 519 | <string>xcode.toolbar.config.default.shortV3</string> | ||
| > | 520 | </dict> | ||
| > | 521 | </array> | ||
| > | 522 | <key>PerspectivesBarVisible</key> | ||
| > | 523 | <false/> | ||
| > | 524 | <key>ShelfIsVisible</key> | ||
| > | 525 | <false/> | ||
| > | 526 | <key>SourceDescription</key> | ||
| > | 527 | <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string> | ||
| > | 528 | <key>StatusbarIsVisible</key> | ||
| > | 529 | <true/> | ||
| > | 530 | <key>TimeStamp</key> | ||
| > | 531 | <real>0.0</real> | ||
| > | 532 | <key>ToolbarConfigUserDefaultsMinorVersion</key> | ||
| > | 533 | <string>2</string> | ||
| > | 534 | <key>ToolbarDisplayMode</key> | ||
| > | 535 | <integer>1</integer> | ||
| > | 536 | <key>ToolbarIsVisible</key> | ||
| > | 537 | <true/> | ||
| > | 538 | <key>ToolbarSizeMode</key> | ||
| > | 539 | <integer>1</integer> | ||
| > | 540 | <key>Type</key> | ||
| > | 541 | <string>Perspectives</string> | ||
| > | 542 | <key>UpdateMessage</key> | ||
| > | 543 | <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string> | ||
| > | 544 | <key>WindowJustification</key> | ||
| > | 545 | <integer>5</integer> | ||
| > | 546 | <key>WindowOrderList</key> | ||
| > | 547 | <array> | ||
| > | 548 | <string>0A76B983106F73D90048097B</string> | ||
| > | 549 | <string>0A76B984106F73D90048097B</string> | ||
| > | 550 | <string>1CD10A99069EF8BA00B06720</string> | ||
| > | 551 | <string>0ACEBDFB106E7ACF007FCDBD</string> | ||
| > | 552 | <string>1C78EAAD065D492600B07095</string> | ||
| > | 553 | <string>/Users/dmitry/Projects/CRDatabase/CRDB.xcodeproj</string> | ||
| > | 554 | </array> | ||
| > | 555 | <key>WindowString</key> | ||
| > | 556 | <string>19 60 983 696 0 0 1280 778 </string> | ||
| > | 557 | <key>WindowToolsV3</key> | ||
| > | 558 | <array> | ||
| > | 559 | <dict> | ||
| > | 560 | <key>FirstTimeWindowDisplayed</key> | ||
| > | 561 | <false/> | ||
| > | 562 | <key>Identifier</key> | ||
| > | 563 | <string>windowTool.build</string> | ||
| > | 564 | <key>IsVertical</key> | ||
| > | 565 | <true/> | ||
| > | 566 | <key>Layout</key> | ||
| > | 567 | <array> | ||
| > | 568 | <dict> | ||
| > | 569 | <key>Dock</key> | ||
| > | 570 | <array> | ||
| > | 571 | <dict> | ||
| > | 572 | <key>BecomeActive</key> | ||
| > | 573 | <true/> | ||
| > | 574 | <key>ContentConfiguration</key> | ||
| > | 575 | <dict> | ||
| > | 576 | <key>PBXProjectModuleGUID</key> | ||
| > | 577 | <string>1CD0528F0623707200166675</string> | ||
| > | 578 | <key>PBXProjectModuleLabel</key> | ||
| > | 579 | <string>CRDB.m</string> | ||
| > | 580 | <key>StatusBarVisibility</key> | ||
| > | 581 | <true/> | ||
| > | 582 | </dict> | ||
| > | 583 | <key>GeometryConfiguration</key> | ||
| > | 584 | <dict> | ||
| > | 585 | <key>Frame</key> | ||
| > | 586 | <string>{{0, 0}, {500, 218}}</string> | ||
| > | 587 | <key>RubberWindowFrame</key> | ||
| > | 588 | <string>42 232 500 500 0 0 1280 778 </string> | ||
| > | 589 | </dict> | ||
| > | 590 | <key>Module</key> | ||
| > | 591 | <string>PBXNavigatorGroup</string> | ||
| > | 592 | <key>Proportion</key> | ||
| > | 593 | <string>218pt</string> | ||
| > | 594 | </dict> | ||
| > | 595 | <dict> | ||
| > | 596 | <key>ContentConfiguration</key> | ||
| > | 597 | <dict> | ||
| > | 598 | <key>PBXProjectModuleGUID</key> | ||
| > | 599 | <string>XCMainBuildResultsModuleGUID</string> | ||
| > | 600 | <key>PBXProjectModuleLabel</key> | ||
| > | 601 | <string>Build Results</string> | ||
| > | 602 | <key>XCBuildResultsTrigger_Collapse</key> | ||
| > | 603 | <integer>1021</integer> | ||
| > | 604 | <key>XCBuildResultsTrigger_Open</key> | ||
| > | 605 | <integer>1011</integer> | ||
| > | 606 | </dict> | ||
| > | 607 | <key>GeometryConfiguration</key> | ||
| > | 608 | <dict> | ||
| > | 609 | <key>Frame</key> | ||
| > | 610 | <string>{{0, 223}, {500, 236}}</string> | ||
| > | 611 | <key>RubberWindowFrame</key> | ||
| > | 612 | <string>42 232 500 500 0 0 1280 778 </string> | ||
| > | 613 | </dict> | ||
| > | 614 | <key>Module</key> | ||
| > | 615 | <string>PBXBuildResultsModule</string> | ||
| > | 616 | <key>Proportion</key> | ||
| > | 617 | <string>236pt</string> | ||
| > | 618 | </dict> | ||
| > | 619 | </array> | ||
| > | 620 | <key>Proportion</key> | ||
| > | 621 | <string>459pt</string> | ||
| > | 622 | </dict> | ||
| > | 623 | </array> | ||
| > | 624 | <key>Name</key> | ||
| > | 625 | <string>Build Results</string> | ||
| > | 626 | <key>ServiceClasses</key> | ||
| > | 627 | <array> | ||
| > | 628 | <string>PBXBuildResultsModule</string> | ||
| > | 629 | </array> | ||
| > | 630 | <key>StatusbarIsVisible</key> | ||
| > | 631 | <true/> | ||
| > | 632 | <key>TableOfContents</key> | ||
| > | 633 | <array> | ||
| > | 634 | <string>0ACEBDFB106E7ACF007FCDBD</string> | ||
| > | 635 | <string>0A76B971106F6F690048097B</string> | ||
| > | 636 | <string>1CD0528F0623707200166675</string> | ||
| > | 637 | <string>XCMainBuildResultsModuleGUID</string> | ||
| > | 638 | </array> | ||
| > | 639 | <key>ToolbarConfiguration</key> | ||
| > | 640 | <string>xcode.toolbar.config.buildV3</string> | ||
| > | 641 | <key>WindowContentMinSize</key> | ||
| > | 642 | <string>486 300</string> | ||
| > | 643 | <key>WindowString</key> | ||
| > | 644 | <string>42 232 500 500 0 0 1280 778 </string> | ||
| > | 645 | <key>WindowToolGUID</key> | ||
| > | 646 | <string>0ACEBDFB106E7ACF007FCDBD</string> | ||
| > | 647 | <key>WindowToolIsVisible</key> | ||
| > | 648 | <false/> | ||
| > | 649 | </dict> | ||
| > | 650 | <dict> | ||
| > | 651 | <key>FirstTimeWindowDisplayed</key> | ||
| > | 652 | <false/> | ||
| > | 653 | <key>Identifier</key> | ||
| > | 654 | <string>windowTool.debugger</string> | ||
| > | 655 | <key>IsVertical</key> | ||
| > | 656 | <true/> | ||
| > | 657 | <key>Layout</key> | ||
| > | 658 | <array> | ||
| > | 659 | <dict> | ||
| > | 660 | <key>Dock</key> | ||
| > | 661 | <array> | ||
| > | 662 | <dict> | ||
| > | 663 | <key>ContentConfiguration</key> | ||
| > | 664 | <dict> | ||
| > | 665 | <key>Debugger</key> | ||
| > | 666 | <dict> | ||
| > | 667 | <key>HorizontalSplitView</key> | ||
| > | 668 | <dict> | ||
| > | 669 | <key>_collapsingFrameDimension</key> | ||
| > | 670 | <real>0.0</real> | ||
| > | 671 | <key>_indexOfCollapsedView</key> | ||
| > | 672 | <integer>0</integer> | ||
| > | 673 | <key>_percentageOfCollapsedView</key> | ||
| > | 674 | <real>0.0</real> | ||
| > | 675 | <key>isCollapsed</key> | ||
| > | 676 | <string>yes</string> | ||
| > | 677 | <key>sizes</key> | ||
| > | 678 | <array> | ||
| > | 679 | <string>{{0, 0}, {371, 278}}</string> | ||
| > | 680 | <string>{{371, 0}, {443, 278}}</string> | ||
| > | 681 | </array> | ||
| > | 682 | </dict> | ||
| > | 683 | <key>VerticalSplitView</key> | ||
| > | 684 | <dict> | ||
| > | 685 | <key>_collapsingFrameDimension</key> | ||
| > | 686 | <real>0.0</real> | ||
| > | 687 | <key>_indexOfCollapsedView</key> | ||
| > | 688 | <integer>0</integer> | ||
| > | 689 | <key>_percentageOfCollapsedView</key> | ||
| > | 690 | <real>0.0</real> | ||
| > | 691 | <key>isCollapsed</key> | ||
| > | 692 | <string>yes</string> | ||
| > | 693 | <key>sizes</key> | ||
| > | 694 | <array> | ||
| > | 695 | <string>{{0, 0}, {814, 278}}</string> | ||
| > | 696 | <string>{{0, 278}, {814, 257}}</string> | ||
| > | 697 | </array> | ||
| > | 698 | </dict> | ||
| > | 699 | </dict> | ||
| > | 700 | <key>LauncherConfigVersion</key> | ||
| > | 701 | <string>8</string> | ||
| > | 702 | <key>PBXProjectModuleGUID</key> | ||
| > | 703 | <string>1C162984064C10D400B95A72</string> | ||
| > | 704 | <key>PBXProjectModuleLabel</key> | ||
| > | 705 | <string>Debug - GLUTExamples (Underwater)</string> | ||
| > | 706 | </dict> | ||
| > | 707 | <key>GeometryConfiguration</key> | ||
| > | 708 | <dict> | ||
| > | 709 | <key>DebugConsoleVisible</key> | ||
| > | 710 | <string>None</string> | ||
| > | 711 | <key>DebugConsoleWindowFrame</key> | ||
| > | 712 | <string>{{200, 200}, {500, 300}}</string> | ||
| > | 713 | <key>DebugSTDIOWindowFrame</key> | ||
| > | 714 | <string>{{200, 200}, {500, 300}}</string> | ||
| > | 715 | <key>Frame</key> | ||
| > | 716 | <string>{{0, 0}, {814, 535}}</string> | ||
| > | 717 | <key>PBXDebugSessionStackFrameViewKey</key> | ||
| > | 718 | <dict> | ||
| > | 719 | <key>DebugVariablesTableConfiguration</key> | ||
| > | 720 | <array> | ||
| > | 721 | <string>Name</string> | ||
| > | 722 | <real>120</real> | ||
| > | 723 | <string>Value</string> | ||
| > | 724 | <real>85</real> | ||
| > | 725 | <string>Summary</string> | ||
| > | 726 | <real>213</real> | ||
| > | 727 | </array> | ||
| > | 728 | <key>Frame</key> | ||
| > | 729 | <string>{{371, 0}, {443, 278}}</string> | ||
| > | 730 | <key>RubberWindowFrame</key> | ||
| > | 731 | <string>42 156 814 576 0 0 1280 778 </string> | ||
| > | 732 | </dict> | ||
| > | 733 | <key>RubberWindowFrame</key> | ||
| > | 734 | <string>42 156 814 576 0 0 1280 778 </string> | ||
| > | 735 | </dict> | ||
| > | 736 | <key>Module</key> | ||
| > | 737 | <string>PBXDebugSessionModule</string> | ||
| > | 738 | <key>Proportion</key> | ||
| > | 739 | <string>535pt</string> | ||
| > | 740 | </dict> | ||
| > | 741 | </array> | ||
| > | 742 | <key>Proportion</key> | ||
| > | 743 | <string>535pt</string> | ||
| > | 744 | </dict> | ||
| > | 745 | </array> | ||
| > | 746 | <key>Name</key> | ||
| > | 747 | <string>Debugger</string> | ||
| > | 748 | <key>ServiceClasses</key> | ||
| > | 749 | <array> | ||
| > | 750 | <string>PBXDebugSessionModule</string> | ||
| > | 751 | </array> | ||
| > | 752 | <key>StatusbarIsVisible</key> | ||
| > | 753 | <true/> | ||
| > | 754 | <key>TableOfContents</key> | ||
| > | 755 | <array> | ||
| > | 756 | <string>1CD10A99069EF8BA00B06720</string> | ||
| > | 757 | <string>0A76B97D106F73D90048097B</string> | ||
| > | 758 | <string>1C162984064C10D400B95A72</string> | ||
| > | 759 | <string>0A76B97E106F73D90048097B</string> | ||
| > | 760 | <string>0A76B97F106F73D90048097B</string> | ||
| > | 761 | <string>0A76B980106F73D90048097B</string> | ||
| > | 762 | <string>0A76B981106F73D90048097B</string> | ||
| > | 763 | <string>0A76B982106F73D90048097B</string> | ||
| > | 764 | </array> | ||
| > | 765 | <key>ToolbarConfiguration</key> | ||
| > | 766 | <string>xcode.toolbar.config.debugV3</string> | ||
| > | 767 | <key>WindowString</key> | ||
| > | 768 | <string>42 156 814 576 0 0 1280 778 </string> | ||
| > | 769 | <key>WindowToolGUID</key> | ||
| > | 770 | <string>1CD10A99069EF8BA00B06720</string> | ||
| > | 771 | <key>WindowToolIsVisible</key> | ||
| > | 772 | <false/> | ||
| > | 773 | </dict> | ||
| > | 774 | <dict> | ||
| > | 775 | <key>Identifier</key> | ||
| > | 776 | <string>windowTool.find</string> | ||
| > | 777 | <key>Layout</key> | ||
| > | 778 | <array> | ||
| > | 779 | <dict> | ||
| > | 780 | <key>Dock</key> | ||
| > | 781 | <array> | ||
| > | 782 | <dict> | ||
| > | 783 | <key>Dock</key> | ||
| > | 784 | <array> | ||
| > | 785 | <dict> | ||
| > | 786 | <key>ContentConfiguration</key> | ||
| > | 787 | <dict> | ||
| > | 788 | <key>PBXProjectModuleGUID</key> | ||
| > | 789 | <string>1CDD528C0622207200134675</string> | ||
| > | 790 | <key>PBXProjectModuleLabel</key> | ||
| > | 791 | <string><No Editor></string> | ||
| > | 792 | <key>PBXSplitModuleInNavigatorKey</key> | ||
| > | 793 | <dict> | ||
| > | 794 | <key>Split0</key> | ||
| > | 795 | <dict> | ||
| > | 796 | <key>PBXProjectModuleGUID</key> | ||
| > | 797 | <string>1CD0528D0623707200166675</string> | ||
| > | 798 | </dict> | ||
| > | 799 | <key>SplitCount</key> | ||
| > | 800 | <string>1</string> | ||
| > | 801 | </dict> | ||
| > | 802 | <key>StatusBarVisibility</key> | ||
| > | 803 | <integer>1</integer> | ||
| > | 804 | </dict> | ||
| > | 805 | <key>GeometryConfiguration</key> | ||
| > | 806 | <dict> | ||
| > | 807 | <key>Frame</key> | ||
| > | 808 | <string>{{0, 0}, {781, 167}}</string> | ||
| > | 809 | <key>RubberWindowFrame</key> | ||
| > | 810 | <string>62 385 781 470 0 0 1440 878 </string> | ||
| > | 811 | </dict> | ||
| > | 812 | <key>Module</key> | ||
| > | 813 | <string>PBXNavigatorGroup</string> | ||
| > | 814 | <key>Proportion</key> | ||
| > | 815 | <string>781pt</string> | ||
| > | 816 | </dict> | ||
| > | 817 | </array> | ||
| > | 818 | <key>Proportion</key> | ||
| > | 819 | <string>50%</string> | ||
| > | 820 | </dict> | ||
| > | 821 | <dict> | ||
| > | 822 | <key>BecomeActive</key> | ||
| > | 823 | <integer>1</integer> | ||
| > | 824 | <key>ContentConfiguration</key> | ||
| > | 825 | <dict> | ||
| > | 826 | <key>PBXProjectModuleGUID</key> | ||
| > | 827 | <string>1CD0528E0623707200166675</string> | ||
| > | 828 | <key>PBXProjectModuleLabel</key> | ||
| > | 829 | <string>Project Find</string> | ||
| > | 830 | </dict> | ||
| > | 831 | <key>GeometryConfiguration</key> | ||
| > | 832 | <dict> | ||
| > | 833 | <key>Frame</key> | ||
| > | 834 | <string>{{8, 0}, {773, 254}}</string> | ||
| > | 835 | <key>RubberWindowFrame</key> | ||
| > | 836 | <string>62 385 781 470 0 0 1440 878 </string> | ||
| > | 837 | </dict> | ||
| > | 838 | <key>Module</key> | ||
| > | 839 | <string>PBXProjectFindModule</string> | ||
| > | 840 | <key>Proportion</key> | ||
| > | 841 | <string>50%</string> | ||
| > | 842 | </dict> | ||
| > | 843 | </array> | ||
| > | 844 | <key>Proportion</key> | ||
| > | 845 | <string>428pt</string> | ||
| > | 846 | </dict> | ||
| > | 847 | </array> | ||
| > | 848 | <key>Name</key> | ||
| > | 849 | <string>Project Find</string> | ||
| > | 850 | <key>ServiceClasses</key> | ||
| > | 851 | <array> | ||
| > | 852 | <string>PBXProjectFindModule</string> | ||
| > | 853 | </array> | ||
| > | 854 | <key>StatusbarIsVisible</key> | ||
| > | 855 | <integer>1</integer> | ||
| > | 856 | <key>TableOfContents</key> | ||
| > | 857 | <array> | ||
| > | 858 | <string>1C530D57069F1CE1000CFCEE</string> | ||
| > | 859 | <string>1C530D58069F1CE1000CFCEE</string> | ||
| > | 860 | <string>1C530D59069F1CE1000CFCEE</string> | ||
| > | 861 | <string>1CDD528C0622207200134675</string> | ||
| > | 862 | <string>1C530D5A069F1CE1000CFCEE</string> | ||
| > | 863 | <string>1CE0B1FE06471DED0097A5F4</string> | ||
| > | 864 | <string>1CD0528E0623707200166675</string> | ||
| > | 865 | </array> | ||
| > | 866 | <key>WindowString</key> | ||
| > | 867 | <string>62 385 781 470 0 0 1440 878 </string> | ||
| > | 868 | <key>WindowToolGUID</key> | ||
| > | 869 | <string>1C530D57069F1CE1000CFCEE</string> | ||
| > | 870 | <key>WindowToolIsVisible</key> | ||
| > | 871 | <integer>0</integer> | ||
| > | 872 | </dict> | ||
| > | 873 | <dict> | ||
| > | 874 | <key>Identifier</key> | ||
| > | 875 | <string>MENUSEPARATOR</string> | ||
| > | 876 | </dict> | ||
| > | 877 | <dict> | ||
| > | 878 | <key>FirstTimeWindowDisplayed</key> | ||
| > | 879 | <false/> | ||
| > | 880 | <key>Identifier</key> | ||
| > | 881 | <string>windowTool.debuggerConsole</string> | ||
| > | 882 | <key>IsVertical</key> | ||
| > | 883 | <true/> | ||
| > | 884 | <key>Layout</key> | ||
| > | 885 | <array> | ||
| > | 886 | <dict> | ||
| > | 887 | <key>Dock</key> | ||
| > | 888 | <array> | ||
| > | 889 | <dict> | ||
| > | 890 | <key>BecomeActive</key> | ||
| > | 891 | <true/> | ||
| > | 892 | <key>ContentConfiguration</key> | ||
| > | 893 | <dict> | ||
| > | 894 | <key>PBXProjectModuleGUID</key> | ||
| > | 895 | <string>1C78EAAC065D492600B07095</string> | ||
| > | 896 | <key>PBXProjectModuleLabel</key> | ||
| > | 897 | <string>Debugger Console</string> | ||
| > | 898 | </dict> | ||
| > | 899 | <key>GeometryConfiguration</key> | ||
| > | 900 | <dict> | ||
| > | 901 | <key>Frame</key> | ||
| > | 902 | <string>{{0, 0}, {741, 258}}</string> | ||
| > | 903 | <key>RubberWindowFrame</key> | ||
| > | 904 | <string>483 479 741 299 0 0 1280 778 </string> | ||
| > | 905 | </dict> | ||
| > | 906 | <key>Module</key> | ||
| > | 907 | <string>PBXDebugCLIModule</string> | ||
| > | 908 | <key>Proportion</key> | ||
| > | 909 | <string>258pt</string> | ||
| > | 910 | </dict> | ||
| > | 911 | </array> | ||
| > | 912 | <key>Proportion</key> | ||
| > | 913 | <string>258pt</string> | ||
| > | 914 | </dict> | ||
| > | 915 | </array> | ||
| > | 916 | <key>Name</key> | ||
| > | 917 | <string>Debugger Console</string> | ||
| > | 918 | <key>ServiceClasses</key> | ||
| > | 919 | <array> | ||
| > | 920 | <string>PBXDebugCLIModule</string> | ||
| > | 921 | </array> | ||
| > | 922 | <key>StatusbarIsVisible</key> | ||
| > | 923 | <true/> | ||
| > | 924 | <key>TableOfContents</key> | ||
| > | 925 | <array> | ||
| > | 926 | <string>1C78EAAD065D492600B07095</string> | ||
| > | 927 | <string>0A76B972106F6F690048097B</string> | ||
| > | 928 | <string>1C78EAAC065D492600B07095</string> | ||
| > | 929 | </array> | ||
| > | 930 | <key>ToolbarConfiguration</key> | ||
| > | 931 | <string>xcode.toolbar.config.consoleV3</string> | ||
| > | 932 | <key>WindowString</key> | ||
| > | 933 | <string>483 479 741 299 0 0 1280 778 </string> | ||
| > | 934 | <key>WindowToolGUID</key> | ||
| > | 935 | <string>1C78EAAD065D492600B07095</string> | ||
| > | 936 | <key>WindowToolIsVisible</key> | ||
| > | 937 | <true/> | ||
| > | 938 | </dict> | ||
| > | 939 | <dict> | ||
| > | 940 | <key>Identifier</key> | ||
| > | 941 | <string>windowTool.snapshots</string> | ||
| > | 942 | <key>Layout</key> | ||
| > | 943 | <array> | ||
| > | 944 | <dict> | ||
| > | 945 | <key>Dock</key> | ||
| > | 946 | <array> | ||
| > | 947 | <dict> | ||
| > | 948 | <key>Module</key> | ||
| > | 949 | <string>XCSnapshotModule</string> | ||
| > | 950 | <key>Proportion</key> | ||
| > | 951 | <string>100%</string> | ||
| > | 952 | </dict> | ||
| > | 953 | </array> | ||
| > | 954 | <key>Proportion</key> | ||
| > | 955 | <string>100%</string> | ||
| > | 956 | </dict> | ||
| > | 957 | </array> | ||
| > | 958 | <key>Name</key> | ||
| > | 959 | <string>Snapshots</string> | ||
| > | 960 | <key>ServiceClasses</key> | ||
| > | 961 | <array> | ||
| > | 962 | <string>XCSnapshotModule</string> | ||
| > | 963 | </array> | ||
| > | 964 | <key>StatusbarIsVisible</key> | ||
| > | 965 | <string>Yes</string> | ||
| > | 966 | <key>ToolbarConfiguration</key> | ||
| > | 967 | <string>xcode.toolbar.config.snapshots</string> | ||
| > | 968 | <key>WindowString</key> | ||
| > | 969 | <string>315 824 300 550 0 0 1440 878 </string> | ||
| > | 970 | <key>WindowToolIsVisible</key> | ||
| > | 971 | <string>Yes</string> | ||
| > | 972 | </dict> | ||
| > | 973 | <dict> | ||
| > | 974 | <key>Identifier</key> | ||
| > | 975 | <string>windowTool.scm</string> | ||
| > | 976 | <key>Layout</key> | ||
| > | 977 | <array> | ||
| > | 978 | <dict> | ||
| > | 979 | <key>Dock</key> | ||
| > | 980 | <array> | ||
| > | 981 | <dict> | ||
| > | 982 | <key>ContentConfiguration</key> | ||
| > | 983 | <dict> | ||
| > | 984 | <key>PBXProjectModuleGUID</key> | ||
| > | 985 | <string>1C78EAB2065D492600B07095</string> | ||
| > | 986 | <key>PBXProjectModuleLabel</key> | ||
| > | 987 | <string><No Editor></string> | ||
| > | 988 | <key>PBXSplitModuleInNavigatorKey</key> | ||
| > | 989 | <dict> | ||
| > | 990 | <key>Split0</key> | ||
| > | 991 | <dict> | ||
| > | 992 | <key>PBXProjectModuleGUID</key> | ||
| > | 993 | <string>1C78EAB3065D492600B07095</string> | ||
| > | 994 | </dict> | ||
| > | 995 | <key>SplitCount</key> | ||
| > | 996 | <string>1</string> | ||
| > | 997 | </dict> | ||
| > | 998 | <key>StatusBarVisibility</key> | ||
| > | 999 | <integer>1</integer> | ||
| > | 1000 | </dict> | ||
| > | 1001 | <key>GeometryConfiguration</key> | ||
| > | 1002 | <dict> | ||
| > | 1003 | <key>Frame</key> | ||
| > | 1004 | <string>{{0, 0}, {452, 0}}</string> | ||
| > | 1005 | <key>RubberWindowFrame</key> | ||
| > | 1006 | <string>743 379 452 308 0 0 1280 1002 </string> | ||
| > | 1007 | </dict> | ||
| > | 1008 | <key>Module</key> | ||
| > | 1009 | <string>PBXNavigatorGroup</string> | ||
| > | 1010 | <key>Proportion</key> | ||
| > | 1011 | <string>0pt</string> | ||
| > | 1012 | </dict> | ||
| > | 1013 | <dict> | ||
| > | 1014 | <key>BecomeActive</key> | ||
| > | 1015 | <integer>1</integer> | ||
| > | 1016 | <key>ContentConfiguration</key> | ||
| > | 1017 | <dict> | ||
| > | 1018 | <key>PBXProjectModuleGUID</key> | ||
| > | 1019 | <string>1CD052920623707200166675</string> | ||
| > | 1020 | <key>PBXProjectModuleLabel</key> | ||
| > | 1021 | <string>SCM</string> | ||
| > | 1022 | </dict> | ||
| > | 1023 | <key>GeometryConfiguration</key> | ||
| > | 1024 | <dict> | ||
| > | 1025 | <key>ConsoleFrame</key> | ||
| > | 1026 | <string>{{0, 259}, {452, 0}}</string> | ||
| > | 1027 | <key>Frame</key> | ||
| > | 1028 | <string>{{0, 7}, {452, 259}}</string> | ||
| > | 1029 | <key>RubberWindowFrame</key> | ||
| > | 1030 | <string>743 379 452 308 0 0 1280 1002 </string> | ||
| > | 1031 | <key>TableConfiguration</key> | ||
| > | 1032 | <array> | ||
| > | 1033 | <string>Status</string> | ||
| > | 1034 | <real>30</real> | ||
| > | 1035 | <string>FileName</string> | ||
| > | 1036 | <real>199</real> | ||
| > | 1037 | <string>Path</string> | ||
| > | 1038 | <real>197.0950012207031</real> | ||
| > | 1039 | </array> | ||
| > | 1040 | <key>TableFrame</key> | ||
| > | 1041 | <string>{{0, 0}, {452, 250}}</string> | ||
| > | 1042 | </dict> | ||
| > | 1043 | <key>Module</key> | ||
| > | 1044 | <string>PBXCVSModule</string> | ||
| > | 1045 | <key>Proportion</key> | ||
| > | 1046 | <string>262pt</string> | ||
| > | 1047 | </dict> | ||
| > | 1048 | </array> | ||
| > | 1049 | <key>Proportion</key> | ||
| > | 1050 | <string>266pt</string> | ||
| > | 1051 | </dict> | ||
| > | 1052 | </array> | ||
| > | 1053 | <key>Name</key> | ||
| > | 1054 | <string>SCM</string> | ||
| > | 1055 | <key>ServiceClasses</key> | ||
| > | 1056 | <array> | ||
| > | 1057 | <string>PBXCVSModule</string> | ||
| > | 1058 | </array> | ||
| > | 1059 | <key>StatusbarIsVisible</key> | ||
| > | 1060 | <integer>1</integer> | ||
| > | 1061 | <key>TableOfContents</key> | ||
| > | 1062 | <array> | ||
| > | 1063 | <string>1C78EAB4065D492600B07095</string> | ||
| > | 1064 | <string>1C78EAB5065D492600B07095</string> | ||
| > | 1065 | <string>1C78EAB2065D492600B07095</string> | ||
| > | 1066 | <string>1CD052920623707200166675</string> | ||
| > | 1067 | </array> | ||
| > | 1068 | <key>ToolbarConfiguration</key> | ||
| > | 1069 | <string>xcode.toolbar.config.scm</string> | ||
| > | 1070 | <key>WindowString</key> | ||
| > | 1071 | <string>743 379 452 308 0 0 1280 1002 </string> | ||
| > | 1072 | </dict> | ||
| > | 1073 | <dict> | ||
| > | 1074 | <key>FirstTimeWindowDisplayed</key> | ||
| > | 1075 | <false/> | ||
| > | 1076 | <key>Identifier</key> | ||
| > | 1077 | <string>windowTool.breakpoints</string> | ||
| > | 1078 | <key>IsVertical</key> | ||
| > | 1079 | <false/> | ||
| > | 1080 | <key>Layout</key> | ||
| > | 1081 | <array> | ||
| > | 1082 | <dict> | ||
| > | 1083 | <key>Dock</key> | ||
| > | 1084 | <array> | ||
| > | 1085 | <dict> | ||
| > | 1086 | <key>ContentConfiguration</key> | ||
| > | 1087 | <dict> | ||
| > | 1088 | <key>PBXBottomSmartGroupGIDs</key> | ||
| > | 1089 | <array> | ||
| > | 1090 | <string>1C77FABC04509CD000000102</string> | ||
| > | 1091 | </array> | ||
| > | 1092 | <key>PBXProjectModuleGUID</key> | ||
| > | 1093 | <string>1CE0B1FE06471DED0097A5F4</string> | ||
| > | 1094 | <key>PBXProjectModuleLabel</key> | ||
| > | 1095 | <string>Files</string> | ||
| > | 1096 | <key>PBXProjectStructureProvided</key> | ||
| > | 1097 | <string>no</string> | ||
| > | 1098 | <key>PBXSmartGroupTreeModuleColumnData</key> | ||
| > | 1099 | <dict> | ||
| > | 1100 | <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> | ||
| > | 1101 | <array> | ||
| > | 1102 | <real>168</real> | ||
| > | 1103 | </array> | ||
| > | 1104 | <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> | ||
| > | 1105 | <array> | ||
| > | 1106 | <string>MainColumn</string> | ||
| > | 1107 | </array> | ||
| > | 1108 | </dict> | ||
| > | 1109 | <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> | ||
| > | 1110 | <dict> | ||
| > | 1111 | <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> | ||
| > | 1112 | <array> | ||
| > | 1113 | <string>1C77FABC04509CD000000102</string> | ||
| > | 1114 | </array> | ||
| > | 1115 | <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> | ||
| > | 1116 | <array> | ||
| > | 1117 | <array> | ||
| > | 1118 | <integer>0</integer> | ||
| > | 1119 | </array> | ||
| > | 1120 | </array> | ||
| > | 1121 | <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> | ||
| > | 1122 | <string>{{0, 0}, {168, 350}}</string> | ||
| > | 1123 | </dict> | ||
| > | 1124 | <key>PBXTopSmartGroupGIDs</key> | ||
| > | 1125 | <array/> | ||
| > | 1126 | <key>XCIncludePerspectivesSwitch</key> | ||
| > | 1127 | <false/> | ||
| > | 1128 | </dict> | ||
| > | 1129 | <key>GeometryConfiguration</key> | ||
| > | 1130 | <dict> | ||
| > | 1131 | <key>Frame</key> | ||
| > | 1132 | <string>{{0, 0}, {185, 368}}</string> | ||
| > | 1133 | <key>GroupTreeTableConfiguration</key> | ||
| > | 1134 | <array> | ||
| > | 1135 | <string>MainColumn</string> | ||
| > | 1136 | <real>168</real> | ||
| > | 1137 | </array> | ||
| > | 1138 | <key>RubberWindowFrame</key> | ||
| > | 1139 | <string>42 323 744 409 0 0 1280 778 </string> | ||
| > | 1140 | </dict> | ||
| > | 1141 | <key>Module</key> | ||
| > | 1142 | <string>PBXSmartGroupTreeModule</string> | ||
| > | 1143 | <key>Proportion</key> | ||
| > | 1144 | <string>185pt</string> | ||
| > | 1145 | </dict> | ||
| > | 1146 | <dict> | ||
| > | 1147 | <key>BecomeActive</key> | ||
| > | 1148 | <true/> | ||
| > | 1149 | <key>ContentConfiguration</key> | ||
| > | 1150 | <dict> | ||
| > | 1151 | <key>PBXProjectModuleGUID</key> | ||
| > | 1152 | <string>1CA1AED706398EBD00589147</string> | ||
| > | 1153 | <key>PBXProjectModuleLabel</key> | ||
| > | 1154 | <string>Detail</string> | ||
| > | 1155 | </dict> | ||
| > | 1156 | <key>GeometryConfiguration</key> | ||
| > | 1157 | <dict> | ||
| > | 1158 | <key>Frame</key> | ||
| > | 1159 | <string>{{190, 0}, {554, 368}}</string> | ||
| > | 1160 | <key>RubberWindowFrame</key> | ||
| > | 1161 | <string>42 323 744 409 0 0 1280 778 </string> | ||
| > | 1162 | </dict> | ||
| > | 1163 | <key>Module</key> | ||
| > | 1164 | <string>XCDetailModule</string> | ||
| > | 1165 | <key>Proportion</key> | ||
| > | 1166 | <string>554pt</string> | ||
| > | 1167 | </dict> | ||
| > | 1168 | </array> | ||
| > | 1169 | <key>Proportion</key> | ||
| > | 1170 | <string>368pt</string> | ||
| > | 1171 | </dict> | ||
| > | 1172 | </array> | ||
| > | 1173 | <key>MajorVersion</key> | ||
| > | 1174 | <integer>3</integer> | ||
| > | 1175 | <key>MinorVersion</key> | ||
| > | 1176 | <integer>0</integer> | ||
| > | 1177 | <key>Name</key> | ||
| > | 1178 | <string>Breakpoints</string> | ||
| > | 1179 | <key>ServiceClasses</key> | ||
| > | 1180 | <array> | ||
| > | 1181 | <string>PBXSmartGroupTreeModule</string> | ||
| > | 1182 | <string>XCDetailModule</string> | ||
| > | 1183 | </array> | ||
| > | 1184 | <key>StatusbarIsVisible</key> | ||
| > | 1185 | <true/> | ||
| > | 1186 | <key>TableOfContents</key> | ||
| > | 1187 | <array> | ||
| > | 1188 | <string>0A76B5B7106E94870048097B</string> | ||
| > | 1189 | <string>0A76B5B8106E94870048097B</string> | ||
| > | 1190 | <string>1CE0B1FE06471DED0097A5F4</string> | ||
| > | 1191 | <string>1CA1AED706398EBD00589147</string> | ||
| > | 1192 | </array> | ||
| > | 1193 | <key>ToolbarConfiguration</key> | ||
| > | 1194 | <string>xcode.toolbar.config.breakpointsV3</string> | ||
| > | 1195 | <key>WindowString</key> | ||
| > | 1196 | <string>42 323 744 409 0 0 1280 778 </string> | ||
| > | 1197 | <key>WindowToolGUID</key> | ||
| > | 1198 | <string>0A76B5B7106E94870048097B</string> | ||
| > | 1199 | <key>WindowToolIsVisible</key> | ||
| > | 1200 | <false/> | ||
| > | 1201 | </dict> | ||
| > | 1202 | <dict> | ||
| > | 1203 | <key>Identifier</key> | ||
| > | 1204 | <string>windowTool.debugAnimator</string> | ||
| > | 1205 | <key>Layout</key> | ||
| > | 1206 | <array> | ||
| > | 1207 | <dict> | ||
| > | 1208 | <key>Dock</key> | ||
| > | 1209 | <array> | ||
| > | 1210 | <dict> | ||
| > | 1211 | <key>Module</key> | ||
| > | 1212 | <string>PBXNavigatorGroup</string> | ||
| > | 1213 | <key>Proportion</key> | ||
| > | 1214 | <string>100%</string> | ||
| > | 1215 | </dict> | ||
| > | 1216 | </array> | ||
| > | 1217 | <key>Proportion</key> | ||
| > | 1218 | <string>100%</string> | ||
| > | 1219 | </dict> | ||
| > | 1220 | </array> | ||
| > | 1221 | <key>Name</key> | ||
| > | 1222 | <string>Debug Visualizer</string> | ||
| > | 1223 | <key>ServiceClasses</key> | ||
| > | 1224 | <array> | ||
| > | 1225 | <string>PBXNavigatorGroup</string> | ||
| > | 1226 | </array> | ||
| > | 1227 | <key>StatusbarIsVisible</key> | ||
| > | 1228 | <integer>1</integer> | ||
| > | 1229 | <key>ToolbarConfiguration</key> | ||
| > | 1230 | <string>xcode.toolbar.config.debugAnimatorV3</string> | ||
| > | 1231 | <key>WindowString</key> | ||
| > | 1232 | <string>100 100 700 500 0 0 1280 1002 </string> | ||
| > | 1233 | </dict> | ||
| > | 1234 | <dict> | ||
| > | 1235 | <key>Identifier</key> | ||
| > | 1236 | <string>windowTool.bookmarks</string> | ||
| > | 1237 | <key>Layout</key> | ||
| > | 1238 | <array> | ||
| > | 1239 | <dict> | ||
| > | 1240 | <key>Dock</key> | ||
| > | 1241 | <array> | ||
| > | 1242 | <dict> | ||
| > | 1243 | <key>Module</key> | ||
| > | 1244 | <string>PBXBookmarksModule</string> | ||
| > | 1245 | <key>Proportion</key> | ||
| > | 1246 | <string>100%</string> | ||
| > | 1247 | </dict> | ||
| > | 1248 | </array> | ||
| > | 1249 | <key>Proportion</key> | ||
| > | 1250 | <string>100%</string> | ||
| > | 1251 | </dict> | ||
| > | 1252 | </array> | ||
| > | 1253 | <key>Name</key> | ||
| > | 1254 | <string>Bookmarks</string> | ||
| > | 1255 | <key>ServiceClasses</key> | ||
| > | 1256 | <array> | ||
| > | 1257 | <string>PBXBookmarksModule</string> | ||
| > | 1258 | </array> | ||
| > | 1259 | <key>StatusbarIsVisible</key> | ||
| > | 1260 | <integer>0</integer> | ||
| > | 1261 | <key>WindowString</key> | ||
| > | 1262 | <string>538 42 401 187 0 0 1280 1002 </string> | ||
| > | 1263 | </dict> | ||
| > | 1264 | <dict> | ||
| > | 1265 | <key>Identifier</key> | ||
| > | 1266 | <string>windowTool.projectFormatConflicts</string> | ||
| > | 1267 | <key>Layout</key> | ||
| > | 1268 | <array> | ||
| > | 1269 | <dict> | ||
| > | 1270 | <key>Dock</key> | ||
| > | 1271 | <array> | ||
| > | 1272 | <dict> | ||
| > | 1273 | <key>Module</key> | ||
| > | 1274 | <string>XCProjectFormatConflictsModule</string> | ||
| > | 1275 | <key>Proportion</key> | ||
| > | 1276 | <string>100%</string> | ||
| > | 1277 | </dict> | ||
| > | 1278 | </array> | ||
| > | 1279 | <key>Proportion</key> | ||
| > | 1280 | <string>100%</string> | ||
| > | 1281 | </dict> | ||
| > | 1282 | </array> | ||
| > | 1283 | <key>Name</key> | ||
| > | 1284 | <string>Project Format Conflicts</string> | ||
| > | 1285 | <key>ServiceClasses</key> | ||
| > | 1286 | <array> | ||
| > | 1287 | <string>XCProjectFormatConflictsModule</string> | ||
| > | 1288 | </array> | ||
| > | 1289 | <key>StatusbarIsVisible</key> | ||
| > | 1290 | <integer>0</integer> | ||
| > | 1291 | <key>WindowContentMinSize</key> | ||
| > | 1292 | <string>450 300</string> | ||
| > | 1293 | <key>WindowString</key> | ||
| > | 1294 | <string>50 850 472 307 0 0 1440 877</string> | ||
| > | 1295 | </dict> | ||
| > | 1296 | <dict> | ||
| > | 1297 | <key>FirstTimeWindowDisplayed</key> | ||
| > | 1298 | <false/> | ||
| > | 1299 | <key>Identifier</key> | ||
| > | 1300 | <string>windowTool.classBrowser</string> | ||
| > | 1301 | <key>IsVertical</key> | ||
| > | 1302 | <true/> | ||
| > | 1303 | <key>Layout</key> | ||
| > | 1304 | <array> | ||
| > | 1305 | <dict> | ||
| > | 1306 | <key>Dock</key> | ||
| > | 1307 | <array> | ||
| > | 1308 | <dict> | ||
| > | 1309 | <key>ContentConfiguration</key> | ||
| > | 1310 | <dict> | ||
| > | 1311 | <key>OptionsSetName</key> | ||
| > | 1312 | <string>Hierarchy, all classes</string> | ||
| > | 1313 | <key>PBXProjectModuleGUID</key> | ||
| > | 1314 | <string>1CA6456E063B45B4001379D8</string> | ||
| > | 1315 | <key>PBXProjectModuleLabel</key> | ||
| > | 1316 | <string>Class Browser - NSObject</string> | ||
| > | 1317 | </dict> | ||
| > | 1318 | <key>GeometryConfiguration</key> | ||
| > | 1319 | <dict> | ||
| > | 1320 | <key>ClassesFrame</key> | ||
| > | 1321 | <string>{{0, 0}, {378, 96}}</string> | ||
| > | 1322 | <key>ClassesTreeTableConfiguration</key> | ||
| > | 1323 | <array> | ||
| > | 1324 | <string>PBXClassNameColumnIdentifier</string> | ||
| > | 1325 | <real>208</real> | ||
| > | 1326 | <string>PBXClassBookColumnIdentifier</string> | ||
| > | 1327 | <real>22</real> | ||
| > | 1328 | </array> | ||
| > | 1329 | <key>Frame</key> | ||
| > | 1330 | <string>{{0, 0}, {630, 332}}</string> | ||
| > | 1331 | <key>MembersFrame</key> | ||
| > | 1332 | <string>{{0, 101}, {378, 231}}</string> | ||
| > | 1333 | <key>MembersTreeTableConfiguration</key> | ||
| > | 1334 | <array> | ||
| > | 1335 | <string>PBXMemberTypeIconColumnIdentifier</string> | ||
| > | 1336 | <real>22</real> | ||
| > | 1337 | <string>PBXMemberNameColumnIdentifier</string> | ||
| > | 1338 | <real>216</real> | ||
| > | 1339 | <string>PBXMemberTypeColumnIdentifier</string> | ||
| > | 1340 | <real>101</real> | ||
| > | 1341 | <string>PBXMemberBookColumnIdentifier</string> | ||
| > | 1342 | <real>22</real> | ||
| > | 1343 | </array> | ||
| > | 1344 | <key>RubberWindowFrame</key> | ||
| > | 1345 | <string>42 380 630 352 0 0 1280 778 </string> | ||
| > | 1346 | </dict> | ||
| > | 1347 | <key>Module</key> | ||
| > | 1348 | <string>PBXClassBrowserModule</string> | ||
| > | 1349 | <key>Proportion</key> | ||
| > | 1350 | <string>332pt</string> | ||
| > | 1351 | </dict> | ||
| > | 1352 | </array> | ||
| > | 1353 | <key>Proportion</key> | ||
| > | 1354 | <string>332pt</string> | ||
| > | 1355 | </dict> | ||
| > | 1356 | </array> | ||
| > | 1357 | <key>Name</key> | ||
| > | 1358 | <string>Class Browser</string> | ||
| > | 1359 | <key>ServiceClasses</key> | ||
| > | 1360 | <array> | ||
| > | 1361 | <string>PBXClassBrowserModule</string> | ||
| > | 1362 | </array> | ||
| > | 1363 | <key>StatusbarIsVisible</key> | ||
| > | 1364 | <false/> | ||
| > | 1365 | <key>TableOfContents</key> | ||
| > | 1366 | <array> | ||
| > | 1367 | <string>1C0AD2AF069F1E9B00FABCE6</string> | ||
| > | 1368 | <string>0A76B8A9106ED0860048097B</string> | ||
| > | 1369 | <string>1CA6456E063B45B4001379D8</string> | ||
| > | 1370 | </array> | ||
| > | 1371 | <key>ToolbarConfiguration</key> | ||
| > | 1372 | <string>xcode.toolbar.config.classbrowser</string> | ||
| > | 1373 | <key>WindowString</key> | ||
| > | 1374 | <string>42 380 630 352 0 0 1280 778 </string> | ||
| > | 1375 | <key>WindowToolGUID</key> | ||
| > | 1376 | <string>1C0AD2AF069F1E9B00FABCE6</string> | ||
| > | 1377 | <key>WindowToolIsVisible</key> | ||
| > | 1378 | <false/> | ||
| > | 1379 | </dict> | ||
| > | 1380 | <dict> | ||
| > | 1381 | <key>FirstTimeWindowDisplayed</key> | ||
| > | 1382 | <false/> | ||
| > | 1383 | <key>Identifier</key> | ||
| > | 1384 | <string>windowTool.refactoring</string> | ||
| > | 1385 | <key>IncludeInToolsMenu</key> | ||
| > | 1386 | <integer>0</integer> | ||
| > | 1387 | <key>IsVertical</key> | ||
| > | 1388 | <true/> | ||
| > | 1389 | <key>Layout</key> | ||
| > | 1390 | <array> | ||
| > | 1391 | <dict> | ||
| > | 1392 | <key>Dock</key> | ||
| > | 1393 | <array> | ||
| > | 1394 | <dict> | ||
| > | 1395 | <key>ContentConfiguration</key> | ||
| > | 1396 | <dict> | ||
| > | 1397 | <key>PBXProjectModuleGUID</key> | ||
| > | 1398 | <string>0A76B5DD106E972C0048097B</string> | ||
| > | 1399 | </dict> | ||
| > | 1400 | <key>GeometryConfiguration</key> | ||
| > | 1401 | <dict> | ||
| > | 1402 | <key>Frame</key> | ||
| > | 1403 | <string>{{0, 0}, {500, 315}}</string> | ||
| > | 1404 | <key>RubberWindowFrame</key> | ||
| > | 1405 | <string>42 376 500 356 0 0 1280 778 </string> | ||
| > | 1406 | <key>XCRefactoringSplitViewLowerHeight</key> | ||
| > | 1407 | <real>112</real> | ||
| > | 1408 | <key>XCRefactoringSplitViewTotalHeight</key> | ||
| > | 1409 | <real>232</real> | ||
| > | 1410 | </dict> | ||
| > | 1411 | <key>Module</key> | ||
| > | 1412 | <string>XCRefactoringModule</string> | ||
| > | 1413 | <key>Proportion</key> | ||
| > | 1414 | <string>315pt</string> | ||
| > | 1415 | </dict> | ||
| > | 1416 | </array> | ||
| > | 1417 | <key>Proportion</key> | ||
| > | 1418 | <string>315pt</string> | ||
| > | 1419 | </dict> | ||
| > | 1420 | </array> | ||
| > | 1421 | <key>Name</key> | ||
| > | 1422 | <string>Refactoring</string> | ||
| > | 1423 | <key>ServiceClasses</key> | ||
| > | 1424 | <array> | ||
| > | 1425 | <string>XCRefactoringModule</string> | ||
| > | 1426 | </array> | ||
| > | 1427 | <key>StatusbarIsVisible</key> | ||
| > | 1428 | <true/> | ||
| > | 1429 | <key>TableOfContents</key> | ||
| > | 1430 | <array> | ||
| > | 1431 | <string>0A76B5DE106E972C0048097B</string> | ||
| > | 1432 | <string>0A76B5DF106E972C0048097B</string> | ||
| > | 1433 | <string>0A76B5DD106E972C0048097B</string> | ||
| > | 1434 | </array> | ||
| > | 1435 | <key>WindowString</key> | ||
| > | 1436 | <string>42 376 500 356 0 0 1280 778 </string> | ||
| > | 1437 | <key>WindowToolGUID</key> | ||
| > | 1438 | <string>0A76B5DE106E972C0048097B</string> | ||
| > | 1439 | <key>WindowToolIsVisible</key> | ||
| > | 1440 | <false/> | ||
| > | 1441 | </dict> | ||
| > | 1442 | </array> | ||
| > | 1443 | </dict> | ||
| > | 1444 | </plist> | ||
Added CRDB.xcodeproj/dmitry.pbxuser
| Old () | New (009dc339a1965f75) | |||
|---|---|---|---|---|
| > | 1 | // !$*UTF8*$! | ||
| > | 2 | { | ||
| > | 3 | 08FB7793FE84155DC02AAC07 /* Project object */ = { | ||
| > | 4 | activeBuildConfigurationName = Debug; | ||
| > | 5 | activeExecutable = 0ACEBDEC106E7A1F007FCDBD /* CRDB */; | ||
| > | 6 | activeTarget = 8DD76F960486AA7600D96B5E /* CRDB */; | ||
| > | 7 | addToTargets = ( | ||
| > | 8 | ); | ||
| > | 9 | breakpoints = ( | ||
| > | 10 | ); | ||
| > | 11 | codeSenseManager = 0ACEBDF1106E7A3E007FCDBD /* Code sense */; | ||
| > | 12 | executables = ( | ||
| > | 13 | 0ACEBDEC106E7A1F007FCDBD /* CRDB */, | ||
| > | 14 | ); | ||
| > | 15 | perUserDictionary = { | ||
| > | 16 | "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { | ||
| > | 17 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; | ||
| > | 18 | PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; | ||
| > | 19 | PBXFileTableDataSourceColumnWidthsKey = ( | ||
| > | 20 | 20, | ||
| > | 21 | 20, | ||
| > | 22 | 198, | ||
| > | 23 | 20, | ||
| > | 24 | 99, | ||
| > | 25 | 99, | ||
| > | 26 | 29, | ||
| > | 27 | 20, | ||
| > | 28 | ); | ||
| > | 29 | PBXFileTableDataSourceColumnsKey = ( | ||
| > | 30 | PBXBreakpointsDataSource_ActionID, | ||
| > | 31 | PBXBreakpointsDataSource_TypeID, | ||
| > | 32 | PBXBreakpointsDataSource_BreakpointID, | ||
| > | 33 | PBXBreakpointsDataSource_UseID, | ||
| > | 34 | PBXBreakpointsDataSource_LocationID, | ||
| > | 35 | PBXBreakpointsDataSource_ConditionID, | ||
| > | 36 | PBXBreakpointsDataSource_IgnoreCountID, | ||
| > | 37 | PBXBreakpointsDataSource_ContinueID, | ||
| > | 38 | ); | ||
| > | 39 | }; | ||
| > | 40 | PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { | ||
| > | 41 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; | ||
| > | 42 | PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; | ||
| > | 43 | PBXFileTableDataSourceColumnWidthsKey = ( | ||
| > | 44 | 22, | ||
| > | 45 | 300, | ||
| > | 46 | 424, | ||
| > | 47 | ); | ||
| > | 48 | PBXFileTableDataSourceColumnsKey = ( | ||
| > | 49 | PBXExecutablesDataSource_ActiveFlagID, | ||
| > | 50 | PBXExecutablesDataSource_NameID, | ||
| > | 51 | PBXExecutablesDataSource_CommentsID, | ||
| > | 52 | ); | ||
| > | 53 | }; | ||
| > | 54 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { | ||
| > | 55 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; | ||
| > | 56 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; | ||
| > | 57 | PBXFileTableDataSourceColumnWidthsKey = ( | ||
| > | 58 | 20, | ||
| > | 59 | 536, | ||
| > | 60 | 20, | ||
| > | 61 | 48, | ||
| > | 62 | 43, | ||
| > | 63 | 43, | ||
| > | 64 | 20, | ||
| > | 65 | ); | ||
| > | 66 | PBXFileTableDataSourceColumnsKey = ( | ||
| > | 67 | PBXFileDataSource_FiletypeID, | ||
| > | 68 | PBXFileDataSource_Filename_ColumnID, | ||
| > | 69 | PBXFileDataSource_Built_ColumnID, | ||
| > | 70 | PBXFileDataSource_ObjectSize_ColumnID, | ||
| > | 71 | PBXFileDataSource_Errors_ColumnID, | ||
| > | 72 | PBXFileDataSource_Warnings_ColumnID, | ||
| > | 73 | PBXFileDataSource_Target_ColumnID, | ||
| > | 74 | ); | ||
| > | 75 | }; | ||
| > | 76 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { | ||
| > | 77 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; | ||
| > | 78 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; | ||
| > | 79 | PBXFileTableDataSourceColumnWidthsKey = ( | ||
| > | 80 | 20, | ||
| > | 81 | 496, | ||
| > | 82 | 60, | ||
| > | 83 | 20, | ||
| > | 84 | 48, | ||
| > | 85 | 43, | ||
| > | 86 | 43, | ||
| > | 87 | ); | ||
| > | 88 | PBXFileTableDataSourceColumnsKey = ( | ||
| > | 89 | PBXFileDataSource_FiletypeID, | ||
| > | 90 | PBXFileDataSource_Filename_ColumnID, | ||
| > | 91 | PBXTargetDataSource_PrimaryAttribute, | ||
| > | 92 | PBXFileDataSource_Built_ColumnID, | ||
| > | 93 | PBXFileDataSource_ObjectSize_ColumnID, | ||
| > | 94 | PBXFileDataSource_Errors_ColumnID, | ||
| > | 95 | PBXFileDataSource_Warnings_ColumnID, | ||
| > | 96 | ); | ||
| > | 97 | }; | ||
| > | 98 | PBXPerProjectTemplateStateSaveDate = 275738438; | ||
| > | 99 | PBXWorkspaceStateSaveDate = 275738438; | ||
| > | 100 | }; | ||
| > | 101 | perUserProjectItems = { | ||
| > | 102 | 0A76B5BC106E949F0048097B /* PBXTextBookmark */ = 0A76B5BC106E949F0048097B /* PBXTextBookmark */; | ||
| > | 103 | 0A76B658106EA6530048097B /* PBXTextBookmark */ = 0A76B658106EA6530048097B /* PBXTextBookmark */; | ||
| > | 104 | 0A76B660106EA6530048097B /* PBXTextBookmark */ = 0A76B660106EA6530048097B /* PBXTextBookmark */; | ||
| > | 105 | 0A76B742106EAFBF0048097B /* PBXTextBookmark */ = 0A76B742106EAFBF0048097B /* PBXTextBookmark */; | ||
| > | 106 | 0A76B745106EAFBF0048097B /* PBXTextBookmark */ = 0A76B745106EAFBF0048097B /* PBXTextBookmark */; | ||
| > | 107 | 0A76B7D6106EC13E0048097B /* PBXTextBookmark */ = 0A76B7D6106EC13E0048097B /* PBXTextBookmark */; | ||
| > | 108 | 0A76B912106EE11E0048097B /* PBXTextBookmark */ = 0A76B912106EE11E0048097B /* PBXTextBookmark */; | ||
| > | 109 | 0A76B95C106F6F020048097B /* PBXTextBookmark */ = 0A76B95C106F6F020048097B /* PBXTextBookmark */; | ||
| > | 110 | 0A76B95D106F6F020048097B /* PBXTextBookmark */ = 0A76B95D106F6F020048097B /* PBXTextBookmark */; | ||
| > | 111 | 0A76B95E106F6F020048097B /* PBXTextBookmark */ = 0A76B95E106F6F020048097B /* PBXTextBookmark */; | ||
| > | 112 | 0A76B95F106F6F020048097B /* PBXTextBookmark */ = 0A76B95F106F6F020048097B /* PBXTextBookmark */; | ||
| > | 113 | 0A76B960106F6F020048097B /* PBXTextBookmark */ = 0A76B960106F6F020048097B /* PBXTextBookmark */; | ||
| > | 114 | 0A76B961106F6F020048097B /* PBXTextBookmark */ = 0A76B961106F6F020048097B /* PBXTextBookmark */; | ||
| > | 115 | 0A76B977106F73D90048097B /* PBXTextBookmark */ = 0A76B977106F73D90048097B /* PBXTextBookmark */; | ||
| > | 116 | 0A76B978106F73D90048097B /* PBXTextBookmark */ = 0A76B978106F73D90048097B /* PBXTextBookmark */; | ||
| > | 117 | 0A76B979106F73D90048097B /* PBXTextBookmark */ = 0A76B979106F73D90048097B /* PBXTextBookmark */; | ||
| > | 118 | 0A76B97A106F73D90048097B /* PBXTextBookmark */ = 0A76B97A106F73D90048097B /* PBXTextBookmark */; | ||
| > | 119 | }; | ||
| > | 120 | sourceControlManager = 0ACEBDF0106E7A3E007FCDBD /* Source Control */; | ||
| > | 121 | userBuildSettings = { | ||
| > | 122 | }; | ||
| > | 123 | }; | ||
| > | 124 | 08FB7796FE84155DC02AAC07 /* CRDB.m */ = { | ||
| > | 125 | uiCtxt = { | ||
| > | 126 | sepNavIntBoundsRect = "{{0, 0}, {439, 806}}"; | ||
| > | 127 | sepNavSelRange = "{1550, 0}"; | ||
| > | 128 | sepNavVisRange = "{1299, 282}"; | ||
| > | 129 | }; | ||
| > | 130 | }; | ||
| > | 131 | 0A76B5BC106E949F0048097B /* PBXTextBookmark */ = { | ||
| > | 132 | isa = PBXTextBookmark; | ||
| > | 133 | fRef = 0A76B5BD106E949F0048097B /* stdarg.h */; | ||
| > | 134 | name = "stdarg.h: 105"; | ||
| > | 135 | rLen = 32; | ||
| > | 136 | rLoc = 3650; | ||
| > | 137 | rType = 0; | ||
| > | 138 | vrLen = 1432; | ||
| > | 139 | vrLoc = 2801; | ||
| > | 140 | }; | ||
| > | 141 | 0A76B5BD106E949F0048097B /* stdarg.h */ = { | ||
| > | 142 | isa = PBXFileReference; | ||
| > | 143 | lastKnownFileType = sourcecode.c.h; | ||
| > | 144 | name = stdarg.h; | ||
| > | 145 | path = "/Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdarg.h"; | ||
| > | 146 | sourceTree = "<absolute>"; | ||
| > | 147 | }; | ||
| > | 148 | 0A76B658106EA6530048097B /* PBXTextBookmark */ = { | ||
| > | 149 | isa = PBXTextBookmark; | ||
| > | 150 | fRef = 32A70AAB03705E1F00C91783 /* CRDB_Prefix.pch */; | ||
| > | 151 | name = "CRDB_Prefix.pch: 1"; | ||
| > | 152 | rLen = 0; | ||
| > | 153 | rLoc = 0; | ||
| > | 154 | rType = 0; | ||
| > | 155 | vrLen = 152; | ||
| > | 156 | vrLoc = 0; | ||
| > | 157 | }; | ||
| > | 158 | 0A76B65D106EA6530048097B /* sqlite3.h */ = { | ||
| > | 159 | isa = PBXFileReference; | ||
| > | 160 | lastKnownFileType = sourcecode.c.h; | ||
| > | 161 | name = sqlite3.h; | ||
| > | 162 | path = /Developer/SDKs/MacOSX10.6.sdk/usr/include/sqlite3.h; | ||
| > | 163 | sourceTree = "<absolute>"; | ||
| > | 164 | }; | ||
| > | 165 | 0A76B660106EA6530048097B /* PBXTextBookmark */ = { | ||
| > | 166 | isa = PBXTextBookmark; | ||
| > | 167 | fRef = 0A76B661106EA6530048097B /* NSPathUtilities.h */; | ||
| > | 168 | name = "NSPathUtilities.h: 34"; | ||
| > | 169 | rLen = 51; | ||
| > | 170 | rLoc = 992; | ||
| > | 171 | rType = 0; | ||
| > | 172 | vrLen = 1387; | ||
| > | 173 | vrLoc = 0; | ||
| > | 174 | }; | ||
| > | 175 | 0A76B661106EA6530048097B /* NSPathUtilities.h */ = { | ||
| > | 176 | isa = PBXFileReference; | ||
| > | 177 | lastKnownFileType = sourcecode.c.h; | ||
| > | 178 | name = NSPathUtilities.h; | ||
| > | 179 | path = /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSPathUtilities.h; | ||
| > | 180 | sourceTree = "<absolute>"; | ||
| > | 181 | }; | ||
| > | 182 | 0A76B742106EAFBF0048097B /* PBXTextBookmark */ = { | ||
| > | 183 | isa = PBXTextBookmark; | ||
| > | 184 | fRef = 0A76B743106EAFBF0048097B /* EGODatabase.m */; | ||
| > | 185 | name = "EGODatabase.m: 242"; | ||
| > | 186 | rLen = 4; | ||
| > | 187 | rLoc = 6592; | ||
| > | 188 | rType = 0; | ||
| > | 189 | vrLen = 1117; | ||
| > | 190 | vrLoc = 6127; | ||
| > | 191 | }; | ||
| > | 192 | 0A76B743106EAFBF0048097B /* EGODatabase.m */ = { | ||
| > | 193 | isa = PBXFileReference; | ||
| > | 194 | lastKnownFileType = sourcecode.c.objc; | ||
| > | 195 | name = EGODatabase.m; | ||
| > | 196 | path = /Users/dmitry/Projects/egodatabase/EGODatabase.m; | ||
| > | 197 | sourceTree = "<absolute>"; | ||
| > | 198 | }; | ||
| > | 199 | 0A76B745106EAFBF0048097B /* PBXTextBookmark */ = { | ||
| > | 200 | isa = PBXTextBookmark; | ||
| > | 201 | fRef = 0A76B746106EAFBF0048097B /* queue.h */; | ||
| > | 202 | name = "queue.h: 334"; | ||
| > | 203 | rLen = 54; | ||
| > | 204 | rLoc = 10530; | ||
| > | 205 | rType = 0; | ||
| > | 206 | vrLen = 1625; | ||
| > | 207 | vrLoc = 9723; | ||
| > | 208 | }; | ||
| > | 209 | 0A76B746106EAFBF0048097B /* queue.h */ = { | ||
| > | 210 | isa = PBXFileReference; | ||
| > | 211 | lastKnownFileType = sourcecode.c.h; | ||
| > | 212 | name = queue.h; | ||
| > | 213 | path = /Developer/SDKs/MacOSX10.6.sdk/usr/include/dispatch/queue.h; | ||
| > | 214 | sourceTree = "<absolute>"; | ||
| > | 215 | }; | ||
| > | 216 | 0A76B7D6106EC13E0048097B /* PBXTextBookmark */ = { | ||
| > | 217 | isa = PBXTextBookmark; | ||
| > | 218 | fRef = 0A76B7D7106EC13E0048097B /* NSObjCRuntime.h */; | ||
| > | 219 | name = "NSObjCRuntime.h: 218"; | ||
| > | 220 | rLen = 34; | ||
| > | 221 | rLoc = 7437; | ||
| > | 222 | rType = 0; | ||
| > | 223 | vrLen = 1168; | ||
| > | 224 | vrLoc = 6804; | ||
| > | 225 | }; | ||
| > | 226 | 0A76B7D7106EC13E0048097B /* NSObjCRuntime.h */ = { | ||
| > | 227 | isa = PBXFileReference; | ||
| > | 228 | lastKnownFileType = sourcecode.c.h; | ||
| > | 229 | name = NSObjCRuntime.h; | ||
| > | 230 | path = /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSObjCRuntime.h; | ||
| > | 231 | sourceTree = "<absolute>"; | ||
| > | 232 | }; | ||
| > | 233 | 0A76B912106EE11E0048097B /* PBXTextBookmark */ = { | ||
| > | 234 | isa = PBXTextBookmark; | ||
| > | 235 | fRef = 0A76B65D106EA6530048097B /* sqlite3.h */; | ||
| > | 236 | name = "sqlite3.h: 1209"; | ||
| > | 237 | rLen = 51; | ||
| > | 238 | rLoc = 55138; | ||
| > | 239 | rType = 0; | ||
| > | 240 | vrLen = 2202; | ||
| > | 241 | vrLoc = 52987; | ||
| > | 242 | }; | ||
| > | 243 | 0A76B950106F68230048097B /* LICENSE */ = { | ||
| > | 244 | uiCtxt = { | ||
| > | 245 | sepNavIntBoundsRect = "{{0, 0}, {714, 633}}"; | ||
| > | 246 | sepNavSelRange = "{64, 0}"; | ||
| > | 247 | sepNavVisRange = "{0, 1153}"; | ||
| > | 248 | }; | ||
| > | 249 | }; | ||
| > | 250 | 0A76B95C106F6F020048097B /* PBXTextBookmark */ = { | ||
| > | 251 | isa = PBXTextBookmark; | ||
| > | 252 | fRef = 0A76B950106F68230048097B /* LICENSE */; | ||
| > | 253 | name = "LICENSE: 4"; | ||
| > | 254 | rLen = 0; | ||
| > | 255 | rLoc = 64; | ||
| > | 256 | rType = 0; | ||
| > | 257 | vrLen = 1153; | ||
| > | 258 | vrLoc = 0; | ||
| > | 259 | }; | ||
| > | 260 | 0A76B95D106F6F020048097B /* PBXTextBookmark */ = { | ||
| > | 261 | isa = PBXTextBookmark; | ||
| > | 262 | fRef = 0ACEBE03106E7AD8007FCDBD /* README */; | ||
| > | 263 | name = "README: 54"; | ||
| > | 264 | rLen = 0; | ||
| > | 265 | rLoc = 1472; | ||
| > | 266 | rType = 0; | ||
| > | 267 | vrLen = 1412; | ||
| > | 268 | vrLoc = 0; | ||
| > | 269 | }; | ||
| > | 270 | 0A76B95E106F6F020048097B /* PBXTextBookmark */ = { | ||
| > | 271 | isa = PBXTextBookmark; | ||
| > | 272 | fRef = 0ACEBE02106E7AD8007FCDBD /* CRDatabaseRow.m */; | ||
| > | 273 | name = "CRDatabaseRow.m: 3"; | ||
| > | 274 | rLen = 0; | ||
| > | 275 | rLoc = 29; | ||
| > | 276 | rType = 0; | ||
| > | 277 | vrLen = 1079; | ||
| > | 278 | vrLoc = 0; | ||
| > | 279 | }; | ||
| > | 280 | 0A76B95F106F6F020048097B /* PBXTextBookmark */ = { | ||
| > | 281 | isa = PBXTextBookmark; | ||
| > | 282 | fRef = 0ACEBE01106E7AD8007FCDBD /* CRDatabaseRow.h */; | ||
| > | 283 | name = "CRDatabaseRow.h: 5"; | ||
| > | 284 | rLen = 0; | ||
| > | 285 | rLoc = 41; | ||
| > | 286 | rType = 0; | ||
| > | 287 | vrLen = 1172; | ||
| > | 288 | vrLoc = 0; | ||
| > | 289 | }; | ||
| > | 290 | 0A76B960106F6F020048097B /* PBXTextBookmark */ = { | ||
| > | 291 | isa = PBXTextBookmark; | ||
| > | 292 | fRef = 0ACEBE00106E7AD8007FCDBD /* CRDatabaseResult.m */; | ||
| > | 293 | name = "CRDatabaseResult.m: 5"; | ||
| > | 294 | rLen = 0; | ||
| > | 295 | rLoc = 44; | ||
| > | 296 | rType = 0; | ||
| > | 297 | vrLen = 1001; | ||
| > | 298 | vrLoc = 0; | ||
| > | 299 | }; | ||
| > | 300 | 0A76B961106F6F020048097B /* PBXTextBookmark */ = { | ||
| > | 301 | isa = PBXTextBookmark; | ||
| > | 302 | fRef = 0ACEBDFF106E7AD8007FCDBD /* CRDatabaseResult.h */; | ||
| > | 303 | name = "CRDatabaseResult.h: 5"; | ||
| > | 304 | rLen = 0; | ||
| > | 305 | rLoc = 44; | ||
| > | 306 | rType = 0; | ||
| > | 307 | vrLen = 650; | ||
| > | 308 | vrLoc = 0; | ||
| > | 309 | }; | ||
| > | 310 | 0A76B977106F73D90048097B /* PBXTextBookmark */ = { | ||
| > | 311 | isa = PBXTextBookmark; | ||
| > | 312 | fRef = 08FB7796FE84155DC02AAC07 /* CRDB.m */; | ||
| > | 313 | name = "CRDB.m: 46"; | ||
| > | 314 | rLen = 0; | ||
| > | 315 | rLoc = 1325; | ||
| > | 316 | rType = 0; | ||
| > | 317 | vrLen = 1323; | ||
| > | 318 | vrLoc = 0; | ||
| > | 319 | }; | ||
| > | 320 | 0A76B978106F73D90048097B /* PBXTextBookmark */ = { | ||
| > | 321 | isa = PBXTextBookmark; | ||
| > | 322 | fRef = 0ACEBDFE106E7AD8007FCDBD /* CRDatabase.m */; | ||
| > | 323 | name = "CRDatabase.m: 3"; | ||
| > | 324 | rLen = 0; | ||
| > | 325 | rLoc = 34; | ||
| > | 326 | rType = 0; | ||
| > | 327 | vrLen = 1483; | ||
| > | 328 | vrLoc = 2468; | ||
| > | 329 | }; | ||
| > | 330 | 0A76B979106F73D90048097B /* PBXTextBookmark */ = { | ||
| > | 331 | isa = PBXTextBookmark; | ||
| > | 332 | fRef = 0ACEBDFD106E7AD8007FCDBD /* CRDatabase.h */; | ||
| > | 333 | name = "CRDatabase.h: 41"; | ||
| > | 334 | rLen = 0; | ||
| > | 335 | rLoc = 1007; | ||
| > | 336 | rType = 0; | ||
| > | 337 | vrLen = 1640; | ||
| > | 338 | vrLoc = 38; | ||
| > | 339 | }; | ||
| > | 340 | 0A76B97A106F73D90048097B /* PBXTextBookmark */ = { | ||
| > | 341 | isa = PBXTextBookmark; | ||
| > | 342 | fRef = 0ACEBE03106E7AD8007FCDBD /* README */; | ||
| > | 343 | name = "README: 8"; | ||
| > | 344 | rLen = 0; | ||
| > | 345 | rLoc = 190; | ||
| > | 346 | rType = 0; | ||
| > | 347 | vrLen = 1411; | ||
| > | 348 | vrLoc = 0; | ||
| > | 349 | }; | ||
| > | 350 | 0ACEBDEC106E7A1F007FCDBD /* CRDB */ = { | ||
| > | 351 | isa = PBXExecutable; | ||
| > | 352 | activeArgIndices = ( | ||
| > | 353 | ); | ||
| > | 354 | argumentStrings = ( | ||
| > | 355 | ); | ||
| > | 356 | autoAttachOnCrash = 1; | ||
| > | 357 | breakpointsEnabled = 0; | ||
| > | 358 | configStateDict = { | ||
| > | 359 | }; | ||
| > | 360 | customDataFormattersEnabled = 1; | ||
| > | 361 | dataTipCustomDataFormattersEnabled = 1; | ||
| > | 362 | dataTipShowTypeColumn = 1; | ||
| > | 363 | dataTipSortType = 0; | ||
| > | 364 | debuggerPlugin = GDBDebugging; | ||
| > | 365 | disassemblyDisplayState = 0; | ||
| > | 366 | dylibVariantSuffix = ""; | ||
| > | 367 | enableDebugStr = 1; | ||
| > | 368 | environmentEntries = ( | ||
| > | 369 | ); | ||
| > | 370 | executableSystemSymbolLevel = 0; | ||
| > | 371 | executableUserSymbolLevel = 0; | ||
| > | 372 | libgmallocEnabled = 0; | ||
| > | 373 | name = CRDB; | ||
| > | 374 | savedGlobals = { | ||
| > | 375 | }; | ||
| > | 376 | showTypeColumn = 0; | ||
| > | 377 | sourceDirectories = ( | ||
| > | 378 | ); | ||
| > | 379 | variableFormatDictionary = { | ||
| > | 380 | }; | ||
| > | 381 | }; | ||
| > | 382 | 0ACEBDF0106E7A3E007FCDBD /* Source Control */ = { | ||
| > | 383 | isa = PBXSourceControlManager; | ||
| > | 384 | fallbackIsa = XCSourceControlManager; | ||
| > | 385 | isSCMEnabled = 0; | ||
| > | 386 | scmConfiguration = { | ||
| > | 387 | repositoryNamesForRoots = { | ||
| > | 388 | "" = ""; | ||
| > | 389 | }; | ||
| > | 390 | }; | ||
| > | 391 | }; | ||
| > | 392 | 0ACEBDF1106E7A3E007FCDBD /* Code sense */ = { | ||
| > | 393 | isa = PBXCodeSenseManager; | ||
| > | 394 | indexTemplatePath = ""; | ||
| > | 395 | }; | ||
| > | 396 | 0ACEBDFD106E7AD8007FCDBD /* CRDatabase.h */ = { | ||
| > | 397 | uiCtxt = { | ||
| > | 398 | sepNavIntBoundsRect = "{{0, 0}, {714, 819}}"; | ||
| > | 399 | sepNavSelRange = "{1007, 0}"; | ||
| > | 400 | sepNavVisRange = "{38, 1640}"; | ||
| > | 401 | }; | ||
| > | 402 | }; | ||
| > | 403 | 0ACEBDFE106E7AD8007FCDBD /* CRDatabase.m */ = { | ||
| > | 404 | uiCtxt = { | ||
| > | 405 | sepNavIntBoundsRect = "{{0, 0}, {714, 4966}}"; | ||
| > | 406 | sepNavSelRange = "{34, 0}"; | ||
| > | 407 | sepNavVisRange = "{2468, 1483}"; | ||
| > | 408 | sepNavWindowFrame = "{{15, 83}, {791, 690}}"; | ||
| > | 409 | }; | ||
| > | 410 | }; | ||
| > | 411 | 0ACEBDFF106E7AD8007FCDBD /* CRDatabaseResult.h */ = { | ||
| > | 412 | uiCtxt = { | ||
| > | 413 | sepNavIntBoundsRect = "{{0, 0}, {714, 633}}"; | ||
| > | 414 | sepNavSelRange = "{44, 0}"; | ||
| > | 415 | sepNavVisRange = "{0, 650}"; | ||
| > | 416 | }; | ||
| > | 417 | }; | ||
| > | 418 | 0ACEBE00106E7AD8007FCDBD /* CRDatabaseResult.m */ = { | ||
| > | 419 | uiCtxt = { | ||
| > | 420 | sepNavIntBoundsRect = "{{0, 0}, {714, 715}}"; | ||
| > | 421 | sepNavSelRange = "{44, 0}"; | ||
| > | 422 | sepNavVisRange = "{0, 1001}"; | ||
| > | 423 | }; | ||
| > | 424 | }; | ||
| > | 425 | 0ACEBE01106E7AD8007FCDBD /* CRDatabaseRow.h */ = { | ||
| > | 426 | uiCtxt = { | ||
| > | 427 | sepNavIntBoundsRect = "{{0, 0}, {714, 633}}"; | ||
| > | 428 | sepNavSelRange = "{41, 0}"; | ||
| > | 429 | sepNavVisRange = "{0, 1172}"; | ||
| > | 430 | }; | ||
| > | 431 | }; | ||
| > | 432 | 0ACEBE02106E7AD8007FCDBD /* CRDatabaseRow.m */ = { | ||
| > | 433 | uiCtxt = { | ||
| > | 434 | sepNavIntBoundsRect = "{{0, 0}, {714, 1885}}"; | ||
| > | 435 | sepNavSelRange = "{29, 0}"; | ||
| > | 436 | sepNavVisRange = "{0, 1079}"; | ||
| > | 437 | }; | ||
| > | 438 | }; | ||
| > | 439 | 0ACEBE03106E7AD8007FCDBD /* README */ = { | ||
| > | 440 | uiCtxt = { | ||
| > | 441 | sepNavIntBoundsRect = "{{0, 0}, {714, 702}}"; | ||
| > | 442 | sepNavSelRange = "{190, 0}"; | ||
| > | 443 | sepNavVisRange = "{0, 1411}"; | ||
| > | 444 | }; | ||
| > | 445 | }; | ||
| > | 446 | 32A70AAB03705E1F00C91783 /* CRDB_Prefix.pch */ = { | ||
| > | 447 | uiCtxt = { | ||
| > | 448 | sepNavIntBoundsRect = "{{0, 0}, {714, 633}}"; | ||
| > | 449 | sepNavSelRange = "{0, 0}"; | ||
| > | 450 | sepNavVisRange = "{0, 152}"; | ||
| > | 451 | }; | ||
| > | 452 | }; | ||
| > | 453 | 8DD76F960486AA7600D96B5E /* CRDB */ = { | ||
| > | 454 | activeExec = 0; | ||
| > | 455 | executables = ( | ||
| > | 456 | 0ACEBDEC106E7A1F007FCDBD /* CRDB */, | ||
| > | 457 | ); | ||
| > | 458 | }; | ||
| > | 459 | } | ||
Added CRDB.xcodeproj/project.pbxproj
| Old () | New (3fcb85846ebc30b6) | |||
|---|---|---|---|---|
| > | 1 | // !$*UTF8*$! | ||
| > | 2 | { | ||
| > | 3 | archiveVersion = 1; | ||
| > | 4 | classes = { | ||
| > | 5 | }; | ||
| > | 6 | objectVersion = 45; | ||
| > | 7 | objects = { | ||
| > | 8 | |||
| > | 9 | /* Begin PBXBuildFile section */ | ||
| > | 10 | 0ACEBE04106E7AD9007FCDBD /* CRDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ACEBDFE106E7AD8007FCDBD /* CRDatabase.m */; }; | ||
| > | 11 | 0ACEBE05106E7AD9007FCDBD /* CRDatabaseResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ACEBE00106E7AD8007FCDBD /* CRDatabaseResult.m */; }; | ||
| > | 12 | 0ACEBE06106E7AD9007FCDBD /* CRDatabaseRow.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ACEBE02106E7AD8007FCDBD /* CRDatabaseRow.m */; }; | ||
| > | 13 | 0ACEBF74106E7B66007FCDBD /* libsqlite3.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ACEBF73106E7B66007FCDBD /* libsqlite3.0.dylib */; }; | ||
| > | 14 | 8DD76F9A0486AA7600D96B5E /* CRDB.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* CRDB.m */; settings = {ATTRIBUTES = (); }; }; | ||
| > | 15 | 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; | ||
| > | 16 | /* End PBXBuildFile section */ | ||
| > | 17 | |||
| > | 18 | /* Begin PBXCopyFilesBuildPhase section */ | ||
| > | 19 | 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = { | ||
| > | 20 | isa = PBXCopyFilesBuildPhase; | ||
| > | 21 | buildActionMask = 8; | ||
| > | 22 | dstPath = /usr/share/man/man1/; | ||
| > | 23 | dstSubfolderSpec = 0; | ||
| > | 24 | files = ( | ||
| > | 25 | ); | ||
| > | 26 | runOnlyForDeploymentPostprocessing = 1; | ||
| > | 27 | }; | ||
| > | 28 | /* End PBXCopyFilesBuildPhase section */ | ||
| > | 29 | |||
| > | 30 | /* Begin PBXFileReference section */ | ||
| > | 31 | 08FB7796FE84155DC02AAC07 /* CRDB.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRDB.m; sourceTree = "<group>"; }; | ||
| > | 32 | 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; | ||
| > | 33 | 0A76B950106F68230048097B /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; }; | ||
| > | 34 | 0ACEBDFD106E7AD8007FCDBD /* CRDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRDatabase.h; sourceTree = "<group>"; }; | ||
| > | 35 | 0ACEBDFE106E7AD8007FCDBD /* CRDatabase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRDatabase.m; sourceTree = "<group>"; }; | ||
| > | 36 | 0ACEBDFF106E7AD8007FCDBD /* CRDatabaseResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRDatabaseResult.h; sourceTree = "<group>"; }; | ||
| > | 37 | 0ACEBE00106E7AD8007FCDBD /* CRDatabaseResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRDatabaseResult.m; sourceTree = "<group>"; }; | ||
| > | 38 | 0ACEBE01106E7AD8007FCDBD /* CRDatabaseRow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRDatabaseRow.h; sourceTree = "<group>"; }; | ||
| > | 39 | 0ACEBE02106E7AD8007FCDBD /* CRDatabaseRow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRDatabaseRow.m; sourceTree = "<group>"; }; | ||
| > | 40 | 0ACEBE03106E7AD8007FCDBD /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; | ||
| > | 41 | 0ACEBF73106E7B66007FCDBD /* libsqlite3.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.0.dylib; path = /usr/lib/libsqlite3.0.dylib; sourceTree = "<absolute>"; }; | ||
| > | 42 | 32A70AAB03705E1F00C91783 /* CRDB_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRDB_Prefix.pch; sourceTree = "<group>"; }; | ||
| > | 43 | 8DD76FA10486AA7600D96B5E /* CRDB */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CRDB; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
| > | 44 | /* End PBXFileReference section */ | ||
| > | 45 | |||
| > | 46 | /* Begin PBXFrameworksBuildPhase section */ | ||
| > | 47 | 8DD76F9B0486AA7600D96B5E /* Frameworks */ = { | ||
| > | 48 | isa = PBXFrameworksBuildPhase; | ||
| > | 49 | buildActionMask = 2147483647; | ||
| > | 50 | files = ( | ||
| > | 51 | 8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */, | ||
| > | 52 | 0ACEBF74106E7B66007FCDBD /* libsqlite3.0.dylib in Frameworks */, | ||
| > | 53 | ); | ||
| > | 54 | runOnlyForDeploymentPostprocessing = 0; | ||
| > | 55 | }; | ||
| > | 56 | /* End PBXFrameworksBuildPhase section */ | ||
| > | 57 | |||
| > | 58 | /* Begin PBXGroup section */ | ||
| > | 59 | 08FB7794FE84155DC02AAC07 /* CRDB */ = { | ||
| > | 60 | isa = PBXGroup; | ||
| > | 61 | children = ( | ||
| > | 62 | 0ACEBDF5106E7ACA007FCDBD /* CRDatabase */, | ||
| > | 63 | 08FB7795FE84155DC02AAC07 /* Test Source */, | ||
| > | 64 | 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */, | ||
| > | 65 | 1AB674ADFE9D54B511CA2CBB /* Products */, | ||
| > | 66 | ); | ||
| > | 67 | name = CRDB; | ||
| > | 68 | sourceTree = "<group>"; | ||
| > | 69 | }; | ||
| > | 70 | 08FB7795FE84155DC02AAC07 /* Test Source */ = { | ||
| > | 71 | isa = PBXGroup; | ||
| > | 72 | children = ( | ||
| > | 73 | 32A70AAB03705E1F00C91783 /* CRDB_Prefix.pch */, | ||
| > | 74 | 08FB7796FE84155DC02AAC07 /* CRDB.m */, | ||
| > | 75 | ); | ||
| > | 76 | name = "Test Source"; | ||
| > | 77 | sourceTree = "<group>"; | ||
| > | 78 | }; | ||
| > | 79 | 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = { | ||
| > | 80 | isa = PBXGroup; | ||
| > | 81 | children = ( | ||
| > | 82 | 08FB779EFE84155DC02AAC07 /* Foundation.framework */, | ||
| > | 83 | 0ACEBF73106E7B66007FCDBD /* libsqlite3.0.dylib */, | ||
| > | 84 | ); | ||
| > | 85 | name = "External Frameworks and Libraries"; | ||
| > | 86 | sourceTree = "<group>"; | ||
| > | 87 | }; | ||
| > | 88 | 0ACEBDF5106E7ACA007FCDBD /* CRDatabase */ = { | ||
| > | 89 | isa = PBXGroup; | ||
| > | 90 | children = ( | ||
| > | 91 | 0ACEBDFD106E7AD8007FCDBD /* CRDatabase.h */, | ||
| > | 92 | 0ACEBDFE106E7AD8007FCDBD /* CRDatabase.m */, | ||
| > | 93 | 0ACEBDFF106E7AD8007FCDBD /* CRDatabaseResult.h */, | ||
| > | 94 | 0ACEBE00106E7AD8007FCDBD /* CRDatabaseResult.m */, | ||
| > | 95 | 0ACEBE01106E7AD8007FCDBD /* CRDatabaseRow.h */, | ||
| > | 96 | 0ACEBE02106E7AD8007FCDBD /* CRDatabaseRow.m */, | ||
| > | 97 | 0ACEBE03106E7AD8007FCDBD /* README */, | ||
| > | 98 | 0A76B950106F68230048097B /* LICENSE */, | ||
| > | 99 | ); | ||
| > | 100 | name = CRDatabase; | ||
| > | 101 | sourceTree = "<group>"; | ||
| > | 102 | }; | ||
| > | 103 | 1AB674ADFE9D54B511CA2CBB /* Products */ = { | ||
| > | 104 | isa = PBXGroup; | ||
| > | 105 | children = ( | ||
| > | 106 | 8DD76FA10486AA7600D96B5E /* CRDB */, | ||
| > | 107 | ); | ||
| > | 108 | name = Products; | ||
| > | 109 | sourceTree = "<group>"; | ||
| > | 110 | }; | ||
| > | 111 | /* End PBXGroup section */ | ||
| > | 112 | |||
| > | 113 | /* Begin PBXNativeTarget section */ | ||
| > | 114 | 8DD76F960486AA7600D96B5E /* CRDB */ = { | ||
| > | 115 | isa = PBXNativeTarget; | ||
| > | 116 | buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "CRDB" */; | ||
| > | 117 | buildPhases = ( | ||
| > | 118 | 8DD76F990486AA7600D96B5E /* Sources */, | ||
| > | 119 | 8DD76F9B0486AA7600D96B5E /* Frameworks */, | ||
| > | 120 | 8DD76F9E0486AA7600D96B5E /* CopyFiles */, | ||
| > | 121 | ); | ||
| > | 122 | buildRules = ( | ||
| > | 123 | ); | ||
| > | 124 | dependencies = ( | ||
| > | 125 | ); | ||
| > | 126 | name = CRDB; | ||
| > | 127 | productInstallPath = "$(HOME)/bin"; | ||
| > | 128 | productName = CRDB; | ||
| > | 129 | productReference = 8DD76FA10486AA7600D96B5E /* CRDB */; | ||
| > | 130 | productType = "com.apple.product-type.tool"; | ||
| > | 131 | }; | ||
| > | 132 | /* End PBXNativeTarget section */ | ||
| > | 133 | |||
| > | 134 | /* Begin PBXProject section */ | ||
| > | 135 | 08FB7793FE84155DC02AAC07 /* Project object */ = { | ||
| > | 136 | isa = PBXProject; | ||
| > | 137 | buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "CRDB" */; | ||
| > | 138 | compatibilityVersion = "Xcode 3.1"; | ||
| > | 139 | hasScannedForEncodings = 1; | ||
| > | 140 | mainGroup = 08FB7794FE84155DC02AAC07 /* CRDB */; | ||
| > | 141 | projectDirPath = ""; | ||
| > | 142 | projectRoot = ""; | ||
| > | 143 | targets = ( | ||
| > | 144 | 8DD76F960486AA7600D96B5E /* CRDB */, | ||
| > | 145 | ); | ||
| > | 146 | }; | ||
| > | 147 | /* End PBXProject section */ | ||
| > | 148 | |||
| > | 149 | /* Begin PBXSourcesBuildPhase section */ | ||
| > | 150 | 8DD76F990486AA7600D96B5E /* Sources */ = { | ||
| > | 151 | isa = PBXSourcesBuildPhase; | ||
| > | 152 | buildActionMask = 2147483647; | ||
| > | 153 | files = ( | ||
| > | 154 | 8DD76F9A0486AA7600D96B5E /* CRDB.m in Sources */, | ||
| > | 155 | 0ACEBE04106E7AD9007FCDBD /* CRDatabase.m in Sources */, | ||
| > | 156 | 0ACEBE05106E7AD9007FCDBD /* CRDatabaseResult.m in Sources */, | ||
| > | 157 | 0ACEBE06106E7AD9007FCDBD /* CRDatabaseRow.m in Sources */, | ||
| > | 158 | ); | ||
| > | 159 | runOnlyForDeploymentPostprocessing = 0; | ||
| > | 160 | }; | ||
| > | 161 | /* End PBXSourcesBuildPhase section */ | ||
| > | 162 | |||
| > | 163 | /* Begin XCBuildConfiguration section */ | ||
| > | 164 | 1DEB927508733DD40010E9CD /* Debug */ = { | ||
| > | 165 | isa = XCBuildConfiguration; | ||
| > | 166 | buildSettings = { | ||
| > | 167 | ALWAYS_SEARCH_USER_PATHS = NO; | ||
| > | 168 | COPY_PHASE_STRIP = NO; | ||
| > | 169 | GCC_DYNAMIC_NO_PIC = NO; | ||
| > | 170 | GCC_ENABLE_FIX_AND_CONTINUE = YES; | ||
| > | 171 | GCC_ENABLE_OBJC_GC = required; | ||
| > | 172 | GCC_MODEL_TUNING = G5; | ||
| > | 173 | GCC_OPTIMIZATION_LEVEL = 0; | ||
| > | 174 | GCC_PRECOMPILE_PREFIX_HEADER = YES; | ||
| > | 175 | GCC_PREFIX_HEADER = CRDB_Prefix.pch; | ||
| > | 176 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; | ||
| > | 177 | INSTALL_PATH = /usr/local/bin; | ||
| > | 178 | PRODUCT_NAME = CRDB; | ||
| > | 179 | }; | ||
| > | 180 | name = Debug; | ||
| > | 181 | }; | ||
| > | 182 | 1DEB927608733DD40010E9CD /* Release */ = { | ||
| > | 183 | isa = XCBuildConfiguration; | ||
| > | 184 | buildSettings = { | ||
| > | 185 | ALWAYS_SEARCH_USER_PATHS = NO; | ||
| > | 186 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
| > | 187 | GCC_ENABLE_OBJC_GC = required; | ||
| > | 188 | GCC_MODEL_TUNING = G5; | ||
| > | 189 | GCC_PRECOMPILE_PREFIX_HEADER = YES; | ||
| > | 190 | GCC_PREFIX_HEADER = CRDB_Prefix.pch; | ||
| > | 191 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; | ||
| > | 192 | INSTALL_PATH = /usr/local/bin; | ||
| > | 193 | PRODUCT_NAME = CRDB; | ||
| > | 194 | }; | ||
| > | 195 | name = Release; | ||
| > | 196 | }; | ||
| > | 197 | 1DEB927908733DD40010E9CD /* Debug */ = { | ||
| > | 198 | isa = XCBuildConfiguration; | ||
| > | 199 | buildSettings = { | ||
| > | 200 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; | ||
| > | 201 | GCC_C_LANGUAGE_STANDARD = gnu99; | ||
| > | 202 | GCC_OPTIMIZATION_LEVEL = 0; | ||
| > | 203 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | ||
| > | 204 | GCC_WARN_UNUSED_VARIABLE = YES; | ||
| > | 205 | ONLY_ACTIVE_ARCH = YES; | ||
| > | 206 | PREBINDING = NO; | ||
| > | 207 | SDKROOT = macosx10.6; | ||
| > | 208 | }; | ||
| > | 209 | name = Debug; | ||
| > | 210 | }; | ||
| > | 211 | 1DEB927A08733DD40010E9CD /* Release */ = { | ||
| > | 212 | isa = XCBuildConfiguration; | ||
| > | 213 | buildSettings = { | ||
| > | 214 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; | ||
| > | 215 | GCC_C_LANGUAGE_STANDARD = gnu99; | ||
| > | 216 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | ||
| > | 217 | GCC_WARN_UNUSED_VARIABLE = YES; | ||
| > | 218 | PREBINDING = NO; | ||
| > | 219 | SDKROOT = macosx10.6; | ||
| > | 220 | }; | ||
| > | 221 | name = Release; | ||
| > | 222 | }; | ||
| > | 223 | /* End XCBuildConfiguration section */ | ||
| > | 224 | |||
| > | 225 | /* Begin XCConfigurationList section */ | ||
| > | 226 | 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "CRDB" */ = { | ||
| > | 227 | isa = XCConfigurationList; | ||
| > | 228 | buildConfigurations = ( | ||
| > | 229 | 1DEB927508733DD40010E9CD /* Debug */, | ||
| > | 230 | 1DEB927608733DD40010E9CD /* Release */, | ||
| > | 231 | ); | ||
| > | 232 | defaultConfigurationIsVisible = 0; | ||
| > | 233 | defaultConfigurationName = Release; | ||
| > | 234 | }; | ||
| > | 235 | 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "CRDB" */ = { | ||
| > | 236 | isa = XCConfigurationList; | ||
| > | 237 | buildConfigurations = ( | ||
| > | 238 | 1DEB927908733DD40010E9CD /* Debug */, | ||
| > | 239 | 1DEB927A08733DD40010E9CD /* Release */, | ||
| > | 240 | ); | ||
| > | 241 | defaultConfigurationIsVisible = 0; | ||
| > | 242 | defaultConfigurationName = Release; | ||
| > | 243 | }; | ||
| > | 244 | /* End XCConfigurationList section */ | ||
| > | 245 | }; | ||
| > | 246 | rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; | ||
| > | 247 | } | ||
Added CRDB_Prefix.pch
| Old () | New (385dc992f3ff1f0f) | |||
|---|---|---|---|---|
| > | 1 | // | ||
| > | 2 | // Prefix header for all source files of the 'EgoDB' target in the 'EgoDB' project. | ||
| > | 3 | // | ||
| > | 4 | |||
| > | 5 | #ifdef __OBJC__ | ||
| > | 6 | #import <Foundation/Foundation.h> | ||
| > | 7 | #endif | ||
Added CRDatabase.h
| Old () | New (936dc300eac94487) | |||
|---|---|---|---|---|
| > | 1 | // | ||
| > | 2 | // CRDatabase.h | ||
| > | 3 | // CRDatabase | ||
| > | 4 | // | ||
| > | 5 | |||
| > | 6 | #import <Foundation/Foundation.h> | ||
| > | 7 | #import "CRDatabaseResult.h" | ||
| > | 8 | #import "CRDatabaseRow.h" | ||
| > | 9 | #import <sqlite3.h> | ||
| > | 10 | |||
| > | 11 | |||
| > | 12 | @interface CRDatabase : NSObject { | ||
| > | 13 | @protected | ||
| > | 14 | NSURL* databaseURL_; | ||
| > | 15 | dispatch_queue_t lockQueue_; | ||
| > | 16 | |||
| > | 17 | @private | ||
| > | 18 | sqlite3* db_; | ||
| > | 19 | BOOL isOpened_; | ||
| > | 20 | NSInteger busyRetryAttempts_; | ||
| > | 21 | } | ||
| > | 22 | // Number of times to retry execution if database is busy. | ||
| > | 23 | // Retries every 20 usec, so 50 attempts last about 1 second. | ||
| > | 24 | // (default is 50) | ||
| > | 25 | @property(assign) NSInteger busyRetryAttempts; | ||
| > | 26 | |||
| > | 27 | + (id)databaseWithURL:(NSURL *)url; | ||
| > | 28 | - (id)initWithURL:(NSURL *)url; | ||
| > | 29 | |||
| > | 30 | // Open database (Not thread-safe) | ||
| > | 31 | // If database has been opened, it will not open again, just returns YES. | ||
| > | 32 | - (BOOL)open; | ||
| > | 33 | |||
| > | 34 | // Close database (Not thread-safe) | ||
| > | 35 | - (void)close; | ||
| > | 36 | |||
| > | 37 | // Execute insert and return last row id (or NSNotFound if update failed) | ||
| > | 38 | - (NSInteger)executeInsert:(NSString *)sql withArguments:(NSArray *)args; | ||
| > | 39 | // Same thing, but accepts only one argument for clarity | ||
| > | 40 | - (NSInteger)executeInsert:(NSString *)sql withArgument:(id)arg; | ||
| > | 41 | |||
| > | 42 | // Execute update and return YES (success) or NO (failure) | ||
| > | 43 | // You do deletes also with this method. | ||
| > | 44 | - (BOOL)executeUpdate:(NSString *)sql withArguments:(NSArray *)args; | ||
| > | 45 | // Same thing, but accepts only one argument for clarity | ||
| > | 46 | - (BOOL)executeUpdate:(NSString *)sql withArgument:(id)arg; | ||
| > | 47 | |||
| > | 48 | // Execute query and return |CRDatabaseResult|. | ||
| > | 49 | // DO NOT use executeQuery for inserts or updates -- use appropriate methods | ||
| > | 50 | // for this, because they disable sudden termination | ||
| > | 51 | - (CRDatabaseResult *)executeQuery:(NSString*)sql withArguments:(NSArray *)args; | ||
| > | 52 | // Same thing, but accepts only one argument for clarity | ||
| > | 53 | - (CRDatabaseResult *)executeQuery:(NSString *)sql withArgument:(id)arg; | ||
| > | 54 | |||
| > | 55 | // Asyncroniously execute query and call block with results. | ||
| > | 56 | // Block is running under the global queue, so to make updates to GUI | ||
| > | 57 | // enclose relevant code in block with main queue dispatch. | ||
| > | 58 | - (void)asyncExecuteQuery:(NSString *)sql | ||
| > | 59 | withArguments:(NSArray *)args | ||
| > | 60 | doWithResult:(void (^)(CRDatabaseResult *))block; | ||
| > | 61 | |||
| > | 62 | // Do not use the following methods with threads! | ||
| > | 63 | // CRDatabaseResult contains these values if you need them | ||
| > | 64 | - (NSString*)lastErrorMessage; | ||
| > | 65 | - (BOOL)hadError; | ||
| > | 66 | - (int)lastErrorCode; | ||
| > | 67 | |||
| > | 68 | @end | ||
Added CRDatabase.m
| Old () | New (04019fa0f46eeaec) | |||
|---|---|---|---|---|
| > | 1 | // | ||
| > | 2 | // CRDatabase.m | ||
| > | 3 | // CRDatabase | ||
| > | 4 | // | ||
| > | 5 | |||
| > | 6 | #import "CRDatabase.h" | ||
| > | 7 | |||
| > | 8 | @interface CRDatabase () | ||
| > | 9 | @property(assign) BOOL isOpened; | ||
| > | 10 | - (sqlite3_stmt *)prepareStatementForSQL:(NSString *)sql; | ||
| > | 11 | - (BOOL)bindStatement:(sqlite3_stmt*)statement toArguments:(NSArray *)args; | ||
| > | 12 | - (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt *)pStmt; | ||
| > | 13 | @end | ||
| > | 14 | |||
| > | 15 | @implementation CRDatabase | ||
| > | 16 | |||
| > | 17 | @synthesize isOpened = isOpened_; | ||
| > | 18 | @synthesize busyRetryAttempts = busyRetryAttempts_; | ||
| > | 19 | |||
| > | 20 | + (id)databaseWithURL:(NSURL*)anURL | ||
| > | 21 | { | ||
| > | 22 | return [[[[self class] alloc] initWithURL:anURL] autorelease]; | ||
| > | 23 | } | ||
| > | 24 | |||
| > | 25 | |||
| > | 26 | - (id)initWithURL:(NSURL *)anURL | ||
| > | 27 | { | ||
| > | 28 | if (![super init]) | ||
| > | 29 | return nil; | ||
| > | 30 | databaseURL_ = [anURL retain]; | ||
| > | 31 | lockQueue_ = dispatch_queue_create("com.codingrobots.CRDatabase.lockQueue", NULL); | ||
| > | 32 | busyRetryAttempts_ = 50; | ||
| > | 33 | return self; | ||
| > | 34 | } | ||
| > | 35 | |||
| > | 36 | - (BOOL)open | ||
| > | 37 | { | ||
| > | 38 | if (self.isOpened) | ||
| > | 39 | return YES; | ||
| > | 40 | |||
| > | 41 | int err = sqlite3_open([[databaseURL_ path] fileSystemRepresentation], &db_); | ||
| > | 42 | |||
| > | 43 | if(err != SQLITE_OK) { | ||
| > | 44 | NSLog(@"Error opening DB \"%@\": %d", [NSURL description], err); | ||
| > | 45 | return NO; | ||
| > | 46 | } | ||
| > | 47 | |||
| > | 48 | self.isOpened = YES; | ||
| > | 49 | return YES; | ||
| > | 50 | } | ||
| > | 51 | |||
| > | 52 | - (void)close | ||
| > | 53 | { | ||
| > | 54 | if (!db_) | ||
| > | 55 | return; | ||
| > | 56 | sqlite3_close(db_); | ||
| > | 57 | self.isOpened = NO; | ||
| > | 58 | } | ||
| > | 59 | |||
| > | 60 | - (NSInteger)executeInsert:(NSString *)sql withArgument:(id)arg | ||
| > | 61 | { | ||
| > | 62 | return [self executeInsert:sql withArguments:[NSArray arrayWithObject:arg]]; | ||
| > | 63 | } | ||
| > | 64 | |||
| > | 65 | - (NSInteger)executeInsert:(NSString *)sql withArguments:(NSArray *)args | ||
| > | 66 | { | ||
| > | 67 | __block NSInteger result = NSNotFound; | ||
| > | 68 | [[NSProcessInfo processInfo] disableSuddenTermination]; | ||
| > | 69 | dispatch_sync(lockQueue_, ^{ | ||
| > | 70 | |||
| > | 71 | if (![self open]) | ||
| > | 72 | return; | ||
| > | 73 | |||
| > | 74 | sqlite3_stmt *statement = [self prepareStatementForSQL:sql]; | ||
| > | 75 | if (!statement) | ||
| > | 76 | return; | ||
| > | 77 | |||
| > | 78 | if (![self bindStatement:statement toArguments:args]) { | ||
| > | 79 | sqlite3_finalize(statement); | ||
| > | 80 | return; | ||
| > | 81 | } | ||
| > | 82 | |||
| > | 83 | int returnCode = sqlite3_step(statement); | ||
| > | 84 | |||
| > | 85 | if (SQLITE_BUSY == returnCode) { | ||
| > | 86 | NSLog(@"[EGODatabase] Query Failed, Database Busy:\n%@\n\n", sql); | ||
| > | 87 | } | ||
| > | 88 | else if (SQLITE_DONE == returnCode || SQLITE_ROW == returnCode) { | ||
| > | 89 | // nothing? | ||
| > | 90 | } | ||
| > | 91 | else if (SQLITE_ERROR == returnCode) { | ||
| > | 92 | NSLog(@"sqlite3_step Failed: (%d: %s) SQLITE_ERROR\n%@\n\n", | ||
| > | 93 | returnCode, [self lastErrorMessage], sql); | ||
| > | 94 | } | ||
| > | 95 | else if (SQLITE_MISUSE == returnCode) { | ||
| > | 96 | NSLog(@"sqlite3_step Failed: (%d: %s) SQLITE_MISUSE\n%@\n\n", | ||
| > | 97 | returnCode, [self lastErrorMessage], sql); | ||
| > | 98 | } | ||
| > | 99 | else { | ||
| > | 100 | NSLog(@"sqlite3_step Failed: (%d: %s) UNKNOWN_ERROR\n%@\n\n", | ||
| > | 101 | returnCode, [self lastErrorMessage], sql); | ||
| > | 102 | } | ||
| > | 103 | returnCode = sqlite3_finalize(statement); | ||
| > | 104 | |||
| > | 105 | if (returnCode == SQLITE_OK) | ||
| > | 106 | result = sqlite3_last_insert_rowid(db_); | ||
| > | 107 | }); | ||
| > | 108 | [[NSProcessInfo processInfo] enableSuddenTermination]; | ||
| > | 109 | return result; | ||
| > | 110 | } | ||
| > | 111 | |||
| > | 112 | - (BOOL)executeUpdate:(NSString *)sql withArgument:(id)arg | ||
| > | 113 | { | ||
| > | 114 | return [self executeUpdate:sql withArguments:[NSArray arrayWithObject:arg]]; | ||
| > | 115 | } | ||
| > | 116 | |||
| > | 117 | - (BOOL)executeUpdate:(NSString *)sql withArguments:(NSArray *)args | ||
| > | 118 | { | ||
| > | 119 | __block BOOL result = NO; | ||
| > | 120 | [[NSProcessInfo processInfo] disableSuddenTermination]; | ||
| > | 121 | dispatch_sync(lockQueue_, ^{ | ||
| > | 122 | |||
| > | 123 | if (![self open]) | ||
| > | 124 | return; | ||
| > | 125 | |||
| > | 126 | sqlite3_stmt *statement = [self prepareStatementForSQL:sql]; | ||
| > | 127 | if (!statement) | ||
| > | 128 | return; | ||
| > | 129 | |||
| > | 130 | if (![self bindStatement:statement toArguments:args]) { | ||
| > | 131 | sqlite3_finalize(statement); | ||
| > | 132 | return; | ||
| > | 133 | } | ||
| > | 134 | |||
| > | 135 | int returnCode = sqlite3_step(statement); | ||
| > | 136 | |||
| > | 137 | if (SQLITE_BUSY == returnCode) { | ||
| > | 138 | NSLog(@"[EGODatabase] Query Failed, Database Busy:\n%@\n\n", sql); | ||
| > | 139 | } else if (SQLITE_DONE == returnCode || SQLITE_ROW == returnCode) { | ||
| > | 140 | // nothing? | ||
| > | 141 | } else if (SQLITE_ERROR == returnCode) { | ||
| > | 142 | NSLog(@"sqlite3_step Failed: (%d: %s) SQLITE_ERROR\n%@\n\n", returnCode, [self lastErrorMessage], sql); | ||
| > | 143 | } else if (SQLITE_MISUSE == returnCode) { | ||
| > | 144 | NSLog(@"sqlite3_step Failed: (%d: %s) SQLITE_MISUSE\n%@\n\n", returnCode, [self lastErrorMessage], sql); | ||
| > | 145 | } else { | ||
| > | 146 | NSLog(@"sqlite3_step Failed: (%d: %s) UNKNOWN_ERROR\n%@\n\n", returnCode, [self lastErrorMessage], sql); | ||
| > | 147 | } | ||
| > | 148 | |||
| > | 149 | returnCode = sqlite3_finalize(statement); | ||
| > | 150 | result = (returnCode == SQLITE_OK); | ||
| > | 151 | }); | ||
| > | 152 | [[NSProcessInfo processInfo] enableSuddenTermination]; | ||
| > | 153 | return result; | ||
| > | 154 | } | ||
| > | 155 | |||
| > | 156 | |||
| > | 157 | |||
| > | 158 | - (void)asyncExecuteQuery:(NSString *)sql withArguments:(NSArray *)args | ||
| > | 159 | doWithResult:(void (^)(CRDatabaseResult *))block; | ||
| > | 160 | { | ||
| > | 161 | dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ | ||
| > | 162 | block([self executeQuery:sql withArguments:args]); | ||
| > | 163 | }); | ||
| > | 164 | } | ||
| > | 165 | |||
| > | 166 | - (CRDatabaseResult *)executeQuery:(NSString *)sql withArgument:(id)arg | ||
| > | 167 | { | ||
| > | 168 | return [self executeQuery:sql withArguments:[NSArray arrayWithObject:arg]]; | ||
| > | 169 | } | ||
| > | 170 | |||
| > | 171 | |||
| > | 172 | - (CRDatabaseResult *)executeQuery:(NSString*)sql withArguments:(NSArray *)args; | ||
| > | 173 | { | ||
| > | 174 | __block CRDatabaseResult *result = [[[CRDatabaseResult alloc] init] autorelease]; | ||
| > | 175 | dispatch_sync(lockQueue_, ^{ | ||
| > | 176 | |||
| > | 177 | if (![self open]) | ||
| > | 178 | return; | ||
| > | 179 | |||
| > | 180 | sqlite3_stmt *statement = [self prepareStatementForSQL:sql]; | ||
| > | 181 | result.errorCode = [self lastErrorCode]; | ||
| > | 182 | result.errorMessage = [self lastErrorMessage]; | ||
| > | 183 | if (!statement) | ||
| > | 184 | return; | ||
| > | 185 | |||
| > | 186 | if (![self bindStatement:statement toArguments:args]) { | ||
| > | 187 | sqlite3_finalize(statement); | ||
| > | 188 | return; | ||
| > | 189 | } | ||
| > | 190 | |||
| > | 191 | // Retrieve columns | ||
| > | 192 | int columnCount = sqlite3_column_count(statement); | ||
| > | 193 | int col; | ||
| > | 194 | |||
| > | 195 | for (col = 0; col < columnCount; col++) { | ||
| > | 196 | const char *columnName = sqlite3_column_name(statement, col); | ||
| > | 197 | if (columnName != NULL) | ||
| > | 198 | [result.columnNames addObject:[NSString stringWithUTF8String:columnName]]; | ||
| > | 199 | else | ||
| > | 200 | [result.columnNames addObject:[NSString stringWithFormat:@"%d", col]]; | ||
| > | 201 | |||
| > | 202 | const char *declType = sqlite3_column_decltype(statement, col); | ||
| > | 203 | if(declType != NULL) | ||
| > | 204 | [result.columnTypes addObject:[NSString stringWithUTF8String:declType]]; | ||
| > | 205 | else | ||
| > | 206 | [result.columnTypes addObject:@""]; | ||
| > | 207 | } | ||
| > | 208 | |||
| > | 209 | while (sqlite3_step(statement) == SQLITE_ROW) { | ||
| > | 210 | CRDatabaseRow *row = [[CRDatabaseRow alloc] initWithDatabaseResult:result]; | ||
| > | 211 | for (col = 0; col < columnCount; col++) { | ||
| > | 212 | |||
| > | 213 | switch (sqlite3_column_type(statement, col)) { | ||
| > | 214 | |||
| > | 215 | case SQLITE_INTEGER: { | ||
| > | 216 | NSInteger value = sqlite3_column_int64(statement, col); | ||
| > | 217 | [row.columnData addObject:[NSNumber numberWithInteger:value]]; | ||
| > | 218 | break; | ||
| > | 219 | } | ||
| > | 220 | |||
| > | 221 | case SQLITE_FLOAT: { | ||
| > | 222 | double value = sqlite3_column_double(statement, col); | ||
| > | 223 | [row.columnData addObject:[NSNumber numberWithDouble:value]]; | ||
| > | 224 | break; | ||
| > | 225 | } | ||
| > | 226 | |||
| > | 227 | case SQLITE_TEXT: { | ||
| > | 228 | int dataSize = sqlite3_column_bytes(statement, col); | ||
| > | 229 | const unsigned char *value = sqlite3_column_text(statement, col); | ||
| > | 230 | if (dataSize > 0 && value != NULL) | ||
| > | 231 | [row.columnData addObject:[NSString stringWithUTF8String:(char *)value]]; | ||
| > | 232 | else | ||
| > | 233 | [row.columnData addObject:@""]; | ||
| > | 234 | break; | ||
| > | 235 | } | ||
| > | 236 | |||
| > | 237 | case SQLITE_NULL: { | ||
| > | 238 | [row.columnData addObject:[NSNull null]]; | ||
| > | 239 | break; | ||
| > | 240 | } | ||
| > | 241 | |||
| > | 242 | case SQLITE_BLOB: // same as default | ||
| > | 243 | default: { | ||
| > | 244 | int dataSize = sqlite3_column_bytes(statement, col); | ||
| > | 245 | const void *blob = sqlite3_column_blob(statement, col); | ||
| > | 246 | if (dataSize > 0 && blob != NULL) { | ||
| > | 247 | NSMutableData *data = [NSMutableData dataWithBytes:blob length:dataSize]; | ||
| > | 248 | [row.columnData addObject:data]; | ||
| > | 249 | } | ||
| > | 250 | else | ||
| > | 251 | [row.columnData addObject:[NSNull null]]; | ||
| > | 252 | } | ||
| > | 253 | } // switch | ||
| > | 254 | } | ||
| > | 255 | [result addRow:row]; | ||
| > | 256 | [row release]; | ||
| > | 257 | } | ||
| > | 258 | sqlite3_finalize(statement); | ||
| > | 259 | }); // dispatch_sync block | ||
| > | 260 | return result; | ||
| > | 261 | } | ||
| > | 262 | |||
| > | 263 | - (NSString *)lastErrorMessage | ||
| > | 264 | { | ||
| > | 265 | if ([self hadError]) | ||
| > | 266 | return [NSString stringWithUTF8String:sqlite3_errmsg(db_)]; | ||
| > | 267 | else | ||
| > | 268 | return nil; | ||
| > | 269 | } | ||
| > | 270 | |||
| > | 271 | - (BOOL)hadError | ||
| > | 272 | { | ||
| > | 273 | return [self lastErrorCode] != SQLITE_OK; | ||
| > | 274 | } | ||
| > | 275 | |||
| > | 276 | - (int)lastErrorCode | ||
| > | 277 | { | ||
| > | 278 | return sqlite3_errcode(db_); | ||
| > | 279 | } | ||
| > | 280 | |||
| > | 281 | |||
| > | 282 | - (sqlite3_stmt *)prepareStatementForSQL:(NSString *)sql | ||
| > | 283 | { | ||
| > | 284 | int returnCode = 0; | ||
| > | 285 | sqlite3_stmt *statement = NULL; | ||
| > | 286 | NSInteger numberOfRetries = 0; | ||
| > | 287 | BOOL retry; | ||
| > | 288 | |||
| > | 289 | do { | ||
| > | 290 | retry = NO; | ||
| > | 291 | |||
| > | 292 | returnCode = sqlite3_prepare_v2(db_, [sql UTF8String], -1, &statement, 0); | ||
| > | 293 | |||
| > | 294 | if (SQLITE_BUSY == returnCode) { | ||
| > | 295 | retry = YES; | ||
| > | 296 | usleep(20); | ||
| > | 297 | if (busyRetryAttempts_ && (numberOfRetries++ > busyRetryAttempts_)) { | ||
| > | 298 | NSLog(@"%s:%d Database busy (%@)", __FUNCTION__, __LINE__, | ||
| > | 299 | [databaseURL_ description]); | ||
| > | 300 | sqlite3_finalize(statement); | ||
| > | 301 | return NULL; | ||
| > | 302 | } | ||
| > | 303 | } | ||
| > | 304 | else if (SQLITE_OK != returnCode) { | ||
| > | 305 | NSLog(@"%s:%d Query Failed, Error: %d \"%@\"\n%@\n\n", __FUNCTION__, | ||
| > | 306 | __LINE__, [self lastErrorCode], [self lastErrorMessage], sql); | ||
| > | 307 | sqlite3_finalize(statement); | ||
| > | 308 | return NULL; | ||
| > | 309 | } | ||
| > | 310 | } while (retry); | ||
| > | 311 | return statement; | ||
| > | 312 | } | ||
| > | 313 | |||
| > | 314 | - (BOOL)bindStatement:(sqlite3_stmt *)statement toArguments:(NSArray *)args | ||
| > | 315 | { | ||
| > | 316 | if (!args && sqlite3_bind_parameter_count(statement) == 0) | ||
| > | 317 | return YES; | ||
| > | 318 | |||
| > | 319 | if (!args || [args count] != sqlite3_bind_parameter_count(statement)) { | ||
| > | 320 | NSLog(@"'?' count doesn't correspond to arguments count in \"%s\"", | ||
| > | 321 | sqlite3_sql(statement)); | ||
| > | 322 | return NO; | ||
| > | 323 | } | ||
| > | 324 | |||
| > | 325 | int index = 0; | ||
| > | 326 | for (id obj in args) { | ||
| > | 327 | [self bindObject:obj toColumn:++index inStatement:statement]; | ||
| > | 328 | } | ||
| > | 329 | return YES; | ||
| > | 330 | } | ||
| > | 331 | |||
| > | 332 | - (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt | ||
| > | 333 | { | ||
| > | 334 | if ((!obj) || ((NSNull *)obj == [NSNull null])) { | ||
| > | 335 | sqlite3_bind_null(pStmt, idx); | ||
| > | 336 | } else if ([obj isKindOfClass:[NSData class]]) { | ||
| > | 337 | sqlite3_bind_blob(pStmt, idx, [obj bytes], [obj length], SQLITE_STATIC); | ||
| > | 338 | } else if ([obj isKindOfClass:[NSDate class]]) { | ||
| > | 339 | sqlite3_bind_double(pStmt, idx, [obj timeIntervalSince1970]); | ||
| > | 340 | } else if ([obj isKindOfClass:[NSNumber class]]) { | ||
| > | 341 | if (strcmp([obj objCType], @encode(BOOL)) == 0) { | ||
| > | 342 | sqlite3_bind_int(pStmt, idx, ([obj boolValue] ? 1 : 0)); | ||
| > | 343 | } else if (strcmp([obj objCType], @encode(int)) == 0) { | ||
| > | 344 | sqlite3_bind_int64(pStmt, idx, [obj longValue]); | ||
| > | 345 | } else if (strcmp([obj objCType], @encode(long)) == 0) { | ||
| > | 346 | sqlite3_bind_int64(pStmt, idx, [obj longValue]); | ||
| > | 347 | } else if (strcmp([obj objCType], @encode(float)) == 0) { | ||
| > | 348 | sqlite3_bind_double(pStmt, idx, [obj floatValue]); | ||
| > | 349 | } else if (strcmp([obj objCType], @encode(double)) == 0) { | ||
| > | 350 | sqlite3_bind_double(pStmt, idx, [obj doubleValue]); | ||
| > | 351 | } else { | ||
| > | 352 | sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_STATIC); | ||
| > | 353 | } | ||
| > | 354 | } else { | ||
| > | 355 | sqlite3_bind_text(pStmt, idx, [[obj description] UTF8String], -1, SQLITE_STATIC); | ||
| > | 356 | } | ||
| > | 357 | } | ||
| > | 358 | |||
| > | 359 | - (void)dealloc | ||
| > | 360 | { | ||
| > | 361 | [self close]; | ||
| > | 362 | [databaseURL_ release]; | ||
| > | 363 | dispatch_release(lockQueue_); | ||
| > | 364 | [super dealloc]; | ||
| > | 365 | } | ||
| > | 366 | |||
| > | 367 | - (void)finalize | ||
| > | 368 | { | ||
| > | 369 | [self close]; | ||
| > | 370 | dispatch_release(lockQueue_); | ||
| > | 371 | [super finalize]; | ||
| > | 372 | } | ||
| > | 373 | |||
| > | 374 | @end | ||
Added CRDatabaseResult.h
| Old () | New (16924eaf988424c7) | |||
|---|---|---|---|---|
| > | 1 | // | ||
| > | 2 | // CRDatabaseResult.h | ||
| > | 3 | // CRDatabase | ||
| > | 4 | // | ||
| > | 5 | |||
| > | 6 | #import <Foundation/Foundation.h> | ||
| > | 7 | |||
| > | 8 | @class CRDatabaseRow; | ||
| > | 9 | |||
| > | 10 | @interface CRDatabaseResult : NSObject<NSFastEnumeration> { | ||
| > | 11 | @private | ||
| > | 12 | int errorCode_; | ||
| > | 13 | NSString *errorMessage_; | ||
| > | 14 | NSMutableArray *columnNames_; | ||
| > | 15 | NSMutableArray *columnTypes_; | ||
| > | 16 | NSMutableArray *rows_; | ||
| > | 17 | } | ||
| > | 18 | @property(nonatomic,assign) int errorCode; | ||
| > | 19 | @property(nonatomic,copy) NSString *errorMessage; | ||
| > | 20 | @property(readonly) NSMutableArray *columnNames; | ||
| > | 21 | @property(readonly) NSMutableArray *columnTypes; | ||
| > | 22 | @property(readonly) NSMutableArray *rows; | ||
| > | 23 | |||
| > | 24 | - (void)addRow:(CRDatabaseRow *)row; | ||
| > | 25 | - (CRDatabaseRow *)rowAtIndex:(NSUInteger)index; | ||
| > | 26 | - (NSUInteger)count; | ||
| > | 27 | |||
| > | 28 | @end | ||
Added CRDatabaseResult.m
| Old () | New (783bc0602ab9c6bf) | |||
|---|---|---|---|---|
| > | 1 | // | ||
| > | 2 | // CRDatabaseResult.m | ||
| > | 3 | // CRDatabase | ||
| > | 4 | // | ||
| > | 5 | |||
| > | 6 | #import "CRDatabaseResult.h" | ||
| > | 7 | |||
| > | 8 | |||
| > | 9 | @implementation CRDatabaseResult | ||
| > | 10 | @synthesize errorCode = errorCode_; | ||
| > | 11 | @synthesize errorMessage = errorMessage_; | ||
| > | 12 | @synthesize columnNames = columnNames_; | ||
| > | 13 | @synthesize columnTypes = columnTypes_; | ||
| > | 14 | @synthesize rows = rows_; | ||
| > | 15 | |||
| > | 16 | - (id)init { | ||
| > | 17 | if (![super init]) | ||
| > | 18 | return nil; | ||
| > | 19 | errorCode_ = 0; | ||
| > | 20 | columnNames_ = [[NSMutableArray alloc] init]; | ||
| > | 21 | columnTypes_ = [[NSMutableArray alloc] init]; | ||
| > | 22 | rows_ = [[NSMutableArray alloc] init]; | ||
| > | 23 | return self; | ||
| > | 24 | } | ||
| > | 25 | |||
| > | 26 | - (void)addRow:(CRDatabaseRow *)row | ||
| > | 27 | { | ||
| > | 28 | [rows_ addObject:row]; | ||
| > | 29 | } | ||
| > | 30 | |||
| > | 31 | - (CRDatabaseRow *)rowAtIndex:(NSUInteger)index | ||
| > | 32 | { | ||
| > | 33 | return [rows_ objectAtIndex:index]; | ||
| > | 34 | } | ||
| > | 35 | |||
| > | 36 | - (NSUInteger)count | ||
| > | 37 | { | ||
| > | 38 | return rows_.count; | ||
| > | 39 | } | ||
| > | 40 | |||
| > | 41 | - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state | ||
| > | 42 | objects:(id *)stackbuf count:(NSUInteger)len | ||
| > | 43 | { | ||
| > | 44 | return [rows_ countByEnumeratingWithState:state objects:stackbuf count:len]; | ||
| > | 45 | } | ||
| > | 46 | |||
| > | 47 | - (void)dealloc | ||
| > | 48 | { | ||
| > | 49 | [rows_ release]; | ||
| > | 50 | [errorMessage_ release]; | ||
| > | 51 | [columnNames_ release]; | ||
| > | 52 | [columnTypes_ release]; | ||
| > | 53 | [super dealloc]; | ||
| > | 54 | } | ||
| > | 55 | |||
| > | 56 | @end | ||
Added CRDatabaseRow.h
| Old () | New (e65d576916cd70b0) | |||
|---|---|---|---|---|
| > | 1 | // | ||
| > | 2 | // CRDatabaseRow.h | ||
| > | 3 | // CRDatabase | ||
| > | 4 | // | ||
| > | 5 | |||
| > | 6 | #import <Foundation/Foundation.h> | ||
| > | 7 | |||
| > | 8 | @class CRDatabaseResult; | ||
| > | 9 | |||
| > | 10 | @interface CRDatabaseRow : NSObject { | ||
| > | 11 | @private | ||
| > | 12 | NSMutableArray* columnData_; | ||
| > | 13 | CRDatabaseResult* result; | ||
| > | 14 | } | ||
| > | 15 | @property(readonly) NSMutableArray* columnData; | ||
| > | 16 | |||
| > | 17 | - (id)initWithDatabaseResult:(CRDatabaseResult *)aResult; | ||
| > | 18 | |||
| > | 19 | - (NSInteger)integerForColumn:(NSString *)columnName; | ||
| > | 20 | - (NSInteger)integerForColumnIndex:(NSUInteger)columnIndex; | ||
| > | 21 | |||
| > | 22 | - (int)intForColumn:(NSString *)columnName; | ||
| > | 23 | - (int)intForColumnIndex:(NSUInteger)columnIdx; | ||
| > | 24 | |||
| > | 25 | - (long long)longLongForColumn:(NSString *)columnName; | ||
| > | 26 | - (long long)longLongForColumnIndex:(NSUInteger)columnIdx; | ||
| > | 27 | |||
| > | 28 | - (BOOL)boolForColumn:(NSString *)columnName; | ||
| > | 29 | - (BOOL)boolForColumnIndex:(NSUInteger)columnIdx; | ||
| > | 30 | |||
| > | 31 | - (double)doubleForColumn:(NSString *)columnName; | ||
| > | 32 | - (double)doubleForColumnIndex:(NSUInteger)columnIdx; | ||
| > | 33 | |||
| > | 34 | - (NSString *)stringForColumn:(NSString *)columnName; | ||
| > | 35 | - (NSString *)stringForColumnIndex:(NSUInteger)columnIdx; | ||
| > | 36 | |||
| > | 37 | - (NSDate *)dateForColumn:(NSString *)columnName; | ||
| > | 38 | - (NSDate *)dateForColumnIndex:(NSUInteger)columnIdx; | ||
| > | 39 | |||
| > | 40 | - (NSData *)dataForColumn:(NSString *)columnName; | ||
| > | 41 | - (NSData *)dataForColumnIndex:(NSUInteger)columnIndex; | ||
| > | 42 | |||
| > | 43 | @end | ||
Added CRDatabaseRow.m
| Old () | New (0284ae895f69a0a1) | |||
|---|---|---|---|---|
| > | 1 | // | ||
| > | 2 | // CRDatabaseRow.m | ||
| > | 3 | // CRDatabase | ||
| > | 4 | // | ||
| > | 5 | |||
| > | 6 | #import "CRDatabaseRow.h" | ||
| > | 7 | #import "CRDatabaseResult.h" | ||
| > | 8 | |||
| > | 9 | |||
| > | 10 | @implementation CRDatabaseRow | ||
| > | 11 | @synthesize columnData = columnData_; | ||
| > | 12 | |||
| > | 13 | - (id)initWithDatabaseResult:(CRDatabaseResult *)aResult | ||
| > | 14 | { | ||
| > | 15 | if (![super init]) | ||
| > | 16 | return nil; | ||
| > | 17 | columnData_ = [[NSMutableArray alloc] init]; | ||
| > | 18 | result = aResult; | ||
| > | 19 | return self; | ||
| > | 20 | } | ||
| > | 21 | |||
| > | 22 | - (NSUInteger)columnIndexForName:(NSString *)columnName | ||
| > | 23 | { | ||
| > | 24 | return [result.columnNames indexOfObject:columnName]; | ||
| > | 25 | } | ||
| > | 26 | |||
| > | 27 | - (NSInteger)integerForColumn:(NSString *)columnName | ||
| > | 28 | { | ||
| > | 29 | NSUInteger columnIndex = [self columnIndexForName:columnName]; | ||
| > | 30 | if (columnIndex == NSNotFound) | ||
| > | 31 | return 0; | ||
| > | 32 | return [self integerForColumnIndex:columnIndex]; | ||
| > | 33 | } | ||
| > | 34 | |||
| > | 35 | - (NSInteger)integerForColumnIndex:(NSUInteger)columnIndex | ||
| > | 36 | { | ||
| > | 37 | id value = [columnData_ objectAtIndex:columnIndex]; | ||
| > | 38 | if (![value isKindOfClass:[NSNumber class]]) // convert other values | ||
| > | 39 | return [[self stringForColumnIndex:columnIndex] integerValue]; | ||
| > | 40 | return [value integerValue]; | ||
| > | 41 | } | ||
| > | 42 | |||
| > | 43 | - (int)intForColumn:(NSString*)columnName | ||
| > | 44 | { | ||
| > | 45 | NSUInteger columnIndex = [self columnIndexForName:columnName]; | ||
| > | 46 | if (columnIndex == NSNotFound) | ||
| > | 47 | return 0; | ||
| > | 48 | return [self intForColumnIndex:columnIndex]; | ||
| > | 49 | } | ||
| > | 50 | |||
| > | 51 | |||
| > | 52 | - (int)intForColumnIndex:(NSUInteger)columnIndex | ||
| > | 53 | { | ||
| > | 54 | id value = [columnData_ objectAtIndex:columnIndex]; | ||
| > | 55 | if (![value isKindOfClass:[NSNumber class]]) // convert other values | ||
| > | 56 | return [[self stringForColumnIndex:columnIndex] intValue]; | ||
| > | 57 | return [value intValue]; | ||
| > | 58 | } | ||
| > | 59 | |||
| > | 60 | - (long long)longLongForColumn:(NSString*)columnName | ||
| > | 61 | { | ||
| > | 62 | NSUInteger columnIndex = [self columnIndexForName:columnName]; | ||
| > | 63 | if (columnIndex == NSNotFound) | ||
| > | 64 | return 0; | ||
| > | 65 | return [self longLongForColumnIndex:columnIndex]; | ||
| > | 66 | } | ||
| > | 67 | |||
| > | 68 | - (long long)longLongForColumnIndex:(NSUInteger)columnIndex | ||
| > | 69 | { | ||
| > | 70 | id value = [columnData_ objectAtIndex:columnIndex]; | ||
| > | 71 | if (![value isKindOfClass:[NSNumber class]]) // convert other values | ||
| > | 72 | return [[self stringForColumnIndex:columnIndex] longLongValue]; | ||
| > | 73 | return [value longLongValue]; | ||
| > | 74 | } | ||
| > | 75 | |||
| > | 76 | - (BOOL)boolForColumn:(NSString *)columnName | ||
| > | 77 | { | ||
| > | 78 | return ([self intForColumn:columnName] != 0); | ||
| > | 79 | } | ||
| > | 80 | |||
| > | 81 | - (BOOL)boolForColumnIndex:(NSUInteger)columnIndex | ||
| > | 82 | { | ||
| > | 83 | return ([self intForColumnIndex:columnIndex] != 0); | ||
| > | 84 | } | ||
| > | 85 | |||
| > | 86 | - (double)doubleForColumn:(NSString*)columnName | ||
| > | 87 | { | ||
| > | 88 | NSUInteger columnIndex = [self columnIndexForName:columnName]; | ||
| > | 89 | if (columnIndex == NSNotFound) | ||
| > | 90 | return 0; | ||
| > | 91 | return [self doubleForColumnIndex:columnIndex]; | ||
| > | 92 | } | ||
| > | 93 | |||
| > | 94 | - (double)doubleForColumnIndex:(NSUInteger)columnIndex | ||
| > | 95 | { | ||
| > | 96 | id value = [columnData_ objectAtIndex:columnIndex]; | ||
| > | 97 | if (![value isKindOfClass:[NSNumber class]]) // convert other values | ||
| > | 98 | return [[self stringForColumnIndex:columnIndex] doubleValue]; | ||
| > | 99 | return [value doubleValue]; | ||
| > | 100 | } | ||
| > | 101 | |||
| > | 102 | - (NSString *)stringForColumn:(NSString *)columnName | ||
| > | 103 | { | ||
| > | 104 | NSUInteger columnIndex = [self columnIndexForName:columnName]; | ||
| > | 105 | if (columnIndex == NSNotFound) | ||
| > | 106 | return @""; | ||
| > | 107 | return [self stringForColumnIndex:columnIndex]; | ||
| > | 108 | } | ||
| > | 109 | |||
| > | 110 | - (NSString *)stringForColumnIndex:(NSUInteger)columnIndex | ||
| > | 111 | { | ||
| > | 112 | id value = [columnData_ objectAtIndex:columnIndex]; | ||
| > | 113 | if ([value isKindOfClass:[NSString class]]) // convert other values | ||
| > | 114 | return value; | ||
| > | 115 | else if ([value isKindOfClass:[NSData class]]) | ||
| > | 116 | return [[NSString alloc] initWithData:[columnData_ objectAtIndex:columnIndex] | ||
| > | 117 | encoding:NSUTF8StringEncoding]; | ||
| > | 118 | else if ([value isKindOfClass:[NSNumber class]]) | ||
| > | 119 | return [value stringValue]; | ||
| > | 120 | else | ||
| > | 121 | return nil; // unknown type of value, shouldn't happen | ||
| > | 122 | } | ||
| > | 123 | |||
| > | 124 | - (NSDate *)dateForColumn:(NSString*)columnName | ||
| > | 125 | { | ||
| > | 126 | NSUInteger columnIndex = [self columnIndexForName:columnName]; | ||
| > | 127 | if (columnIndex == NSNotFound) | ||
| > | 128 | return nil; | ||
| > | 129 | return [NSDate dateWithTimeIntervalSince1970:[self doubleForColumnIndex:columnIndex]]; | ||
| > | 130 | } | ||
| > | 131 | |||
| > | 132 | - (NSDate *)dateForColumnIndex:(NSUInteger)columnIndex | ||
| > | 133 | { | ||
| > | 134 | return [NSDate dateWithTimeIntervalSince1970:[self doubleForColumnIndex:columnIndex]]; | ||
| > | 135 | } | ||
| > | 136 | |||
| > | 137 | - (NSData *)dataForColumn:(NSString *)columnName; | ||
| > | 138 | { | ||
| > | 139 | NSUInteger columnIndex = [self columnIndexForName:columnName]; | ||
| > | 140 | if (columnIndex == NSNotFound) | ||
| > | 141 | return nil; | ||
| > | 142 | return [self dataForColumnIndex:columnIndex]; | ||
| > | 143 | } | ||
| > | 144 | |||
| > | 145 | - (NSData *)dataForColumnIndex:(NSUInteger)columnIndex; | ||
| > | 146 | { | ||
| > | 147 | return [columnData_ objectAtIndex:columnIndex]; | ||
| > | 148 | } | ||
| > | 149 | |||
| > | 150 | - (void)dealloc | ||
| > | 151 | { | ||
| > | 152 | // [result release]; | ||
| > | 153 | [columnData_ release]; | ||
| > | 154 | [super dealloc]; | ||
| > | 155 | } | ||
| > | 156 | |||
| > | 157 | @end | ||
Added LICENSE
| Old () | New (61e95e0a840e02e1) | |||
|---|---|---|---|---|
| > | 1 | MIT License | ||
| > | 2 | |||
| > | 3 | CRDatabase | ||
| > | 4 | Copyright (c) 2009 Coding Robots, Dmitry Chestnykh | ||
| > | 5 | |||
| > | 6 | EGODatabase | ||
| > | 7 | Copyright (c) 2009 enormego | ||
| > | 8 | |||
| > | 9 | FMDB | ||
| > | 10 | Copyright (c) 2008 Flying Meat Inc. | ||
| > | 11 | |||
| > | 12 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| > | 13 | of this software and associated documentation files (the "Software"), to deal | ||
| > | 14 | in the Software without restriction, including without limitation the rights | ||
| > | 15 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| > | 16 | copies of the Software, and to permit persons to whom the Software is | ||
| > | 17 | furnished to do so, subject to the following conditions: | ||
| > | 18 | |||
| > | 19 | The above copyright notice and this permission notice shall be included in | ||
| > | 20 | all copies or substantial portions of the Software. | ||
| > | 21 | |||
| > | 22 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| > | 23 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| > | 24 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| > | 25 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| > | 26 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| > | 27 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| > | 28 | THE SOFTWARE. | ||
Added README
| Old () | New (365ecccba3128f11) | |||
|---|---|---|---|---|
| > | 1 | -*- markdown -*- | ||
| > | 2 | |||
| > | 3 | CRDatabase | ||
| > | 4 | ---------- | ||
| > | 5 | |||
| > | 6 | CRDatabase is an experimental fork of EGODatabase, a thread-safe | ||
| > | 7 | Objective-C SQLite wrapper (which uses some code from FMDB), where | ||
| > | 8 | thread-safety is implemented via custom GCD queues. It also has some | ||
| > | 9 | asyncronious methods that use C blocks. | ||
| > | 10 | |||
| > | 11 | This project is **experimental**, as I'm learning GCD and blocks. | ||
| > | 12 | Do not use it in production. If, however, you find it ready for | ||
| > | 13 | production use, please let me know - <dmitry@codingrobots.com> :) | ||
| > | 14 | |||
| > | 15 | You can find this project at <http://bitbucket.org/dchest/crdatabase> | ||
| > | 16 | |||
| > | 17 | |||
| > | 18 | Links to original projects: | ||
| > | 19 | |||
| > | 20 | * EGODatabase: <http://github.com/enormego/egodatabase> | ||
| > | 21 | * FMDB: <http://flycode.googlecode.com/svn/trunk/fmdb/> | ||
| > | 22 | |||
| > | 23 | ## Requirements | ||
| > | 24 | |||
| > | 25 | Mac OS X 10.6 | ||
| > | 26 | |||
| > | 27 | ## Classes | ||
| > | 28 | |||
| > | 29 | ### CRDatabase | ||
| > | 30 | |||
| > | 31 | This is the class where you'll open your SQLite database file and execute queries through. | ||
| > | 32 | See CRDatabase.h for methods. | ||
| > | 33 | |||
| > | 34 | ### CRDatabaseResult | ||
| > | 35 | |||
| > | 36 | This is the class returned by CRDatabase when running "executeQuery:". | ||
| > | 37 | It supports fast enumeration, and contains properties for the column names, | ||
| > | 38 | column types, rows, and errors if there are any. | ||
| > | 39 | |||
| > | 40 | ### CRDatabaseRow | ||
| > | 41 | |||
| > | 42 | Every object that CRDatabaseResult contains, is an CRDatabaseRow. | ||
| > | 43 | This is your raw data for each row. You'll be able to return specific types | ||
| > | 44 | based on different methods such as intForColumn: or dateForColumn:. | ||
| > | 45 | Check out the header files for a complete listing. | ||
| > | 46 | |||
| > | 47 | ## Example | ||
| > | 48 | See CRDB.m | ||
| > | 49 | |||
| > | 50 | ## Note | ||
| > | 51 | |||
| > | 52 | Remember to link libsqlite3.dylib to your project! | ||
| > | 53 | |||