From d6c6dea8a64a03474cd2fae5b19f0d0136ccbd2d Mon Sep 17 00:00:00 2001 From: vspader Date: Sat, 20 Oct 2007 16:15:02 +0000 Subject: [PATCH] Fixed Cuesheet bug so it doesn't load itself. Added APL support (Vasfed). --- Plugins/APL/APL.xcodeproj/project.pbxproj | 285 +++++ Plugins/APL/APL.xcodeproj/vasfed.mode1 | 1380 ++++++++++++++++++++ Plugins/APL/APL.xcodeproj/vasfed.pbxuser | 694 +++++++++++ Plugins/APL/APL.xcodeproj/vspader.mode1 | 1388 +++++++++++++++++++++ Plugins/APL/APL.xcodeproj/vspader.pbxuser | 685 ++++++++++ Plugins/APL/APLDecoder.h | 27 + Plugins/APL/APLDecoder.m | 168 +++ Plugins/APL/APLFile.h | 28 + Plugins/APL/APLFile.m | 134 ++ Plugins/APL/APLMetadataReader.h | 17 + Plugins/APL/APLMetadataReader.m | 26 + Plugins/APL/APL_Prefix.pch | 7 + Plugins/APL/ApeTag.h | 54 + Plugins/APL/ApeTag.mm | 246 ++++ Plugins/APL/Info.plist | 26 + Plugins/CueSheet/CueSheet.m | 3 + 16 files changed, 5168 insertions(+) create mode 100644 Plugins/APL/APL.xcodeproj/project.pbxproj create mode 100644 Plugins/APL/APL.xcodeproj/vasfed.mode1 create mode 100644 Plugins/APL/APL.xcodeproj/vasfed.pbxuser create mode 100644 Plugins/APL/APL.xcodeproj/vspader.mode1 create mode 100644 Plugins/APL/APL.xcodeproj/vspader.pbxuser create mode 100644 Plugins/APL/APLDecoder.h create mode 100644 Plugins/APL/APLDecoder.m create mode 100644 Plugins/APL/APLFile.h create mode 100644 Plugins/APL/APLFile.m create mode 100644 Plugins/APL/APLMetadataReader.h create mode 100644 Plugins/APL/APLMetadataReader.m create mode 100644 Plugins/APL/APL_Prefix.pch create mode 100644 Plugins/APL/ApeTag.h create mode 100644 Plugins/APL/ApeTag.mm create mode 100644 Plugins/APL/Info.plist diff --git a/Plugins/APL/APL.xcodeproj/project.pbxproj b/Plugins/APL/APL.xcodeproj/project.pbxproj new file mode 100644 index 000000000..db6d69567 --- /dev/null +++ b/Plugins/APL/APL.xcodeproj/project.pbxproj @@ -0,0 +1,285 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 99B98A1E0CC7E1CA00C256E9 /* ApeTag.mm in Sources */ = {isa = PBXBuildFile; fileRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; }; + 99B98A1F0CC7E1CD00C256E9 /* APLDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; }; + 99B98A200CC7E1CE00C256E9 /* APLFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; }; + 99B98A210CC7E1D100C256E9 /* APLMetadataReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; }; + 99B98A260CC7E22500C256E9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; + 99B98CE10CC7FD0000C256E9 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49B7048680CD000E48DA /* Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APLMetadataReader.h; sourceTree = ""; }; + 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APLMetadataReader.m; sourceTree = ""; }; + 32DBCF630370AF2F00C91783 /* APL_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APL_Prefix.pch; sourceTree = ""; }; + 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Info.plist; sourceTree = ""; }; + 8E8D42350CBB0F9800135C1B /* APLDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APLDecoder.h; sourceTree = ""; }; + 8E8D42360CBB0F9800135C1B /* APLDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APLDecoder.m; sourceTree = ""; }; + 8E8D423C0CBB0FF600135C1B /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Plugin.h; path = ../../Audio/Plugin.h; sourceTree = SOURCE_ROOT; }; + 99B9863E0CC7A08600C256E9 /* APLFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APLFile.h; sourceTree = ""; }; + 99B9863F0CC7A08600C256E9 /* APLFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APLFile.m; sourceTree = ""; }; + 99B9865E0CC7A20800C256E9 /* ApeTag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApeTag.h; sourceTree = ""; }; + 99B9865F0CC7A20800C256E9 /* ApeTag.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ApeTag.mm; sourceTree = ""; }; + 99B989F40CC7E10400C256E9 /* APL.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = APL.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 99B989F20CC7E10400C256E9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 99B98A260CC7E22500C256E9 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* CueSheet */ = { + isa = PBXGroup; + children = ( + 08FB77AFFE84173DC02AAC07 /* Classes */, + 32C88E010371C26100C91783 /* Other Sources */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, + 19C28FB8FE9D52D311CA2CBB /* Products */, + ); + name = CueSheet; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */, + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */, + ); + name = "Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D5B49B7048680CD000E48DA /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AFFE84173DC02AAC07 /* Classes */ = { + isa = PBXGroup; + children = ( + 8E8D423C0CBB0FF600135C1B /* Plugin.h */, + 8E8D42350CBB0F9800135C1B /* APLDecoder.h */, + 8E8D42360CBB0F9800135C1B /* APLDecoder.m */, + 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */, + 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */, + 99B9863E0CC7A08600C256E9 /* APLFile.h */, + 99B9863F0CC7A08600C256E9 /* APLFile.m */, + 99B9865E0CC7A20800C256E9 /* ApeTag.h */, + 99B9865F0CC7A20800C256E9 /* ApeTag.mm */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 089C167FFE841241C02AAC07 /* AppKit.framework */, + D2F7E65807B2D6F200F64583 /* CoreData.framework */, + 089C1672FE841209C02AAC07 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FB8FE9D52D311CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 99B989F40CC7E10400C256E9 /* APL.bundle */, + ); + name = Products; + sourceTree = ""; + }; + 32C88E010371C26100C91783 /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32DBCF630370AF2F00C91783 /* APL_Prefix.pch */, + ); + name = "Other Sources"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 99B989F30CC7E10400C256E9 /* APL Plugin */ = { + isa = PBXNativeTarget; + buildConfigurationList = 99B989F70CC7E10500C256E9 /* Build configuration list for PBXNativeTarget "APL Plugin" */; + buildPhases = ( + 99B989F00CC7E10400C256E9 /* Resources */, + 99B989F10CC7E10400C256E9 /* Sources */, + 99B989F20CC7E10400C256E9 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "APL Plugin"; + productName = APL; + productReference = 99B989F40CC7E10400C256E9 /* APL.bundle */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "APL" */; + hasScannedForEncodings = 1; + mainGroup = 089C166AFE841209C02AAC07 /* CueSheet */; + projectDirPath = ""; + targets = ( + 99B989F30CC7E10400C256E9 /* APL Plugin */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 99B989F00CC7E10400C256E9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99B98CE10CC7FD0000C256E9 /* Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 99B989F10CC7E10400C256E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 99B98A1E0CC7E1CA00C256E9 /* ApeTag.mm in Sources */, + 99B98A1F0CC7E1CD00C256E9 /* APLDecoder.m in Sources */, + 99B98A200CC7E1CE00C256E9 /* APLFile.m in Sources */, + 99B98A210CC7E1D100C256E9 /* APLMetadataReader.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB913F08733D840010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SYMROOT = ../../build; + }; + name = Debug; + }; + 1DEB914008733D840010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SYMROOT = ../../build; + }; + name = Release; + }; + 99B989F80CC7E10500C256E9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-framework", + AppKit, + ); + PREBINDING = NO; + PRODUCT_NAME = APL; + WRAPPER_EXTENSION = bundle; + ZERO_LINK = YES; + }; + name = Debug; + }; + 99B989F90CC7E10500C256E9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-framework", + AppKit, + ); + PREBINDING = NO; + PRODUCT_NAME = APL; + WRAPPER_EXTENSION = bundle; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "APL" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB913F08733D840010E9CD /* Debug */, + 1DEB914008733D840010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 99B989F70CC7E10500C256E9 /* Build configuration list for PBXNativeTarget "APL Plugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 99B989F80CC7E10500C256E9 /* Debug */, + 99B989F90CC7E10500C256E9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/Plugins/APL/APL.xcodeproj/vasfed.mode1 b/Plugins/APL/APL.xcodeproj/vasfed.mode1 new file mode 100644 index 000000000..c15450083 --- /dev/null +++ b/Plugins/APL/APL.xcodeproj/vasfed.mode1 @@ -0,0 +1,1380 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXRunSessionModule + Name + Run Log + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1 + FavBarConfig + + PBXProjectModuleGUID + 99B986160CC79E9F00C256E9 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1 + MajorVersion + 31 + MinorVersion + 1 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + active-buildstyle-popup + action + NSToolbarFlexibleSpaceItem + buildOrClean + build-and-runOrDebug + com.apple.ide.PBXToolbarStopButton + get-info + toggle-editor + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 239 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 08FB77AFFE84173DC02AAC07 + 32C88E010371C26100C91783 + 089C167CFE841241C02AAC07 + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 22 + 21 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {239, 771}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {256, 789}} + GroupTreeTableConfiguration + + MainColumn + 239 + + RubberWindowFrame + 396 286 1350 830 0 0 1920 1178 + + Module + PBXSmartGroupTreeModule + Proportion + 256pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + APL_Prefix.pch + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + APL_Prefix.pch + _historyCapacity + 0 + bookmark + 99DF14AC0CC8013600EC5F3E + history + + 99B986F00CC7B63400C256E9 + 99B986F10CC7B63400C256E9 + 99B987970CC7C17700C256E9 + 99B9899A0CC7DDBA00C256E9 + 99B98A350CC7E23F00C256E9 + 99B98B350CC7F55800C256E9 + 99B98CB30CC7F8B700C256E9 + 99B98CB50CC7F8B700C256E9 + 99B98CC70CC7F99E00C256E9 + 99B98CE90CC7FD4200C256E9 + 99B98CEA0CC7FD4200C256E9 + 99B98CEB0CC7FD4200C256E9 + 99B98CF40CC7FD7D00C256E9 + 99DF138F0CC7FEA600EC5F3E + 99DF13A00CC7FF0600EC5F3E + + prevStack + + 99B9860D0CC79E9F00C256E9 + 99B9860E0CC79E9F00C256E9 + 99B986110CC79E9F00C256E9 + 99B986120CC79E9F00C256E9 + 99B987080CC7B63400C256E9 + 99B9870B0CC7B63400C256E9 + 99B9870C0CC7B63400C256E9 + 99B9870F0CC7B63400C256E9 + 99B987280CC7B63400C256E9 + 99B987290CC7B63400C256E9 + 99B987360CC7B63400C256E9 + 99B987B70CC7C17700C256E9 + 99B987B80CC7C17700C256E9 + 99B98A770CC7E66D00C256E9 + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1089, 549}} + RubberWindowFrame + 396 286 1350 830 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 549pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 554}, {1089, 235}} + RubberWindowFrame + 396 286 1350 830 0 0 1920 1178 + + Module + XCDetailModule + Proportion + 235pt + + + Proportion + 1089pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 99DF14AD0CC8013600EC5F3E + 1CE0B1FE06471DED0097A5F4 + 99DF14AE0CC8013600EC5F3E + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.short + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + 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 '%@'? + WindowJustification + 5 + WindowOrderList + + /Users/vasfed/cog_src/cog_new/Plugins/Apl/APL.xcodeproj + + WindowString + 396 286 1350 830 0 0 1920 1178 + WindowTools + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1119, 405}} + RubberWindowFrame + 512 343 1119 687 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 405pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 410}, {1119, 236}} + RubberWindowFrame + 512 343 1119 687 0 0 1920 1178 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 646pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 99B986E40CC7B58E00C256E9 + 99DF13950CC7FEA600EC5F3E + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.build + WindowString + 512 343 1119 687 0 0 1920 1178 + WindowToolGUID + 99B986E40CC7B58E00C256E9 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {528, 396}} + {{528, 0}, {748, 396}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {1276, 396}} + {{0, 396}, {1276, 431}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {1276, 827}} + RubberWindowFrame + 248 265 1276 868 0 0 1920 1178 + + Module + PBXDebugSessionModule + Proportion + 827pt + + + Proportion + 827pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 99DF13960CC7FEA600EC5F3E + 1C162984064C10D400B95A72 + 99DF13970CC7FEA600EC5F3E + 99DF13980CC7FEA600EC5F3E + 99DF13990CC7FEA600EC5F3E + 99DF139A0CC7FEA600EC5F3E + 99DF139B0CC7FEA600EC5F3E + 99DF139C0CC7FEA600EC5F3E + + ToolbarConfiguration + xcode.toolbar.config.debug + WindowString + 248 265 1276 868 0 0 1920 1178 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.find + IsVertical + + Layout + + + Dock + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + ApeTag.mm + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {781, 212}} + RubberWindowFrame + 435 574 781 470 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 212pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{0, 217}, {781, 212}} + RubberWindowFrame + 435 574 781 470 0 0 1920 1178 + + Module + PBXProjectFindModule + Proportion + 212pt + + + Proportion + 429pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + + TableOfContents + + 1C530D57069F1CE1000CFCEE + 99B98C7D0CC7F5EF00C256E9 + 99B98C7E0CC7F5EF00C256E9 + 1CDD528C0622207200134675 + 1CD0528E0623707200166675 + + WindowString + 435 574 781 470 0 0 1920 1178 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {440, 358}} + RubberWindowFrame + 63 709 440 400 0 0 1920 1178 + + Module + PBXDebugCLIModule + Proportion + 358pt + + + Proportion + 359pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 99B989B80CC7DDE800C256E9 + 99B989B90CC7DDE800C256E9 + 1C78EAAC065D492600B07095 + + WindowString + 63 709 440 400 0 0 1920 1178 + WindowToolGUID + 99B989B80CC7DDE800C256E9 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.run + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + LauncherConfigVersion + 3 + PBXProjectModuleGUID + 1CD0528B0623707200166675 + PBXProjectModuleLabel + Run + Runner + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {493, 167}} + {{0, 176}, {493, 267}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {405, 443}} + {{414, 0}, {514, 443}} + + + + + GeometryConfiguration + + Frame + {{0, 0}, {760, 578}} + RubberWindowFrame + 21 536 760 619 0 0 1920 1178 + + Module + PBXRunSessionModule + Proportion + 578pt + + + Proportion + 578pt + + + Name + Run Log + ServiceClasses + + PBXRunSessionModule + + StatusbarIsVisible + + TableOfContents + + 1C0AD2B3069F1EA900FABCE6 + 99B989A50CC7DDBA00C256E9 + 1CD0528B0623707200166675 + 99B989A60CC7DDBA00C256E9 + + ToolbarConfiguration + xcode.toolbar.config.run + WindowString + 21 536 760 619 0 0 1920 1178 + WindowToolGUID + 1C0AD2B3069F1EA900FABCE6 + WindowToolIsVisible + + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 2 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpoints + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimator + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + + diff --git a/Plugins/APL/APL.xcodeproj/vasfed.pbxuser b/Plugins/APL/APL.xcodeproj/vasfed.pbxuser new file mode 100644 index 000000000..efdd8d0b8 --- /dev/null +++ b/Plugins/APL/APL.xcodeproj/vasfed.pbxuser @@ -0,0 +1,694 @@ +// !$*UTF8*$! +{ + 089C1669FE841209C02AAC07 /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 99B989D30CC7DEF800C256E9 /* Executable */; + activeTarget = 99B989F30CC7E10400C256E9 /* APL */; + addToTargets = ( + ); + breakpoints = ( + 99B98C910CC7F74600C256E9 /* ApeTag.mm:151 */, + 99B98C950CC7F75900C256E9 /* ApeTag.mm:146 */, + 99B98CA30CC7F7C000C256E9 /* ApeTag.mm:236 */, + 99B98CB00CC7F8A700C256E9 /* APLMetadataReader.m:21 */, + 99B98CC20CC7F96900C256E9 /* APLFile.m:121 */, + ); + breakpointsGroup = 99B986E60CC7B5AC00C256E9 /* XCBreakpointsBucket */; + codeSenseManager = 99B985FC0CC79D3500C256E9 /* Code sense */; + executables = ( + 99B989D30CC7DEF800C256E9 /* Executable */, + ); + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 22, + 300, + 400, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXExecutablesDataSource_ActiveFlagID, + PBXExecutablesDataSource_NameID, + PBXExecutablesDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 850, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 200, + 670, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 214436110; + PBXWorkspaceStateSaveDate = 214436110; + }; + perUserProjectItems = { + 99B9860D0CC79E9F00C256E9 /* PBXTextBookmark */ = 99B9860D0CC79E9F00C256E9 /* PBXTextBookmark */; + 99B9860E0CC79E9F00C256E9 /* PBXTextBookmark */ = 99B9860E0CC79E9F00C256E9 /* PBXTextBookmark */; + 99B986110CC79E9F00C256E9 /* PBXTextBookmark */ = 99B986110CC79E9F00C256E9 /* PBXTextBookmark */; + 99B986120CC79E9F00C256E9 /* PBXTextBookmark */ = 99B986120CC79E9F00C256E9 /* PBXTextBookmark */; + 99B986F00CC7B63400C256E9 /* PBXTextBookmark */ = 99B986F00CC7B63400C256E9 /* PBXTextBookmark */; + 99B986F10CC7B63400C256E9 /* PBXTextBookmark */ = 99B986F10CC7B63400C256E9 /* PBXTextBookmark */; + 99B987080CC7B63400C256E9 /* PBXTextBookmark */ = 99B987080CC7B63400C256E9 /* PBXTextBookmark */; + 99B9870B0CC7B63400C256E9 /* PBXTextBookmark */ = 99B9870B0CC7B63400C256E9 /* PBXTextBookmark */; + 99B9870C0CC7B63400C256E9 /* PBXTextBookmark */ = 99B9870C0CC7B63400C256E9 /* PBXTextBookmark */; + 99B9870F0CC7B63400C256E9 /* PBXTextBookmark */ = 99B9870F0CC7B63400C256E9 /* PBXTextBookmark */; + 99B987280CC7B63400C256E9 /* PBXTextBookmark */ = 99B987280CC7B63400C256E9 /* PBXTextBookmark */; + 99B987290CC7B63400C256E9 /* PBXTextBookmark */ = 99B987290CC7B63400C256E9 /* PBXTextBookmark */; + 99B987360CC7B63400C256E9 /* PBXTextBookmark */ = 99B987360CC7B63400C256E9 /* PBXTextBookmark */; + 99B987970CC7C17700C256E9 /* PBXTextBookmark */ = 99B987970CC7C17700C256E9 /* PBXTextBookmark */; + 99B987B70CC7C17700C256E9 /* PBXTextBookmark */ = 99B987B70CC7C17700C256E9 /* PBXTextBookmark */; + 99B987B80CC7C17700C256E9 /* PBXTextBookmark */ = 99B987B80CC7C17700C256E9 /* PBXTextBookmark */; + 99B9899A0CC7DDBA00C256E9 /* PBXTextBookmark */ = 99B9899A0CC7DDBA00C256E9 /* PBXTextBookmark */; + 99B98A350CC7E23F00C256E9 /* PBXTextBookmark */ = 99B98A350CC7E23F00C256E9 /* PBXTextBookmark */; + 99B98A770CC7E66D00C256E9 /* PBXTextBookmark */ = 99B98A770CC7E66D00C256E9 /* PBXTextBookmark */; + 99B98B350CC7F55800C256E9 /* PBXTextBookmark */ = 99B98B350CC7F55800C256E9 /* PBXTextBookmark */; + 99B98CB30CC7F8B700C256E9 /* PBXTextBookmark */ = 99B98CB30CC7F8B700C256E9 /* PBXTextBookmark */; + 99B98CB50CC7F8B700C256E9 /* PBXTextBookmark */ = 99B98CB50CC7F8B700C256E9 /* PBXTextBookmark */; + 99B98CC70CC7F99E00C256E9 /* PBXTextBookmark */ = 99B98CC70CC7F99E00C256E9 /* PBXTextBookmark */; + 99B98CE90CC7FD4200C256E9 /* PBXTextBookmark */ = 99B98CE90CC7FD4200C256E9 /* PBXTextBookmark */; + 99B98CEA0CC7FD4200C256E9 /* PBXTextBookmark */ = 99B98CEA0CC7FD4200C256E9 /* PBXTextBookmark */; + 99B98CEB0CC7FD4200C256E9 /* PBXTextBookmark */ = 99B98CEB0CC7FD4200C256E9 /* PBXTextBookmark */; + 99B98CF40CC7FD7D00C256E9 /* PBXTextBookmark */ = 99B98CF40CC7FD7D00C256E9 /* PBXTextBookmark */; + 99DF138F0CC7FEA600EC5F3E /* PBXTextBookmark */ = 99DF138F0CC7FEA600EC5F3E /* PBXTextBookmark */; + 99DF13A00CC7FF0600EC5F3E /* PBXTextBookmark */ = 99DF13A00CC7FF0600EC5F3E /* PBXTextBookmark */; + 99DF14AC0CC8013600EC5F3E /* PBXTextBookmark */ = 99DF14AC0CC8013600EC5F3E /* PBXTextBookmark */; + }; + sourceControlManager = 99B985FB0CC79D3500C256E9 /* Source Control */; + userBuildSettings = { + }; + }; + 089C167EFE841241C02AAC07 /* English */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1048, 517}}"; + sepNavWindowFrame = "{{268, 267}, {1071, 675}}"; + }; + }; + 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1101, 517}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1101, 517}}"; + sepNavWindowFrame = "{{176, 351}, {1071, 675}}"; + }; + }; + 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1235, 445}}"; + sepNavSelRange = "{438, 0}"; + sepNavVisRect = "{{0, 0}, {1235, 445}}"; + }; + }; + 32DBCF630370AF2F00C91783 /* APL_Prefix.pch */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1048, 517}}"; + }; + }; + 8D5B49B7048680CD000E48DA /* Info.plist */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1048, 517}}"; + sepNavWindowFrame = "{{291, 246}, {1071, 675}}"; + }; + }; + 8E8D42170CBB0F3C00135C1B /* APLPlugin.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 752}}"; + sepNavSelRange = "{10, 0}"; + sepNavVisRect = "{{0, 0}, {1048, 752}}"; + sepNavWindowFrame = "{{61, 456}, {1071, 675}}"; + }; + }; + 8E8D42180CBB0F3C00135C1B /* APLPlugin.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 752}}"; + sepNavSelRange = "{249, 0}"; + sepNavVisRect = "{{0, 0}, {1048, 752}}"; + }; + }; + 8E8D42350CBB0F9800135C1B /* APLDecoder.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1101, 517}}"; + sepNavSelRange = "{437, 0}"; + sepNavVisRect = "{{0, 0}, {1101, 517}}"; + }; + }; + 8E8D42360CBB0F9800135C1B /* APLDecoder.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 2366}}"; + sepNavSelRange = "{580, 9}"; + sepNavVisRect = "{{0, 188}, {1048, 517}}"; + }; + }; + 8E8D423C0CBB0FF600135C1B /* Plugin.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 1064}}"; + sepNavSelRange = "{857, 0}"; + sepNavVisRect = "{{0, 512}, {1048, 517}}"; + sepNavWindowFrame = "{{153, 372}, {1071, 675}}"; + }; + }; + 99B985FB0CC79D3500C256E9 /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + scmType = ""; + }; + 99B985FC0CC79D3500C256E9 /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 99B9860D0CC79E9F00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42170CBB0F3C00135C1B /* APLPlugin.h */; + name = "CueSheetPlugin.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 121; + vrLoc = 0; + }; + 99B9860E0CC79E9F00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42180CBB0F3C00135C1B /* APLPlugin.m */; + name = "CueSheetPlugin.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 316; + vrLoc = 0; + }; + 99B986110CC79E9F00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */; + name = "CueSheetDecoder.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 650; + vrLoc = 0; + }; + 99B986120CC79E9F00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "CueSheetDecoder.m: 15"; + rLen = 0; + rLoc = 219; + rType = 0; + vrLen = 809; + vrLoc = 758; + }; + 99B9863E0CC7A08600C256E9 /* APLFile.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}"; + sepNavSelRange = "{270, 0}"; + sepNavVisRect = "{{0, 0}, {1048, 517}}"; + }; + }; + 99B9863F0CC7A08600C256E9 /* APLFile.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1190, 1890}}"; + sepNavSelRange = "{4298, 0}"; + sepNavVisRect = "{{0, 1336}, {1048, 517}}"; + sepNavWindowFrame = "{{524, 415}, {1071, 675}}"; + }; + }; + 99B9865E0CC7A20800C256E9 /* ApeTag.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 770}}"; + sepNavSelRange = "{279, 0}"; + sepNavVisRect = "{{0, 253}, {1048, 517}}"; + }; + }; + 99B9865F0CC7A20800C256E9 /* ApeTag.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1190, 3458}}"; + sepNavSelRange = "{9505, 0}"; + sepNavVisRect = "{{0, 2937}, {1048, 517}}"; + sepNavWindowFrame = "{{139, 321}, {1071, 675}}"; + }; + }; + 99B986E60CC7B5AC00C256E9 /* XCBreakpointsBucket */ = { + isa = XCBreakpointsBucket; + name = "Project Breakpoints"; + objects = ( + 99B98C910CC7F74600C256E9 /* ApeTag.mm:151 */, + 99B98C950CC7F75900C256E9 /* ApeTag.mm:146 */, + 99B98CA30CC7F7C000C256E9 /* ApeTag.mm:236 */, + 99B98CB00CC7F8A700C256E9 /* APLMetadataReader.m:21 */, + 99B98CC20CC7F96900C256E9 /* APLFile.m:121 */, + ); + }; + 99B986EC0CC7B63400C256E9 /* APETag.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = APETag.h; + path = "/Users/vasfed/cog_src/cog_new/Frameworks/MAC/mac-src/src/MACLib/APETag.h"; + sourceTree = ""; + }; + 99B986F00CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */; + name = "APLMetadataReader.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 270; + vrLoc = 0; + }; + 99B986F10CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */; + name = "APLDecoder.h: trackEnd"; + rLen = 0; + rLoc = 437; + rType = 0; + vrLen = 537; + vrLoc = 0; + }; + 99B987080CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */; + name = "APLFile.h: 15"; + rLen = 0; + rLoc = 270; + rType = 0; + vrLen = 254; + vrLoc = 0; + }; + 99B9870B0CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 11"; + rLen = 0; + rLoc = 251; + rType = 0; + vrLen = 228; + vrLoc = 0; + }; + 99B9870C0CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9870D0CC7B63400C256E9 /* APETag.h */; + name = "(null): 89"; + rLen = 0; + rLoc = 4316; + rType = 0; + vrLen = 2481; + vrLoc = 3650; + }; + 99B9870D0CC7B63400C256E9 /* APETag.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = APETag.h; + path = "/Users/vasfed/cog_src/cog_new/Frameworks/MAC/mac-src/src/MACLib/APETag.h"; + sourceTree = ""; + }; + 99B9870F0CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 186; + vrLoc = 0; + }; + 99B987280CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */; + name = "APLMetadataReader.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 275; + vrLoc = 0; + }; + 99B987290CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; + name = "APLMetadataReader.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 505; + vrLoc = 0; + }; + 99B987360CC7B63400C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 188; + vrLoc = 0; + }; + 99B987970CC7C17700C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B986EC0CC7B63400C256E9 /* APETag.h */; + name = "APETag.h: 89"; + rLen = 0; + rLoc = 4316; + rType = 0; + vrLen = 1679; + vrLoc = 3372; + }; + 99B987B70CC7C17700C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 089C167EFE841241C02AAC07 /* English */; + name = "English: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 90; + vrLoc = 0; + }; + 99B987B80CC7C17700C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8D5B49B7048680CD000E48DA /* Info.plist */; + name = "Info.plist: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 783; + vrLoc = 0; + }; + 99B9899A0CC7DDBA00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42170CBB0F3C00135C1B /* APLPlugin.h */; + name = "APLPlugin.h: 2"; + rLen = 0; + rLoc = 10; + rType = 0; + vrLen = 121; + vrLoc = 0; + }; + 99B989D30CC7DEF800C256E9 /* Executable */ = { + isa = PBXExecutable; + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + configStateDict = { + "PBXLSLaunchAction-0" = { + PBXLSLaunchAction = 0; + PBXLSLaunchStartAction = 1; + PBXLSLaunchStdioStyle = 2; + PBXLSLaunchStyle = 0; + class = PBXLSRunLaunchConfig; + displayName = "Executable Runner"; + identifier = com.apple.Xcode.launch.runConfig; + remoteHostInfo = ""; + startActionInfo = ""; + }; + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = _debug; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + launchableReference = 99B989D40CC7DEF800C256E9 /* Cog.app */; + libgmallocEnabled = 0; + name = Executable; + savedGlobals = { + }; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 99B989D40CC7DEF800C256E9 /* Cog.app */ = { + isa = PBXFileReference; + explicitFileType = wrapper.application; + name = Cog.app; + path = /Users/vasfed/cog_src/cog_new/build/Debug/Cog.app; + sourceTree = ""; + }; + 99B989F30CC7E10400C256E9 /* APL */ = { + activeExec = 0; + }; + 99B989F50CC7E10400C256E9 /* APL-Info.plist */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1048, 517}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1048, 517}}"; + sepNavWindowFrame = "{{383, 162}, {1071, 675}}"; + }; + }; + 99B98A350CC7E23F00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42180CBB0F3C00135C1B /* APLPlugin.m */; + name = "APLPlugin.m: 16"; + rLen = 0; + rLoc = 249; + rType = 0; + vrLen = 316; + vrLoc = 0; + }; + 99B98A770CC7E66D00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B989F50CC7E10400C256E9 /* APL-Info.plist */; + name = "APL-Info.plist: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 620; + vrLoc = 0; + }; + 99B98B350CC7F55800C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */; + name = "APLFile.h: file"; + rLen = 0; + rLoc = 270; + rType = 0; + vrLen = 481; + vrLoc = 0; + }; + 99B98C910CC7F74600C256E9 /* ApeTag.mm:151 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + functionName = "-convertToCogTag"; + hitCount = 1; + lineNumber = 151; + location = APL; + modificationTime = 214432023.266375; + state = 1; + }; + 99B98C950CC7F75900C256E9 /* ApeTag.mm:146 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + functionName = "-convertToCogTag"; + hitCount = 1; + lineNumber = 146; + location = APL; + modificationTime = 214432023.298172; + state = 1; + }; + 99B98CA30CC7F7C000C256E9 /* ApeTag.mm:236 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + functionName = "-read:"; + hitCount = 1; + lineNumber = 236; + location = APL; + modificationTime = 214432020.694053; + state = 2; + }; + 99B98CB00CC7F8A700C256E9 /* APLMetadataReader.m:21 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; + functionName = "+metadataForURL:"; + hitCount = 1; + lineNumber = 21; + location = APL; + modificationTime = 214432024.186878; + state = 1; + }; + 99B98CB30CC7F8B700C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 121"; + rLen = 0; + rLoc = 4298; + rType = 0; + vrLen = 1169; + vrLoc = 3316; + }; + 99B98CB50CC7F8B700C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: flags"; + rLen = 0; + rLoc = 279; + rType = 0; + vrLen = 929; + vrLoc = 323; + }; + 99B98CC20CC7F96900C256E9 /* APLFile.m:121 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + functionName = "-initWithFile:"; + hitCount = 0; + lineNumber = 121; + location = APL; + modificationTime = 214432105.571593; + state = 1; + }; + 99B98CC70CC7F99E00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; + name = "APLMetadataReader.m: 21"; + rLen = 0; + rLoc = 438; + rType = 0; + vrLen = 503; + vrLoc = 0; + }; + 99B98CE90CC7FD4200C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: 243"; + rLen = 0; + rLoc = 9505; + rType = 0; + vrLen = 1505; + vrLoc = 8010; + }; + 99B98CEA0CC7FD4200C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "APLDecoder.m: 109"; + rLen = 0; + rLoc = 2741; + rType = 0; + vrLen = 854; + vrLoc = 2350; + }; + 99B98CEB0CC7FD4200C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B989F50CC7E10400C256E9 /* APL-Info.plist */; + name = "APL-Info.plist: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 620; + vrLoc = 0; + }; + 99B98CF40CC7FD7D00C256E9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 089C167EFE841241C02AAC07 /* English */; + name = "English: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 90; + vrLoc = 0; + }; + 99DF138F0CC7FEA600EC5F3E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8D5B49B7048680CD000E48DA /* Info.plist */; + name = "Info.plist: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 783; + vrLoc = 0; + }; + 99DF13A00CC7FF0600EC5F3E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 32DBCF630370AF2F00C91783 /* APL_Prefix.pch */; + name = "APL_Prefix.pch: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 148; + vrLoc = 0; + }; + 99DF14AC0CC8013600EC5F3E /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 32DBCF630370AF2F00C91783 /* APL_Prefix.pch */; + name = "APL_Prefix.pch: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 148; + vrLoc = 0; + }; +} diff --git a/Plugins/APL/APL.xcodeproj/vspader.mode1 b/Plugins/APL/APL.xcodeproj/vspader.mode1 new file mode 100644 index 000000000..7a39f82a1 --- /dev/null +++ b/Plugins/APL/APL.xcodeproj/vspader.mode1 @@ -0,0 +1,1388 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXRunSessionModule + Name + Run Log + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1 + FavBarConfig + + PBXProjectModuleGUID + 171D098D0CCA608C009FF3AB + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1 + MajorVersion + 31 + MinorVersion + 1 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + active-buildstyle-popup + action + NSToolbarFlexibleSpaceItem + buildOrClean + build-and-runOrDebug + com.apple.ide.PBXToolbarStopButton + get-info + toggle-editor + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 089C166AFE841209C02AAC07 + 08FB77AFFE84173DC02AAC07 + 089C167CFE841241C02AAC07 + 1C37FBAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 834}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 852}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 0 135 1680 893 0 0 1680 1028 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + Info.plist + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + Info.plist + _historyCapacity + 0 + bookmark + 171D098A0CCA608C009FF3AB + history + + 171D095A0CCA608C009FF3AB + 171D095B0CCA608C009FF3AB + 171D095C0CCA608C009FF3AB + 171D095D0CCA608C009FF3AB + 171D095E0CCA608C009FF3AB + 171D095F0CCA608C009FF3AB + 171D09600CCA608C009FF3AB + 171D09610CCA608C009FF3AB + 171D09620CCA608C009FF3AB + 171D09630CCA608C009FF3AB + + prevStack + + 171D09640CCA608C009FF3AB + 171D09650CCA608C009FF3AB + 171D09660CCA608C009FF3AB + 171D09670CCA608C009FF3AB + 171D09680CCA608C009FF3AB + 171D09690CCA608C009FF3AB + 171D096A0CCA608C009FF3AB + 171D096B0CCA608C009FF3AB + 171D096C0CCA608C009FF3AB + 171D096D0CCA608C009FF3AB + 171D096E0CCA608C009FF3AB + 171D096F0CCA608C009FF3AB + 171D09700CCA608C009FF3AB + 171D09710CCA608C009FF3AB + 171D09720CCA608C009FF3AB + 171D09730CCA608C009FF3AB + 171D09740CCA608C009FF3AB + 171D09750CCA608C009FF3AB + 171D09760CCA608C009FF3AB + 171D09770CCA608C009FF3AB + 171D09780CCA608C009FF3AB + 171D09790CCA608C009FF3AB + 171D097A0CCA608C009FF3AB + 171D097B0CCA608C009FF3AB + 171D097C0CCA608C009FF3AB + 171D097D0CCA608C009FF3AB + 171D097E0CCA608C009FF3AB + 171D097F0CCA608C009FF3AB + 171D09800CCA608C009FF3AB + 171D09810CCA608C009FF3AB + 171D09820CCA608C009FF3AB + 171D09830CCA608C009FF3AB + 171D09840CCA608C009FF3AB + 171D09850CCA608C009FF3AB + 171D09860CCA608C009FF3AB + 171D09870CCA608C009FF3AB + 171D09880CCA608C009FF3AB + 171D09890CCA608C009FF3AB + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1472, 847}} + RubberWindowFrame + 0 135 1680 893 0 0 1680 1028 + + Module + PBXNavigatorGroup + Proportion + 847pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 852}, {1472, 0}} + RubberWindowFrame + 0 135 1680 893 0 0 1680 1028 + + Module + XCDetailModule + Proportion + 0pt + + + Proportion + 1472pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 171D098B0CCA608C009FF3AB + 1CE0B1FE06471DED0097A5F4 + 171D098C0CCA608C009FF3AB + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.short + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + 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 '%@'? + WindowJustification + 5 + WindowOrderList + + 171D094F0CCA606A009FF3AB + /Users/vspader/Projects/Cog/Plugins/Apl/APL.xcodeproj + + WindowString + 0 135 1680 893 0 0 1680 1028 + WindowTools + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {500, 218}} + RubberWindowFrame + 21 505 500 500 0 0 1680 1028 + + Module + PBXNavigatorGroup + Proportion + 218pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 223}, {500, 236}} + RubberWindowFrame + 21 505 500 500 0 0 1680 1028 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 459pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 171D094F0CCA606A009FF3AB + 171D09500CCA606A009FF3AB + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.build + WindowString + 21 505 500 500 0 0 1680 1028 + WindowToolGUID + 171D094F0CCA606A009FF3AB + WindowToolIsVisible + + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debug + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {440, 358}} + RubberWindowFrame + 650 41 440 400 0 0 1280 1002 + + Module + PBXDebugCLIModule + Proportion + 358pt + + + Proportion + 358pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAAD065D492600B07095 + 1C78EAAE065D492600B07095 + 1C78EAAC065D492600B07095 + + WindowString + 650 41 440 400 0 0 1280 1002 + + + Identifier + windowTool.run + Layout + + + Dock + + + ContentConfiguration + + LauncherConfigVersion + 3 + PBXProjectModuleGUID + 1CD0528B0623707200166675 + PBXProjectModuleLabel + Run + Runner + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {493, 167}} + {{0, 176}, {493, 267}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {405, 443}} + {{414, 0}, {514, 443}} + + + + + GeometryConfiguration + + Frame + {{0, 0}, {460, 159}} + RubberWindowFrame + 316 696 459 200 0 0 1280 1002 + + Module + PBXRunSessionModule + Proportion + 159pt + + + Proportion + 159pt + + + Name + Run Log + ServiceClasses + + PBXRunSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C0AD2B3069F1EA900FABCE6 + 1C0AD2B4069F1EA900FABCE6 + 1CD0528B0623707200166675 + 1C0AD2B5069F1EA900FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.run + WindowString + 316 696 459 200 0 0 1280 1002 + WindowToolGUID + 1C0AD2B3069F1EA900FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 2 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpoints + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimator + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + + diff --git a/Plugins/APL/APL.xcodeproj/vspader.pbxuser b/Plugins/APL/APL.xcodeproj/vspader.pbxuser new file mode 100644 index 000000000..a812c200c --- /dev/null +++ b/Plugins/APL/APL.xcodeproj/vspader.pbxuser @@ -0,0 +1,685 @@ +// !$*UTF8*$! +{ + 089C1669FE841209C02AAC07 /* Project object */ = { + activeBuildConfigurationName = Release; + activeTarget = 99B989F30CC7E10400C256E9 /* APL Plugin */; + codeSenseManager = 171D08F70CCA5E71009FF3AB /* Code sense */; + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 1000, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 200, + 1000, + 20, + 48.1626, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 214588999; + PBXWorkspaceStateSaveDate = 214588999; + }; + perUserProjectItems = { + 171D095A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095A0CCA608C009FF3AB /* PBXTextBookmark */; + 171D095B0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095B0CCA608C009FF3AB /* PBXTextBookmark */; + 171D095C0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095C0CCA608C009FF3AB /* PBXTextBookmark */; + 171D095D0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095D0CCA608C009FF3AB /* PBXTextBookmark */; + 171D095E0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095E0CCA608C009FF3AB /* PBXTextBookmark */; + 171D095F0CCA608C009FF3AB /* PBXTextBookmark */ = 171D095F0CCA608C009FF3AB /* PBXTextBookmark */; + 171D09600CCA608C009FF3AB /* PBXTextBookmark */ = 171D09600CCA608C009FF3AB /* PBXTextBookmark */; + 171D09610CCA608C009FF3AB /* PBXTextBookmark */ = 171D09610CCA608C009FF3AB /* PBXTextBookmark */; + 171D09620CCA608C009FF3AB /* PBXTextBookmark */ = 171D09620CCA608C009FF3AB /* PBXTextBookmark */; + 171D09630CCA608C009FF3AB /* PBXTextBookmark */ = 171D09630CCA608C009FF3AB /* PBXTextBookmark */; + 171D09640CCA608C009FF3AB /* PBXTextBookmark */ = 171D09640CCA608C009FF3AB /* PBXTextBookmark */; + 171D09650CCA608C009FF3AB /* PBXTextBookmark */ = 171D09650CCA608C009FF3AB /* PBXTextBookmark */; + 171D09660CCA608C009FF3AB /* PBXTextBookmark */ = 171D09660CCA608C009FF3AB /* PBXTextBookmark */; + 171D09670CCA608C009FF3AB /* PBXTextBookmark */ = 171D09670CCA608C009FF3AB /* PBXTextBookmark */; + 171D09680CCA608C009FF3AB /* PBXTextBookmark */ = 171D09680CCA608C009FF3AB /* PBXTextBookmark */; + 171D09690CCA608C009FF3AB /* PBXTextBookmark */ = 171D09690CCA608C009FF3AB /* PBXTextBookmark */; + 171D096A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096A0CCA608C009FF3AB /* PBXTextBookmark */; + 171D096B0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096B0CCA608C009FF3AB /* PBXTextBookmark */; + 171D096C0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096C0CCA608C009FF3AB /* PBXTextBookmark */; + 171D096D0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096D0CCA608C009FF3AB /* PBXTextBookmark */; + 171D096E0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096E0CCA608C009FF3AB /* PBXTextBookmark */; + 171D096F0CCA608C009FF3AB /* PBXTextBookmark */ = 171D096F0CCA608C009FF3AB /* PBXTextBookmark */; + 171D09700CCA608C009FF3AB /* PBXTextBookmark */ = 171D09700CCA608C009FF3AB /* PBXTextBookmark */; + 171D09710CCA608C009FF3AB /* PBXTextBookmark */ = 171D09710CCA608C009FF3AB /* PBXTextBookmark */; + 171D09720CCA608C009FF3AB /* PBXTextBookmark */ = 171D09720CCA608C009FF3AB /* PBXTextBookmark */; + 171D09730CCA608C009FF3AB /* PBXTextBookmark */ = 171D09730CCA608C009FF3AB /* PBXTextBookmark */; + 171D09740CCA608C009FF3AB /* PBXTextBookmark */ = 171D09740CCA608C009FF3AB /* PBXTextBookmark */; + 171D09750CCA608C009FF3AB /* PBXTextBookmark */ = 171D09750CCA608C009FF3AB /* PBXTextBookmark */; + 171D09760CCA608C009FF3AB /* PBXTextBookmark */ = 171D09760CCA608C009FF3AB /* PBXTextBookmark */; + 171D09770CCA608C009FF3AB /* PBXTextBookmark */ = 171D09770CCA608C009FF3AB /* PBXTextBookmark */; + 171D09780CCA608C009FF3AB /* PBXTextBookmark */ = 171D09780CCA608C009FF3AB /* PBXTextBookmark */; + 171D09790CCA608C009FF3AB /* PBXTextBookmark */ = 171D09790CCA608C009FF3AB /* PBXTextBookmark */; + 171D097A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097A0CCA608C009FF3AB /* PBXTextBookmark */; + 171D097B0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097B0CCA608C009FF3AB /* PBXTextBookmark */; + 171D097C0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097C0CCA608C009FF3AB /* PBXTextBookmark */; + 171D097D0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097D0CCA608C009FF3AB /* PBXTextBookmark */; + 171D097E0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097E0CCA608C009FF3AB /* PBXTextBookmark */; + 171D097F0CCA608C009FF3AB /* PBXTextBookmark */ = 171D097F0CCA608C009FF3AB /* PBXTextBookmark */; + 171D09800CCA608C009FF3AB /* PBXTextBookmark */ = 171D09800CCA608C009FF3AB /* PBXTextBookmark */; + 171D09810CCA608C009FF3AB /* PBXTextBookmark */ = 171D09810CCA608C009FF3AB /* PBXTextBookmark */; + 171D09820CCA608C009FF3AB /* PBXTextBookmark */ = 171D09820CCA608C009FF3AB /* PBXTextBookmark */; + 171D09830CCA608C009FF3AB /* PBXTextBookmark */ = 171D09830CCA608C009FF3AB /* PBXTextBookmark */; + 171D09840CCA608C009FF3AB /* PBXTextBookmark */ = 171D09840CCA608C009FF3AB /* PBXTextBookmark */; + 171D09850CCA608C009FF3AB /* PBXTextBookmark */ = 171D09850CCA608C009FF3AB /* PBXTextBookmark */; + 171D09860CCA608C009FF3AB /* PBXTextBookmark */ = 171D09860CCA608C009FF3AB /* PBXTextBookmark */; + 171D09870CCA608C009FF3AB /* PBXTextBookmark */ = 171D09870CCA608C009FF3AB /* PBXTextBookmark */; + 171D09880CCA608C009FF3AB /* PBXTextBookmark */ = 171D09880CCA608C009FF3AB /* PBXTextBookmark */; + 171D09890CCA608C009FF3AB /* PBXTextBookmark */ = 171D09890CCA608C009FF3AB /* PBXTextBookmark */; + 171D098A0CCA608C009FF3AB /* PBXTextBookmark */ = 171D098A0CCA608C009FF3AB /* PBXTextBookmark */; + }; + sourceControlManager = 171D08F60CCA5E71009FF3AB /* Source Control */; + userBuildSettings = { + }; + }; + 171D08F60CCA5E71009FF3AB /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + scmType = ""; + }; + 171D08F70CCA5E71009FF3AB /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 171D095A0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */; + name = "APLFile.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 482; + vrLoc = 0; + }; + 171D095B0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; + name = "APLMetadataReader.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 505; + vrLoc = 0; + }; + 171D095C0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */; + name = "APLMetadataReader.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 271; + vrLoc = 0; + }; + 171D095D0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */; + name = "APLDecoder.h: 13"; + rLen = 0; + rLoc = 179; + rType = 0; + vrLen = 541; + vrLoc = 0; + }; + 171D095E0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "APLDecoder.m: 76"; + rLen = 0; + rLoc = 2147; + rType = 0; + vrLen = 1611; + vrLoc = 829; + }; + 171D095F0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = pack; + rLen = 4; + rLoc = 7379; + rType = 0; + vrLen = 2965; + vrLoc = 0; + }; + 171D09600CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 24"; + rLen = 0; + rLoc = 448; + rType = 0; + vrLen = 1233; + vrLoc = 0; + }; + 171D09610CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1946; + vrLoc = 0; + }; + 171D09620CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */; + name = "Plugin.h: 17"; + rLen = 0; + rLoc = 384; + rType = 0; + vrLen = 1477; + vrLoc = 0; + }; + 171D09630CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8D5B49B7048680CD000E48DA /* Info.plist */; + name = "Info.plist: 24"; + rLen = 0; + rLoc = 747; + rType = 0; + vrLen = 774; + vrLoc = 0; + }; + 171D09640CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */; + name = "Plugin.h: 24"; + rLen = 0; + rLoc = 525; + rType = 0; + vrLen = 1477; + vrLoc = 0; + }; + 171D09650CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8D5B49B7048680CD000E48DA /* Info.plist */; + name = "Info.plist: 24"; + rLen = 0; + rLoc = 747; + rType = 0; + vrLen = 774; + vrLoc = 0; + }; + 171D09660CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */; + name = "APLMetadataReader.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 270; + vrLoc = 0; + }; + 171D09670CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "APLDecoder.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1749; + vrLoc = 487; + }; + 171D09680CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */; + name = "Plugin.h: 24"; + rLen = 0; + rLoc = 525; + rType = 0; + vrLen = 1477; + vrLoc = 0; + }; + 171D09690CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */; + name = "APLDecoder.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 537; + vrLoc = 0; + }; + 171D096A0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "APLDecoder.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1749; + vrLoc = 487; + }; + 171D096B0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */; + name = "APLFile.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 481; + vrLoc = 0; + }; + 171D096C0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1943; + vrLoc = 0; + }; + 171D096D0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */; + name = "APLMetadataReader.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 270; + vrLoc = 0; + }; + 171D096E0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */; + name = "APLDecoder.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 537; + vrLoc = 0; + }; + 171D096F0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; + name = "APLMetadataReader.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 503; + vrLoc = 0; + }; + 171D09700CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "APLDecoder.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1749; + vrLoc = 487; + }; + 171D09710CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */; + name = "APLFile.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 481; + vrLoc = 0; + }; + 171D09720CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 2965; + vrLoc = 0; + }; + 171D09730CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1252; + vrLoc = 0; + }; + 171D09740CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 2965; + vrLoc = 0; + }; + 171D09750CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 15"; + rLen = 0; + rLoc = 275; + rType = 0; + vrLen = 1946; + vrLoc = 0; + }; + 171D09760CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1628; + vrLoc = 3725; + }; + 171D09770CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1946; + vrLoc = 0; + }; + 171D09780CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1234; + vrLoc = 0; + }; + 171D09790CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863E0CC7A08600C256E9 /* APLFile.h */; + name = "APLFile.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 482; + vrLoc = 0; + }; + 171D097A0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */; + name = "APLMetadataReader.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 505; + vrLoc = 0; + }; + 171D097B0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */; + name = "APLMetadataReader.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 271; + vrLoc = 0; + }; + 171D097C0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "APLDecoder.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1749; + vrLoc = 487; + }; + 171D097D0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42350CBB0F9800135C1B /* APLDecoder.h */; + name = "APLDecoder.h: 13"; + rLen = 0; + rLoc = 179; + rType = 0; + vrLen = 541; + vrLoc = 0; + }; + 171D097E0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D42360CBB0F9800135C1B /* APLDecoder.m */; + name = "APLDecoder.m: 76"; + rLen = 0; + rLoc = 2147; + rType = 0; + vrLen = 1611; + vrLoc = 829; + }; + 171D097F0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1628; + vrLoc = 3725; + }; + 171D09800CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1234; + vrLoc = 0; + }; + 171D09810CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1628; + vrLoc = 3725; + }; + 171D09820CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1946; + vrLoc = 0; + }; + 171D09830CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 24"; + rLen = 0; + rLoc = 448; + rType = 0; + vrLen = 1233; + vrLoc = 0; + }; + 171D09840CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = "ApeTag.mm: createTag:flags:data:"; + rLen = 0; + rLoc = 3779; + rType = 0; + vrLen = 2149; + vrLoc = 2801; + }; + 171D09850CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 24"; + rLen = 0; + rLoc = 448; + rType = 0; + vrLen = 1233; + vrLoc = 0; + }; + 171D09860CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865F0CC7A20800C256E9 /* ApeTag.mm */; + name = pack; + rLen = 4; + rLoc = 7379; + rType = 0; + vrLen = 2965; + vrLoc = 0; + }; + 171D09870CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9865E0CC7A20800C256E9 /* ApeTag.h */; + name = "ApeTag.h: 24"; + rLen = 0; + rLoc = 448; + rType = 0; + vrLen = 1233; + vrLoc = 0; + }; + 171D09880CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 99B9863F0CC7A08600C256E9 /* APLFile.m */; + name = "APLFile.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1946; + vrLoc = 0; + }; + 171D09890CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8E8D423C0CBB0FF600135C1B /* Plugin.h */; + name = "Plugin.h: 17"; + rLen = 0; + rLoc = 384; + rType = 0; + vrLen = 1477; + vrLoc = 0; + }; + 171D098A0CCA608C009FF3AB /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8D5B49B7048680CD000E48DA /* Info.plist */; + name = "Info.plist: 15"; + rLen = 0; + rLoc = 528; + rType = 0; + vrLen = 774; + vrLoc = 0; + }; + 17DA346C0CC04FCD0003F6B2 /* APLMetadataReader.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 17DA346D0CC04FCD0003F6B2 /* APLMetadataReader.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 8D5B49B7048680CD000E48DA /* Info.plist */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}"; + sepNavSelRange = "{528, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 8E8D42350CBB0F9800135C1B /* APLDecoder.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}"; + sepNavSelRange = "{179, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 8E8D42360CBB0F9800135C1B /* APLDecoder.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 2366}}"; + sepNavSelRange = "{2147, 0}"; + sepNavVisRect = "{{0, 581}, {1431, 815}}"; + }; + }; + 8E8D423C0CBB0FF600135C1B /* Plugin.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 1008}}"; + sepNavSelRange = "{525, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 99B9863E0CC7A08600C256E9 /* APLFile.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 99B9863F0CC7A08600C256E9 /* APLFile.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 1890}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 99B9865E0CC7A20800C256E9 /* ApeTag.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 815}}"; + sepNavSelRange = "{448, 0}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 99B9865F0CC7A20800C256E9 /* ApeTag.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1431, 3458}}"; + sepNavSelRange = "{7379, 4}"; + sepNavVisRect = "{{0, 0}, {1431, 815}}"; + }; + }; + 99B989F30CC7E10400C256E9 /* APL Plugin */ = { + activeExec = 0; + }; +} diff --git a/Plugins/APL/APLDecoder.h b/Plugins/APL/APLDecoder.h new file mode 100644 index 000000000..d1713f23e --- /dev/null +++ b/Plugins/APL/APLDecoder.h @@ -0,0 +1,27 @@ +// +// APLDecoder.h + +#import + +#import "Plugin.h" + +@class APLFile; + +@interface APLDecoder : NSObject { + id source; + id decoder; + + int bytesPerFrame; //Number of bytes per frame, ie channels * (bitsPerSample/8) + int bytesPerSecond; //Number of bytes per second, ie bytesPerFrame * sampleRate + int bytePosition; //Current position in bytes. + + + + double trackStart; + double trackEnd; //miliseconds until end of track. + double trackLength; //track len in miliseconds + + APLFile *apl; +} + +@end diff --git a/Plugins/APL/APLDecoder.m b/Plugins/APL/APLDecoder.m new file mode 100644 index 000000000..21373b5aa --- /dev/null +++ b/Plugins/APL/APLDecoder.m @@ -0,0 +1,168 @@ +// +// CueSheetDecoder.m +// CueSheet +// +// Created by Zaphod Beeblebrox on 10/8/07. +// Copyright 2007 __MyCompanyName__. All rights reserved. +// + +#import "APLDecoder.h" +#import "APLFile.h" + +@implementation APLDecoder + ++ (NSArray *)fileTypes { + return [NSArray arrayWithObject:@"apl"]; +} + ++ (NSArray *)mimeTypes { + return [NSArray arrayWithObjects:@"application/x-apl", nil]; +} + +- (NSDictionary *)properties { + NSMutableDictionary *properties = [[decoder properties] mutableCopy]; + + //Need to alter length + [properties setObject:[NSNumber numberWithDouble:trackLength] forKey:@"length"]; + return [properties autorelease]; +} + +- (BOOL)open:(id)s +{ + NSLog(@"Loading apl..."); + if (![[s url] isFileURL]) + return NO; + + NSURL *url = [s url]; + [s close]; + + apl = [APLFile createWithFile:[url path]]; + [apl retain]; + + //Kind of a hackish way of accessing outside classes. + source = [NSClassFromString(@"AudioSource") audioSourceForURL:[apl file]]; + [source retain]; + + if (![source open:[apl file]]) { + NSLog(@"Could not open source for file '%@' referenced in apl", [apl file]); + return NO; + } + decoder = [NSClassFromString(@"AudioDecoder") audioDecoderForSource:source]; + [decoder retain]; + + if (![decoder open:source]) { + NSLog(@"Could not open decoder for source for apl"); + return NO; + } + + NSDictionary *properties = [decoder properties]; + int bitsPerSample = [[properties objectForKey:@"bitsPerSample"] intValue]; + int channels = [[properties objectForKey:@"channels"] intValue]; + float sampleRate = [[properties objectForKey:@"sampleRate"] floatValue]; + + + bytesPerFrame = (bitsPerSample/8) * channels; + bytesPerSecond = (int)(bytesPerFrame * sampleRate); + + if ([apl endBlock] > [apl startBlock]) trackEnd = ([apl endBlock] / sampleRate) * 1000.0; + else trackEnd = [[properties objectForKey:@"length"] doubleValue]; + trackStart = ([apl startBlock]/sampleRate) * 1000.0; + trackLength = trackEnd - trackStart; + + [decoder seekToTime: trackStart]; + + //Note: Should register for observations of the decoder, but laziness consumes all. + [self willChangeValueForKey:@"properties"]; + [self didChangeValueForKey:@"properties"]; + return YES; +} + +- (void)close { + if (decoder) { + [decoder close]; + [decoder release]; + decoder = nil; + } + + if (source) { + [source release]; + source = nil; + } + if (apl) { + [apl release]; + apl = nil; + } +} + +#if 0 +- (BOOL)setTrack_1111:(NSURL *)url +{ + // see if next apl is next track... + if ([[url fragment] intValue] == [[track track] intValue] + 1) { + NSArray *tracks = [cuesheet tracks]; + + int i; + for (i = 0; i < [tracks count]; i++) { + if ([[[tracks objectAtIndex:i] track] isEqualToString:[url fragment]]){ + [track release]; + track = [tracks objectAtIndex:i]; + [track retain]; + + CueSheetTrack *nextTrack = nil; + if (i + 1 < [tracks count]) { + nextTrack = [tracks objectAtIndex:i + 1]; + } + + if (nextTrack && [[[nextTrack url] absoluteString] isEqualToString:[[track url] absoluteString]]) { + trackEnd = [nextTrack time]; + } + else { + trackEnd = [[[decoder properties] objectForKey:@"length"] doubleValue]/1000.0; + } + + NSLog(@"CHANGING TRACK!"); + return YES; + } + } + } + + return NO; +} +#endif + +- (double)seekToTime:(double)time //milliseconds +{ + if (time > trackLength || time < 0) { + //need a better way of returning fail. + return -1.0; + } + + time += trackStart; + + bytePosition = (time/1000.0) * bytesPerSecond; + + NSLog(@"Before: %li", bytePosition); + bytePosition -= bytePosition % bytesPerFrame; + NSLog(@"After: %li", bytePosition); + + return [decoder seekToTime:time]; +} + +- (int)fillBuffer:(void *)buf ofSize:(UInt32)size +{ + long trackByteEnd = (trackEnd/1000.0) * bytesPerSecond; + trackByteEnd -= trackByteEnd % (bytesPerFrame); + + if (bytePosition + size > trackByteEnd) + size = trackByteEnd - bytePosition; + + if (!size) + return 0; + + int n = [decoder fillBuffer:buf ofSize:size]; + bytePosition += n; + return n; +} + + +@end diff --git a/Plugins/APL/APLFile.h b/Plugins/APL/APLFile.h new file mode 100644 index 000000000..e2316a02f --- /dev/null +++ b/Plugins/APL/APLFile.h @@ -0,0 +1,28 @@ +// +// APLFile.h +// APL +// +// Created by ??????? ???????? on 10/18/07. +// Copyright 2007 __MyCompanyName__. All rights reserved. +// + +#import + +@class ApeTag; + +@interface APLFile : NSObject { + long startBlock; + long endBlock; + ApeTag* tag; + NSURL* file; +} ++createWithFile:(NSString*)f; +-initWithFile:(NSString*)f; + +-(long)startBlock; // always return 0 or greater! +-(long)endBlock; +-(ApeTag*) tag; +-(NSURL*) file; + + //writing support to be added in far future +@end diff --git a/Plugins/APL/APLFile.m b/Plugins/APL/APLFile.m new file mode 100644 index 000000000..4bc2ec810 --- /dev/null +++ b/Plugins/APL/APLFile.m @@ -0,0 +1,134 @@ +// +// APLFile.m +// APL +// +// Created by ??????? ???????? on 10/18/07. +// Copyright 2007 __MyCompanyName__. All rights reserved. +// + +#import "APLFile.h" +#import "ApeTag.h" + +@implementation APLFile ++createWithFile:(NSString*)f { return [[APLFile alloc] initWithFile:f]; } + + +-(NSString*) readline:(NSFileHandle*)f { // rather hack-style substitution to fgets... + NSMutableData* d = [NSMutableData dataWithCapacity:100]; //it will grow, here should be most expected value (may gain few nanosecond from it =) ) + while(true) { + NSData* byte = [f readDataOfLength:1]; + if (!byte) + { + [f seekToFileOffset:([f offsetInFile]-[d length])]; + return nil; + } + [d appendData:byte]; + if (*((const char*)[byte bytes]) == '\n') break; + } + NSString* s = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding]; //!handle encoding error (in case binary data starts not from newline, impossible on real apl, but who knows...) + return s; +} + +- (NSURL *)urlForPath:(NSString *)path relativeTo:(NSString *)baseFilename +{ + NSRange protocolRange = [path rangeOfString:@"://"]; + if (protocolRange.location != NSNotFound) + { + return [NSURL URLWithString:path]; + } + + NSMutableString *unixPath = [path mutableCopy]; + + NSString *fragment = @""; + NSRange fragmentRange = [path rangeOfString:@"#"]; + if (fragmentRange.location != NSNotFound) + { + fragmentRange = NSMakeRange(fragmentRange.location, [unixPath length] - fragmentRange.location); + + fragment = [unixPath substringWithRange:fragmentRange]; + [unixPath deleteCharactersInRange:fragmentRange]; + } + + if (![unixPath hasPrefix:@"/"]) { + //Only relative paths would have windows backslashes. + [unixPath replaceOccurrencesOfString:@"\\" withString:@"/" options:0 range:NSMakeRange(0, [unixPath length])]; + + NSString *basePath = [[[baseFilename stringByStandardizingPath] stringByDeletingLastPathComponent] stringByAppendingString:@"/"]; + + [unixPath insertString:basePath atIndex:0]; + } + + //Append the fragment + return [NSURL URLWithString:[[[NSURL fileURLWithPath:unixPath] absoluteString] stringByAppendingString: fragment]]; +} + +-initWithFile:(NSString*)filename { + self = [super init]; + if (self) + { + //startBlock must be always >= 0 + NSFileHandle* f = (NSFileHandle*)[NSFileHandle fileHandleForReadingAtPath:filename]; + if(!f){ + NSLog(@"Failed to open apl file '%@' for reading", f); + return nil; + } + NSString* header = @"[Monkey's Audio Image Link File]\r\n"; + NSData* da = [f readDataOfLength:[header length]]; + if (!da) { + NSLog(@"Cannot read header"); + return nil; + } + NSString* str = [[NSString alloc] initWithData:da encoding: NSASCIIStringEncoding]; + if([str compare:header options:NSCaseInsensitiveSearch]) { + NSLog(@"APL header mismatch"); + return nil; + } + //now read by lines, skip empty, up to line (or any starting with '-' - may be other tags can be present) + NSString* line = nil; + NSScanner *scanner = nil; + //NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet]; + while(line = [self readline:f]) { + if (![line compare:@"----- APE TAG (DO NOT TOUCH!!!) -----\r\n" options:NSCaseInsensitiveSearch]) break; + if([line characterAtIndex:0] == '-') break; + [scanner release]; + scanner = [[NSScanner alloc] initWithString:line]; + NSString* field = nil, *value = nil; + if (![scanner scanUpToString:@"=" intoString:&field]) continue; + if (![scanner scanString:@"=" intoString:nil]) continue; + if (![scanner scanUpToString:@"\r\n" intoString:&value]) continue; + if (![field compare:@"Image File" options:NSCaseInsensitiveSearch]) + { + [file release]; + file = [self urlForPath:value relativeTo:filename]; + NSLog(@"APL refers to file '%@'", file); + continue; + } + if (![field compare:@"Start Block" options:NSCaseInsensitiveSearch]) + { + startBlock = [value intValue]; //!!! bugs with files over 2GB + NSLog(@"APL start block %d (%@)", startBlock, value); + continue; + } + if (![field compare:@"Finish Block" options:NSCaseInsensitiveSearch]) + { + endBlock = [value intValue]; //!!! bugs with files over 2GB + NSLog(@"APL start block %d (%@)", endBlock, value); + continue; + } + } + [scanner release]; + //check here for EOF? cocoa does not have this functionality :( + tag = [ApeTag createFromFileRead:f]; + [f closeFile]; + } + return self; +} + +-(long)startBlock { return startBlock; } +-(long)endBlock { return endBlock; } +-(ApeTag*) tag { return tag; } +-(NSURL*) file { return file; } + + + +@end diff --git a/Plugins/APL/APLMetadataReader.h b/Plugins/APL/APLMetadataReader.h new file mode 100644 index 000000000..2fd8b0e89 --- /dev/null +++ b/Plugins/APL/APLMetadataReader.h @@ -0,0 +1,17 @@ +// +// CueSheetMetadataReader.h +// CueSheet +// +// Created by Vincent Spader on 10/12/07. +// Copyright 2007 __MyCompanyName__. All rights reserved. +// + +#import + +#import "Plugin.h" + +@interface APLMetadataReader : NSObject { + +} + +@end diff --git a/Plugins/APL/APLMetadataReader.m b/Plugins/APL/APLMetadataReader.m new file mode 100644 index 000000000..a8e7398ed --- /dev/null +++ b/Plugins/APL/APLMetadataReader.m @@ -0,0 +1,26 @@ +// +// APLMetadataReader.m + + +#import "APLMetadataReader.h" +#import "APLDecoder.h" + +#import "APLFile.h" +#import "ApeTag.h" + +@implementation APLMetadataReader + ++ (NSArray *)fileTypes { return [APLDecoder fileTypes]; } ++ (NSArray *)mimeTypes { return [APLDecoder mimeTypes]; } + ++ (NSDictionary *)metadataForURL:(NSURL *)url { + if (![url isFileURL]) return nil; + + APLFile *apl = [APLFile createWithFile:[url path]]; + + ApeTag* tag = [apl tag]; + NSDictionary* res =[tag convertToCogTag]; + return res; +} + +@end diff --git a/Plugins/APL/APL_Prefix.pch b/Plugins/APL/APL_Prefix.pch new file mode 100644 index 000000000..bb727f480 --- /dev/null +++ b/Plugins/APL/APL_Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'CueSheet' target in the 'CueSheet' project. +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Plugins/APL/ApeTag.h b/Plugins/APL/ApeTag.h new file mode 100644 index 000000000..27ea57ec4 --- /dev/null +++ b/Plugins/APL/ApeTag.h @@ -0,0 +1,54 @@ +// +// ApeTag.h +// MacApl +// +// Created by ??????? ???????? on 10/15/07. +// Copyright 2007 Vasfed. All rights reserved. +// + +#import + +//not full support!! and even may have not enougth checks to find a non-supported data! + + + +@interface ApeTagItem: NSObject { + UInt32 flags; + NSString* tag; + NSData* data; +} + ++createTag:(NSString*)t flags:(SInt32)f data:(NSData*)d; +-initTag:(NSString*)t flags:(SInt32)f data:(NSData*)d; + +//for writing: +-(NSData*) pack; + +//for reading: +-(NSString*) tag; +-(bool) isString; //returns whether data is UTF-8 string(or implicitly can be converted to) +-(NSString*) getString; //returns string, if is not string - this is error, check isString before +@end + + + + +@interface ApeTag : NSObject { + NSMutableArray* fields; +} + ++(id)create; ++(id)createFromFileRead:(NSFileHandle*)f; +-(id)init; +-(id)initFromFileRead:(NSFileHandle*)f; + +-(NSArray*) fields; // returns fields array + +-(void) addField:(NSString*)f text:(NSString*)t; +-(NSData*) pack; //returns comoplete tag, ready for writing to file/transmitting smwhere + +-(void) write:(NSFileHandle*)f; //writes to file output of -pack +-(bool) read:(NSFileHandle*)f; //reads from file, returns true on success + +-(NSDictionary*) convertToCogTag; +@end diff --git a/Plugins/APL/ApeTag.mm b/Plugins/APL/ApeTag.mm new file mode 100644 index 000000000..bbf405b23 --- /dev/null +++ b/Plugins/APL/ApeTag.mm @@ -0,0 +1,246 @@ +// +// ApeTag.mm +// MacApl +// +// Created by ??????? ???????? on 10/15/07. +// Copyright 2007 __MyCompanyName__. All rights reserved. +// + +// as simple as it can be - just write a readable tag, no options etc. + + +#import "ApeTag.h" + +#define CURRENT_APE_TAG_VERSION 2000 +/***************************************************************************************** +"Standard" APE tag fields +*****************************************************************************************/ +#define APE_TAG_FIELD_TITLE @"Title" +#define APE_TAG_FIELD_ARTIST @"Artist" +#define APE_TAG_FIELD_ALBUM @"Album" +#define APE_TAG_FIELD_COMMENT @"Comment" +#define APE_TAG_FIELD_YEAR @"Year" +#define APE_TAG_FIELD_TRACK @"Track" +#define APE_TAG_FIELD_GENRE @"Genre" +#define APE_TAG_FIELD_COVER_ART_FRONT @"Cover Art (front)" +#define APE_TAG_FIELD_NOTES @"Notes" +#define APE_TAG_FIELD_LYRICS @"Lyrics" +#define APE_TAG_FIELD_COPYRIGHT @"Copyright" +#define APE_TAG_FIELD_BUY_URL @"Buy URL" +#define APE_TAG_FIELD_ARTIST_URL @"Artist URL" +#define APE_TAG_FIELD_PUBLISHER_URL @"Publisher URL" +#define APE_TAG_FIELD_FILE_URL @"File URL" +#define APE_TAG_FIELD_COPYRIGHT_URL @"Copyright URL" +#define APE_TAG_FIELD_MJ_METADATA @"Media Jukebox Metadata" +#define APE_TAG_FIELD_TOOL_NAME @"Tool Name" +#define APE_TAG_FIELD_TOOL_VERSION @"Tool Version" +#define APE_TAG_FIELD_PEAK_LEVEL @"Peak Level" +#define APE_TAG_FIELD_REPLAY_GAIN_RADIO @"Replay Gain (radio)" +#define APE_TAG_FIELD_REPLAY_GAIN_ALBUM @"Replay Gain (album)" +#define APE_TAG_FIELD_COMPOSER @"Composer" +#define APE_TAG_FIELD_KEYWORDS @"Keywords" + +/***************************************************************************************** +Standard APE tag field values +*****************************************************************************************/ +#define APE_TAG_GENRE_UNDEFINED @"Undefined" +/***************************************************************************************** +Footer (and header) flags +*****************************************************************************************/ +#define APE_TAG_FLAG_CONTAINS_HEADER (1 << 31) +#define APE_TAG_FLAG_CONTAINS_FOOTER (1 << 30) +#define APE_TAG_FLAG_IS_HEADER (1 << 29) + +#define APE_TAG_FLAGS_DEFAULT (APE_TAG_FLAG_CONTAINS_FOOTER) + +/***************************************************************************************** +Tag field flags +*****************************************************************************************/ +#define TAG_FIELD_FLAG_READ_ONLY (1 << 0) + +#define TAG_FIELD_FLAG_DATA_TYPE_MASK (6) +#define TAG_FIELD_FLAG_DATA_TYPE_TEXT_UTF8 (0 << 1) +#define TAG_FIELD_FLAG_DATA_TYPE_BINARY (1 << 1) +#define TAG_FIELD_FLAG_DATA_TYPE_EXTERNAL_INFO (2 << 1) +#define TAG_FIELD_FLAG_DATA_TYPE_RESERVED (3 << 1) + +/***************************************************************************************** +The footer at the end of APE tagged files (can also optionally be at the front of the tag) +*****************************************************************************************/ +#define APE_TAG_FOOTER_BYTES 32 + +//------------------------ + +@implementation ApeTagItem ++createTag:(NSString*)t flags:(SInt32)f data:(NSData*)d{ + return [[ApeTagItem alloc] initTag:t flags:f data:d]; +} + +-initTag:(NSString*)t flags:(SInt32)f data:(NSData*)d{ + self = [super init]; + if (self) + { + tag = [t copy]; + data = [d copy]; + flags = f; + } + return self; +} + +-(NSData*) pack { + //item header: + NSMutableData* d = [NSMutableData dataWithCapacity:8]; + UInt32 len = CFSwapInt32HostToLittle([data length]); + UInt32 flags1 = CFSwapInt32HostToLittle(flags); // ApeTagv1 does not use this, 0 for v2 means only footer and all fields text in utf8 - just right what we want + + [d appendBytes:&len length:4]; // lenth of value + [d appendBytes:&flags1 length:4]; // 32 bits of flags + [d appendData:[tag dataUsingEncoding: NSUTF8StringEncoding]]; // item tag + char c = 0; [d appendBytes:&c length:1]; // 0x00 separator after tag + [d appendData:data]; // item value + return d; +} + +-(bool) isString { //returns whether data is UTF-8 string(or implicitly can be converted to) + return (flags & TAG_FIELD_FLAG_DATA_TYPE_MASK) == TAG_FIELD_FLAG_DATA_TYPE_TEXT_UTF8; +} +-(NSString*) getString { //returns string, if is not string - this is error, check isString before + if ([self isString]) return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + return nil; +} +-(NSString*) tag { return tag; } +@end + + +@implementation ApeTag ++(id)create { return [[ApeTag alloc] init];} ++(id)createFromFileRead:(NSFileHandle*)f { return [[ApeTag alloc] initFromFileRead:f]; } + +-(id)init { + self = [super init]; + if (self) + { + fields = [NSMutableArray array]; + } + return self; +} + +-(id)initFromFileRead:(NSFileHandle*)f { + self = [super init]; + if(self) + { + fields = [NSMutableArray array]; + if (![self read:f]) + return nil; + } + return self; +} + +-(void) addField:(NSString*)f text:(NSString*)t { + [fields addObject:[ApeTagItem createTag:f flags:(TAG_FIELD_FLAG_DATA_TYPE_TEXT_UTF8) data:[t dataUsingEncoding: NSUTF8StringEncoding]]]; +} + +-(NSArray*) fields { return fields; } + +-(NSDictionary*) convertToCogTag { + NSLog(@"Converting ape tag to cog tag"); + NSMutableDictionary* d = [NSMutableDictionary dictionaryWithCapacity:6]; + NSEnumerator *e = [fields objectEnumerator]; + ApeTagItem* item; + int n = 0; + while ((item = [e nextObject]) != nil) { + if (![[item tag] compare:APE_TAG_FIELD_ARTIST]) { [d setObject:[item getString] forKey:@"artist"]; n++;} + if (![[item tag] compare:APE_TAG_FIELD_ALBUM]) {[d setObject:[item getString] forKey:@"album"]; n++;} + if (![[item tag] compare:APE_TAG_FIELD_TITLE]) {[d setObject:[item getString] forKey:@"title"]; n++;} + if (![[item tag] compare:APE_TAG_FIELD_TRACK]) {[d setObject:[item getString] forKey:@"track"]; n++;} + if (![[item tag] compare:APE_TAG_FIELD_GENRE]) {[d setObject:[item getString] forKey:@"genre"]; n++;} + if (![[item tag] compare:APE_TAG_FIELD_YEAR]) {[d setObject:[item getString] forKey:@"year"]; n++;} + } + if (n) + return d; + [d release]; d = nil; + return nil; +} + +-(NSData*) pack { + int len = 0, num = 0; + NSMutableData* d = [NSMutableData dataWithCapacity:8]; + NSEnumerator *e = [fields objectEnumerator]; + id item; + while ((item = [e nextObject]) != nil) + { + NSData* i = [item pack]; + [d appendData:i]; + len += [i length]; + num++; + } + UInt32 version = CFSwapInt32HostToLittle(CURRENT_APE_TAG_VERSION); + UInt32 size = CFSwapInt32HostToLittle(len + APE_TAG_FOOTER_BYTES); + UInt32 count = CFSwapInt32HostToLittle(num); + UInt32 flags = CFSwapInt32HostToLittle(APE_TAG_FLAGS_DEFAULT); + [d appendBytes:"APETAGEX" length:8]; + [d appendBytes:&version length:4]; + [d appendBytes:&size length:4]; + [d appendBytes:&count length:4]; + [d appendBytes:&flags length:4]; + [d appendBytes:"\0\0\0\0\0\0\0\0" length:8]; //reserved + return d; +} + +-(void) write:(NSFileHandle*)file { + [file writeData:[self pack]]; +} + +-(NSString*) readToNull:(NSFileHandle*)f { //!!! + NSMutableData* d = [NSMutableData dataWithCapacity:100]; //it will grow, here should be most expected value (may gain few nanosecond from it =) ) + while(true) { + NSData* byte = [f readDataOfLength:1]; + if (!byte) + { + [f seekToFileOffset:0-[d length]]; + return nil; + } + if (*((const char*)[byte bytes]) == 0) break; + [d appendData:byte]; + } + NSString* s = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding]; //!handle encoding error (in case binary data starts not from newline, impossible on real apl, but who knows...) + return s; +} + +-(bool) read:(NSFileHandle*)f { //reads from file, returns true on success + + //reading from file erases previous data: + [fields removeAllObjects]; + + //!! prefix header may be present and we should read it but lazyness... + NSString* header = @"APETAGEX"; + NSData* check = [f readDataOfLength:[header length]]; + [f seekToFileOffset:([f offsetInFile]-[check length])]; + if (check && [[[NSString alloc] initWithData:check encoding:NSASCIIStringEncoding] isEqualToString:header]) { + NSLog(@"Reading of prefix header not implemented"); + return false; + } + + //read fields and store 'em + while(true) { + NSData* check = [f readDataOfLength:[header length]]; + [f seekToFileOffset:([f offsetInFile]-[check length])]; + if (check && [[[NSString alloc] initWithData:check encoding:NSASCIIStringEncoding] isEqualToString:header]) break; // reached footer + + NSData* f_len = [f readDataOfLength:4]; + NSData* f_flag = [f readDataOfLength:4]; + NSString* f_name = [self readToNull:f]; + UInt32 len = CFSwapInt32LittleToHost(*(uint32_t*)[f_len bytes]); + UInt32 flags = CFSwapInt32LittleToHost(*(uint32_t*)[f_flag bytes]); + NSData* data = [f readDataOfLength:len]; + ApeTagItem* item = [ApeTagItem createTag:f_name flags:flags data:data]; + NSLog(@"Read tag '%@'='%@'", [item tag], [item getString]); + [fields addObject:item]; + } + //here we should read footer and check number of fields etc. - but who cares? =) + // just clean up file pointer: + [f readDataOfLength:APE_TAG_FOOTER_BYTES]; + return true; +} + +@end diff --git a/Plugins/APL/Info.plist b/Plugins/APL/Info.plist new file mode 100644 index 000000000..a5603ad03 --- /dev/null +++ b/Plugins/APL/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleName + ${PRODUCT_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.vasfed.cog.apl + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + NSPrincipalClass + + + diff --git a/Plugins/CueSheet/CueSheet.m b/Plugins/CueSheet/CueSheet.m index bf4459a4b..46628860e 100644 --- a/Plugins/CueSheet/CueSheet.m +++ b/Plugins/CueSheet/CueSheet.m @@ -181,6 +181,9 @@ NSEnumerator *e = [[[[NSClassFromString(@"PluginController") sharedPluginController] decodersByExtension] allKeys] objectEnumerator]; while (ext = [e nextObject]) { + if ([ext isEqualToString:@"cue"]) + continue; + NSMutableString* newURL = [originalURL mutableCopy]; [newURL replaceOccurrencesOfString:@"wav" withString:ext options:(NSAnchoredSearch | NSBackwardsSearch) range:NSMakeRange(0, [newURL length])];