initial commit
This commit is contained in:
parent
61f82ba7a4
commit
3b2d6d3f3e
12 changed files with 6904 additions and 0 deletions
32
Base64Decoder-Info.plist
Normal file
32
Base64Decoder-Info.plist
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
1392
Base64Decoder.xcodeproj/jeena.mode1v3
Normal file
1392
Base64Decoder.xcodeproj/jeena.mode1v3
Normal file
File diff suppressed because it is too large
Load diff
143
Base64Decoder.xcodeproj/jeena.pbxuser
Normal file
143
Base64Decoder.xcodeproj/jeena.pbxuser
Normal file
|
@ -0,0 +1,143 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
1FE6F2D511D9EDF1006101E7 /* Base64Decoder */ = {
|
||||
isa = PBXExecutable;
|
||||
activeArgIndices = (
|
||||
);
|
||||
argumentStrings = (
|
||||
);
|
||||
autoAttachOnCrash = 1;
|
||||
breakpointsEnabled = 0;
|
||||
configStateDict = {
|
||||
};
|
||||
customDataFormattersEnabled = 1;
|
||||
dataTipCustomDataFormattersEnabled = 1;
|
||||
dataTipShowTypeColumn = 1;
|
||||
dataTipSortType = 0;
|
||||
debuggerPlugin = GDBDebugging;
|
||||
disassemblyDisplayState = 0;
|
||||
dylibVariantSuffix = "";
|
||||
enableDebugStr = 1;
|
||||
environmentEntries = (
|
||||
);
|
||||
executableSystemSymbolLevel = 0;
|
||||
executableUserSymbolLevel = 0;
|
||||
libgmallocEnabled = 0;
|
||||
name = Base64Decoder;
|
||||
savedGlobals = {
|
||||
};
|
||||
showTypeColumn = 0;
|
||||
sourceDirectories = (
|
||||
);
|
||||
};
|
||||
1FE6F2E711D9EDF7006101E7 /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
1FE6F2E811D9EDF7006101E7 /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
1FE6F30011D9F7ED006101E7 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 256AC3D80F4B6AC300CF3369 /* Base64DecoderAppDelegate.h */;
|
||||
name = "Base64DecoderAppDelegate.h: 21";
|
||||
rLen = 11;
|
||||
rLoc = 493;
|
||||
rType = 0;
|
||||
vrLen = 512;
|
||||
vrLoc = 0;
|
||||
};
|
||||
1FE6F30111D9F7ED006101E7 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 256AC3D90F4B6AC300CF3369 /* Base64DecoderAppDelegate.m */;
|
||||
name = "Base64DecoderAppDelegate.m: 21";
|
||||
rLen = 0;
|
||||
rLoc = 451;
|
||||
rType = 0;
|
||||
vrLen = 543;
|
||||
vrLoc = 0;
|
||||
};
|
||||
1FE6F30211D9F7ED006101E7 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 256AC3D90F4B6AC300CF3369 /* Base64DecoderAppDelegate.m */;
|
||||
name = "Base64DecoderAppDelegate.m: 22";
|
||||
rLen = 0;
|
||||
rLoc = 570;
|
||||
rType = 0;
|
||||
vrLen = 676;
|
||||
vrLoc = 0;
|
||||
};
|
||||
256AC3D80F4B6AC300CF3369 /* Base64DecoderAppDelegate.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {519, 403}}";
|
||||
sepNavSelRange = "{493, 11}";
|
||||
sepNavVisRange = "{0, 512}";
|
||||
};
|
||||
};
|
||||
256AC3D90F4B6AC300CF3369 /* Base64DecoderAppDelegate.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {649, 474}}";
|
||||
sepNavSelRange = "{570, 0}";
|
||||
sepNavVisRange = "{0, 676}";
|
||||
};
|
||||
};
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeExecutable = 1FE6F2D511D9EDF1006101E7 /* Base64Decoder */;
|
||||
activeTarget = 8D1107260486CEB800E47090 /* Base64Decoder */;
|
||||
addToTargets = (
|
||||
8D1107260486CEB800E47090 /* Base64Decoder */,
|
||||
);
|
||||
codeSenseManager = 1FE6F2E811D9EDF7006101E7 /* Code sense */;
|
||||
executables = (
|
||||
1FE6F2D511D9EDF1006101E7 /* Base64Decoder */,
|
||||
);
|
||||
perUserDictionary = {
|
||||
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
341,
|
||||
20,
|
||||
48.16259765625,
|
||||
43,
|
||||
43,
|
||||
20,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXFileDataSource_FiletypeID,
|
||||
PBXFileDataSource_Filename_ColumnID,
|
||||
PBXFileDataSource_Built_ColumnID,
|
||||
PBXFileDataSource_ObjectSize_ColumnID,
|
||||
PBXFileDataSource_Errors_ColumnID,
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
PBXFileDataSource_Target_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 299494897;
|
||||
PBXWorkspaceStateSaveDate = 299494897;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
1FE6F30011D9F7ED006101E7 /* PBXTextBookmark */ = 1FE6F30011D9F7ED006101E7 /* PBXTextBookmark */;
|
||||
1FE6F30111D9F7ED006101E7 /* PBXTextBookmark */ = 1FE6F30111D9F7ED006101E7 /* PBXTextBookmark */;
|
||||
1FE6F30211D9F7ED006101E7 /* PBXTextBookmark */ = 1FE6F30211D9F7ED006101E7 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 1FE6F2E711D9EDF7006101E7 /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8D1107260486CEB800E47090 /* Base64Decoder */ = {
|
||||
activeExec = 0;
|
||||
executables = (
|
||||
1FE6F2D511D9EDF1006101E7 /* Base64Decoder */,
|
||||
);
|
||||
};
|
||||
}
|
288
Base64Decoder.xcodeproj/project.pbxproj
Normal file
288
Base64Decoder.xcodeproj/project.pbxproj
Normal file
|
@ -0,0 +1,288 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
|
||||
1FE6F2ED11D9F057006101E7 /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FE6F2EC11D9F057006101E7 /* NSData+Base64.m */; };
|
||||
256AC3DA0F4B6AC300CF3369 /* Base64DecoderAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* Base64DecoderAppDelegate.m */; };
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
1FE6F2EB11D9F057006101E7 /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = "<group>"; };
|
||||
1FE6F2EC11D9F057006101E7 /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = "<group>"; };
|
||||
256AC3D80F4B6AC300CF3369 /* Base64DecoderAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64DecoderAppDelegate.h; sourceTree = "<group>"; };
|
||||
256AC3D90F4B6AC300CF3369 /* Base64DecoderAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Base64DecoderAppDelegate.m; sourceTree = "<group>"; };
|
||||
256AC3F00F4B6AF500CF3369 /* Base64Decoder_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64Decoder_Prefix.pch; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
8D1107310486CEB800E47090 /* Base64Decoder-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Base64Decoder-Info.plist"; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* Base64Decoder.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Base64Decoder.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8D11072E0486CEB800E47090 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1FE6F2EB11D9F057006101E7 /* NSData+Base64.h */,
|
||||
1FE6F2EC11D9F057006101E7 /* NSData+Base64.m */,
|
||||
256AC3D80F4B6AC300CF3369 /* Base64DecoderAppDelegate.h */,
|
||||
256AC3D90F4B6AC300CF3369 /* Base64DecoderAppDelegate.m */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107320486CEB800E47090 /* Base64Decoder.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* Base64Decoder */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = Base64Decoder;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
256AC3F00F4B6AF500CF3369 /* Base64Decoder_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107310486CEB800E47090 /* Base64Decoder-Info.plist */,
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8D1107260486CEB800E47090 /* Base64Decoder */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Base64Decoder" */;
|
||||
buildPhases = (
|
||||
8D1107290486CEB800E47090 /* Resources */,
|
||||
8D11072C0486CEB800E47090 /* Sources */,
|
||||
8D11072E0486CEB800E47090 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Base64Decoder;
|
||||
productInstallPath = "$(HOME)/Applications";
|
||||
productName = Base64Decoder;
|
||||
productReference = 8D1107320486CEB800E47090 /* Base64Decoder.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Base64Decoder" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* Base64Decoder */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D1107260486CEB800E47090 /* Base64Decoder */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8D1107290486CEB800E47090 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D11072C0486CEB800E47090 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */,
|
||||
256AC3DA0F4B6AC300CF3369 /* Base64DecoderAppDelegate.m in Sources */,
|
||||
1FE6F2ED11D9F057006101E7 /* NSData+Base64.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
089C165DFE840E0CC02AAC07 /* English */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
1DDD58150DA1D0A300B32029 /* English */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
C01FCF4B08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Base64Decoder_Prefix.pch;
|
||||
INFOPLIST_FILE = "Base64Decoder-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = Base64Decoder;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF4C08A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Base64Decoder_Prefix.pch;
|
||||
INFOPLIST_FILE = "Base64Decoder-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = Base64Decoder;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Base64Decoder" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4B08A954540054247B /* Debug */,
|
||||
C01FCF4C08A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Base64Decoder" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
23
Base64DecoderAppDelegate.h
Normal file
23
Base64DecoderAppDelegate.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
//
|
||||
// Base64DecoderAppDelegate.h
|
||||
// Base64Decoder
|
||||
//
|
||||
// Created by Jeena on 29.06.10.
|
||||
// Copyright 2010 Jeena Paradies. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface Base64DecoderAppDelegate : NSObject <NSApplicationDelegate> {
|
||||
NSWindow *window;
|
||||
IBOutlet NSTextField *input;
|
||||
IBOutlet NSTextView *output;
|
||||
}
|
||||
|
||||
@property (assign) IBOutlet NSWindow *window;
|
||||
@property (assign) IBOutlet NSTextField *input;
|
||||
@property (assign) IBOutlet NSTextView *output;
|
||||
|
||||
- (IBAction)decode:(id)sender;
|
||||
|
||||
@end
|
26
Base64DecoderAppDelegate.m
Normal file
26
Base64DecoderAppDelegate.m
Normal file
|
@ -0,0 +1,26 @@
|
|||
//
|
||||
// Base64DecoderAppDelegate.m
|
||||
// Base64Decoder
|
||||
//
|
||||
// Created by Jeena on 29.06.10.
|
||||
// Copyright 2010 Jeena Paradies. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Base64DecoderAppDelegate.h"
|
||||
#import "NSData+Base64.h"
|
||||
|
||||
@implementation Base64DecoderAppDelegate
|
||||
|
||||
@synthesize window, input, output;
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
||||
// Insert code here to initialize your application
|
||||
}
|
||||
|
||||
- (IBAction)decode:(id)sender {
|
||||
NSData* data = [NSData dataFromBase64String:[input stringValue]];
|
||||
NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
|
||||
[[[output textStorage] mutableString] appendString:string];
|
||||
}
|
||||
|
||||
@end
|
7
Base64Decoder_Prefix.pch
Normal file
7
Base64Decoder_Prefix.pch
Normal file
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// Prefix header for all source files of the 'Base64Decoder' target in the 'Base64Decoder' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
2
English.lproj/InfoPlist.strings
Normal file
2
English.lproj/InfoPlist.strings
Normal file
|
@ -0,0 +1,2 @@
|
|||
/* Localized versions of Info.plist keys */
|
||||
|
4645
English.lproj/MainMenu.xib
Normal file
4645
English.lproj/MainMenu.xib
Normal file
File diff suppressed because it is too large
Load diff
33
NSData+Base64.h
Normal file
33
NSData+Base64.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
//
|
||||
// NSData+Base64.h
|
||||
// base64
|
||||
//
|
||||
// Created by Matt Gallagher on 2009/06/03.
|
||||
// Copyright 2009 Matt Gallagher. All rights reserved.
|
||||
//
|
||||
// Permission is given to use this source code file, free of charge, in any
|
||||
// project, commercial or otherwise, entirely at your risk, with the condition
|
||||
// that any redistribution (in part or whole) of source code must retain
|
||||
// this copyright and permission notice. Attribution in compiled projects is
|
||||
// appreciated but not required.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
void *NewBase64Decode(
|
||||
const char *inputBuffer,
|
||||
size_t length,
|
||||
size_t *outputLength);
|
||||
|
||||
char *NewBase64Encode(
|
||||
const void *inputBuffer,
|
||||
size_t length,
|
||||
bool separateLines,
|
||||
size_t *outputLength);
|
||||
|
||||
@interface NSData (Base64)
|
||||
|
||||
+ (NSData *)dataFromBase64String:(NSString *)aString;
|
||||
- (NSString *)base64EncodedString;
|
||||
|
||||
@end
|
299
NSData+Base64.m
Normal file
299
NSData+Base64.m
Normal file
|
@ -0,0 +1,299 @@
|
|||
//
|
||||
// NSData+Base64.m
|
||||
// base64
|
||||
//
|
||||
// Created by Matt Gallagher on 2009/06/03.
|
||||
// Copyright 2009 Matt Gallagher. All rights reserved.
|
||||
//
|
||||
// Permission is given to use this source code file, free of charge, in any
|
||||
// project, commercial or otherwise, entirely at your risk, with the condition
|
||||
// that any redistribution (in part or whole) of source code must retain
|
||||
// this copyright and permission notice. Attribution in compiled projects is
|
||||
// appreciated but not required.
|
||||
//
|
||||
|
||||
#import "NSData+Base64.h"
|
||||
|
||||
//
|
||||
// Mapping from 6 bit pattern to ASCII character.
|
||||
//
|
||||
static unsigned char base64EncodeLookup[65] =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
|
||||
//
|
||||
// Definition for "masked-out" areas of the base64DecodeLookup mapping
|
||||
//
|
||||
#define xx 65
|
||||
|
||||
//
|
||||
// Mapping from ASCII character to 6 bit pattern.
|
||||
//
|
||||
static unsigned char base64DecodeLookup[256] =
|
||||
{
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 62, xx, xx, xx, 63,
|
||||
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, xx, xx, xx, xx, xx, xx,
|
||||
xx, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, xx, xx, xx, xx, xx,
|
||||
xx, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
|
||||
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
|
||||
};
|
||||
|
||||
//
|
||||
// Fundamental sizes of the binary and base64 encode/decode units in bytes
|
||||
//
|
||||
#define BINARY_UNIT_SIZE 3
|
||||
#define BASE64_UNIT_SIZE 4
|
||||
|
||||
//
|
||||
// NewBase64Decode
|
||||
//
|
||||
// Decodes the base64 ASCII string in the inputBuffer to a newly malloced
|
||||
// output buffer.
|
||||
//
|
||||
// inputBuffer - the source ASCII string for the decode
|
||||
// length - the length of the string or -1 (to specify strlen should be used)
|
||||
// outputLength - if not-NULL, on output will contain the decoded length
|
||||
//
|
||||
// returns the decoded buffer. Must be free'd by caller. Length is given by
|
||||
// outputLength.
|
||||
//
|
||||
void *NewBase64Decode(
|
||||
const char *inputBuffer,
|
||||
size_t length,
|
||||
size_t *outputLength)
|
||||
{
|
||||
if (length == -1)
|
||||
{
|
||||
length = strlen(inputBuffer);
|
||||
}
|
||||
|
||||
size_t outputBufferSize =
|
||||
((length+BASE64_UNIT_SIZE-1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE;
|
||||
unsigned char *outputBuffer = (unsigned char *)malloc(outputBufferSize);
|
||||
|
||||
size_t i = 0;
|
||||
size_t j = 0;
|
||||
while (i < length)
|
||||
{
|
||||
//
|
||||
// Accumulate 4 valid characters (ignore everything else)
|
||||
//
|
||||
unsigned char accumulated[BASE64_UNIT_SIZE];
|
||||
size_t accumulateIndex = 0;
|
||||
while (i < length)
|
||||
{
|
||||
unsigned char decode = base64DecodeLookup[inputBuffer[i++]];
|
||||
if (decode != xx)
|
||||
{
|
||||
accumulated[accumulateIndex] = decode;
|
||||
accumulateIndex++;
|
||||
|
||||
if (accumulateIndex == BASE64_UNIT_SIZE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Store the 6 bits from each of the 4 characters as 3 bytes
|
||||
//
|
||||
outputBuffer[j] = (accumulated[0] << 2) | (accumulated[1] >> 4);
|
||||
outputBuffer[j + 1] = (accumulated[1] << 4) | (accumulated[2] >> 2);
|
||||
outputBuffer[j + 2] = (accumulated[2] << 6) | accumulated[3];
|
||||
j += accumulateIndex - 1;
|
||||
}
|
||||
|
||||
if (outputLength)
|
||||
{
|
||||
*outputLength = j;
|
||||
}
|
||||
return outputBuffer;
|
||||
}
|
||||
|
||||
//
|
||||
// NewBase64Decode
|
||||
//
|
||||
// Encodes the arbitrary data in the inputBuffer as base64 into a newly malloced
|
||||
// output buffer.
|
||||
//
|
||||
// inputBuffer - the source data for the encode
|
||||
// length - the length of the input in bytes
|
||||
// separateLines - if zero, no CR/LF characters will be added. Otherwise
|
||||
// a CR/LF pair will be added every 64 encoded chars.
|
||||
// outputLength - if not-NULL, on output will contain the encoded length
|
||||
// (not including terminating 0 char)
|
||||
//
|
||||
// returns the encoded buffer. Must be free'd by caller. Length is given by
|
||||
// outputLength.
|
||||
//
|
||||
char *NewBase64Encode(
|
||||
const void *buffer,
|
||||
size_t length,
|
||||
bool separateLines,
|
||||
size_t *outputLength)
|
||||
{
|
||||
const unsigned char *inputBuffer = (const unsigned char *)buffer;
|
||||
|
||||
#define MAX_NUM_PADDING_CHARS 2
|
||||
#define OUTPUT_LINE_LENGTH 64
|
||||
#define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE)
|
||||
#define CR_LF_SIZE 2
|
||||
|
||||
//
|
||||
// Byte accurate calculation of final buffer size
|
||||
//
|
||||
size_t outputBufferSize =
|
||||
((length / BINARY_UNIT_SIZE)
|
||||
+ ((length % BINARY_UNIT_SIZE) ? 1 : 0))
|
||||
* BASE64_UNIT_SIZE;
|
||||
if (separateLines)
|
||||
{
|
||||
outputBufferSize +=
|
||||
(outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE;
|
||||
}
|
||||
|
||||
//
|
||||
// Include space for a terminating zero
|
||||
//
|
||||
outputBufferSize += 1;
|
||||
|
||||
//
|
||||
// Allocate the output buffer
|
||||
//
|
||||
char *outputBuffer = (char *)malloc(outputBufferSize);
|
||||
if (!outputBuffer)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t i = 0;
|
||||
size_t j = 0;
|
||||
const size_t lineLength = separateLines ? INPUT_LINE_LENGTH : length;
|
||||
size_t lineEnd = lineLength;
|
||||
|
||||
while (true)
|
||||
{
|
||||
if (lineEnd > length)
|
||||
{
|
||||
lineEnd = length;
|
||||
}
|
||||
|
||||
for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE)
|
||||
{
|
||||
//
|
||||
// Inner loop: turn 48 bytes into 64 base64 characters
|
||||
//
|
||||
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
|
||||
outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4)
|
||||
| ((inputBuffer[i + 1] & 0xF0) >> 4)];
|
||||
outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2)
|
||||
| ((inputBuffer[i + 2] & 0xC0) >> 6)];
|
||||
outputBuffer[j++] = base64EncodeLookup[inputBuffer[i + 2] & 0x3F];
|
||||
}
|
||||
|
||||
if (lineEnd == length)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// Add the newline
|
||||
//
|
||||
outputBuffer[j++] = '\r';
|
||||
outputBuffer[j++] = '\n';
|
||||
lineEnd += lineLength;
|
||||
}
|
||||
|
||||
if (i + 1 < length)
|
||||
{
|
||||
//
|
||||
// Handle the single '=' case
|
||||
//
|
||||
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
|
||||
outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4)
|
||||
| ((inputBuffer[i + 1] & 0xF0) >> 4)];
|
||||
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2];
|
||||
outputBuffer[j++] = '=';
|
||||
}
|
||||
else if (i < length)
|
||||
{
|
||||
//
|
||||
// Handle the double '=' case
|
||||
//
|
||||
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
|
||||
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0x03) << 4];
|
||||
outputBuffer[j++] = '=';
|
||||
outputBuffer[j++] = '=';
|
||||
}
|
||||
outputBuffer[j] = 0;
|
||||
|
||||
//
|
||||
// Set the output length and return the buffer
|
||||
//
|
||||
if (outputLength)
|
||||
{
|
||||
*outputLength = j;
|
||||
}
|
||||
return outputBuffer;
|
||||
}
|
||||
|
||||
@implementation NSData (Base64)
|
||||
|
||||
//
|
||||
// dataFromBase64String:
|
||||
//
|
||||
// Creates an NSData object containing the base64 decoded representation of
|
||||
// the base64 string 'aString'
|
||||
//
|
||||
// Parameters:
|
||||
// aString - the base64 string to decode
|
||||
//
|
||||
// returns the autoreleased NSData representation of the base64 string
|
||||
//
|
||||
+ (NSData *)dataFromBase64String:(NSString *)aString
|
||||
{
|
||||
NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];
|
||||
size_t outputLength;
|
||||
void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength);
|
||||
NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength];
|
||||
free(outputBuffer);
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// base64EncodedString
|
||||
//
|
||||
// Creates an NSString object that contains the base 64 encoding of the
|
||||
// receiver's data. Lines are broken at 64 characters long.
|
||||
//
|
||||
// returns an autoreleased NSString being the base 64 representation of the
|
||||
// receiver.
|
||||
//
|
||||
- (NSString *)base64EncodedString
|
||||
{
|
||||
size_t outputLength;
|
||||
char *outputBuffer =
|
||||
NewBase64Encode([self bytes], [self length], true, &outputLength);
|
||||
|
||||
NSString *result =
|
||||
[[[NSString alloc]
|
||||
initWithBytes:outputBuffer
|
||||
length:outputLength
|
||||
encoding:NSASCIIStringEncoding]
|
||||
autorelease];
|
||||
free(outputBuffer);
|
||||
return result;
|
||||
}
|
||||
|
||||
@end
|
14
main.m
Normal file
14
main.m
Normal file
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
// main.m
|
||||
// Base64Decoder
|
||||
//
|
||||
// Created by Jeena on 29.06.10.
|
||||
// Copyright 2010 Jeena Paradies. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
return NSApplicationMain(argc, (const char **) argv);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue