mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-10 09:40:53 +01:00
Warning removal. New class XUINTN (not yet used).
This commit is contained in:
parent
e6509221b4
commit
19cfe2831a
@ -30,6 +30,29 @@
|
||||
9A0B087E2403B08400E2B470 /* XArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08532402FE9B00E2B470 /* XArray_tests.cpp */; };
|
||||
9A0B087F2403B08400E2B470 /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B085D240300E000E2B470 /* Platform.cpp */; };
|
||||
9A0B08802403B08400E2B470 /* XStringW_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08552402FE9B00E2B470 /* XStringW_test.cpp */; };
|
||||
9A57C20D2418A27B0029A39F /* XUINTN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C20B2418A27B0029A39F /* XUINTN.cpp */; };
|
||||
9A57C20E2418A27B0029A39F /* XUINTN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C20B2418A27B0029A39F /* XUINTN.cpp */; };
|
||||
9A57C2112418A3560029A39F /* XUINTN_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C20F2418A3550029A39F /* XUINTN_test.cpp */; };
|
||||
9A57C2122418A3560029A39F /* XUINTN_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C20F2418A3550029A39F /* XUINTN_test.cpp */; };
|
||||
9A57C2152418A6EA0029A39F /* XStringWP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C2132418A6E90029A39F /* XStringWP.cpp */; };
|
||||
9A57C2162418A6EA0029A39F /* XStringWP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C2132418A6E90029A39F /* XStringWP.cpp */; };
|
||||
9A57C2192418B9A00029A39F /* XUINTN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C20B2418A27B0029A39F /* XUINTN.cpp */; };
|
||||
9A57C21A2418B9A00029A39F /* XObjArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08522402FE9B00E2B470 /* XObjArray_tests.cpp */; };
|
||||
9A57C21B2418B9A00029A39F /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9223302402FD1000483CBA /* main.cpp */; };
|
||||
9A57C21C2418B9A00029A39F /* printf_lite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B086B24039FE700E2B470 /* printf_lite.cpp */; };
|
||||
9A57C21D2418B9A00029A39F /* XStringWArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */; };
|
||||
9A57C21E2418B9A00029A39F /* XUINTN_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C20F2418A3550029A39F /* XUINTN_test.cpp */; };
|
||||
9A57C21F2418B9A00029A39F /* utf8Conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA05BB6240FC78D008EA4F8 /* utf8Conversion.cpp */; };
|
||||
9A57C2202418B9A00029A39F /* panic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC780A32417DD2F005CDD5C /* panic.cpp */; };
|
||||
9A57C2212418B9A00029A39F /* XStringW.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08482402FE9300E2B470 /* XStringW.cpp */; };
|
||||
9A57C2222418B9A00029A39F /* all_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08512402FE9B00E2B470 /* all_tests.cpp */; };
|
||||
9A57C2232418B9A00029A39F /* global_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08642403144C00E2B470 /* global_test.cpp */; };
|
||||
9A57C2242418B9A00029A39F /* XToolsCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08492402FE9300E2B470 /* XToolsCommon.cpp */; };
|
||||
9A57C2252418B9A00029A39F /* XStringWArray_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */; };
|
||||
9A57C2262418B9A00029A39F /* XStringWP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A57C2132418A6E90029A39F /* XStringWP.cpp */; };
|
||||
9A57C2272418B9A00029A39F /* XArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08532402FE9B00E2B470 /* XArray_tests.cpp */; };
|
||||
9A57C2282418B9A00029A39F /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B085D240300E000E2B470 /* Platform.cpp */; };
|
||||
9A57C2292418B9A00029A39F /* XStringW_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08552402FE9B00E2B470 /* XStringW_test.cpp */; };
|
||||
9A9223312402FD1000483CBA /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9223302402FD1000483CBA /* main.cpp */; };
|
||||
9AA05BB7240FC78D008EA4F8 /* utf8Conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA05BB6240FC78D008EA4F8 /* utf8Conversion.cpp */; };
|
||||
9AA05BB8240FC78D008EA4F8 /* utf8Conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA05BB6240FC78D008EA4F8 /* utf8Conversion.cpp */; };
|
||||
@ -47,6 +70,15 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
9A57C22B2418B9A00029A39F /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
9A92232B2402FD1000483CBA /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -82,7 +114,15 @@
|
||||
9A0B086B24039FE700E2B470 /* printf_lite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = printf_lite.cpp; path = "../../../../../Embedded/Shared/printf_lite-master/printf_lite.cpp"; sourceTree = "<group>"; };
|
||||
9A0B086C24039FE700E2B470 /* printf_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = printf_lite.h; path = "../../../../../Embedded/Shared/printf_lite-master/printf_lite.h"; sourceTree = "<group>"; };
|
||||
9A0B08862403B08400E2B470 /* cpp_tests UTF32 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cpp_tests UTF32"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9A92232D2402FD1000483CBA /* cpp_tests UTF16 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cpp_tests UTF16"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9A57C20A2418A1FD0029A39F /* global_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = global_test.h; sourceTree = "<group>"; };
|
||||
9A57C20B2418A27B0029A39F /* XUINTN.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XUINTN.cpp; sourceTree = "<group>"; };
|
||||
9A57C20C2418A27B0029A39F /* XUINTN.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XUINTN.h; sourceTree = "<group>"; };
|
||||
9A57C20F2418A3550029A39F /* XUINTN_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XUINTN_test.cpp; sourceTree = "<group>"; };
|
||||
9A57C2102418A3550029A39F /* XUINTN_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XUINTN_test.h; sourceTree = "<group>"; };
|
||||
9A57C2132418A6E90029A39F /* XStringWP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XStringWP.cpp; sourceTree = "<group>"; };
|
||||
9A57C2142418A6EA0029A39F /* XStringWP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XStringWP.h; sourceTree = "<group>"; };
|
||||
9A57C22F2418B9A00029A39F /* cpp_tests UTF16 unsigned char */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cpp_tests UTF16 unsigned char"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9A92232D2402FD1000483CBA /* cpp_tests UTF16 signed char */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cpp_tests UTF16 signed char"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9A9223302402FD1000483CBA /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
|
||||
9A92234D2402FD9500483CBA /* Platform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = "<group>"; };
|
||||
9AA05BB6240FC78D008EA4F8 /* utf8Conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = utf8Conversion.cpp; sourceTree = "<group>"; };
|
||||
@ -99,6 +139,13 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
9A57C22A2418B9A00029A39F /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
9A92232A2402FD1000483CBA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -112,18 +159,22 @@
|
||||
9A0B08432402FE9300E2B470 /* cpp_foundation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9A0B08452402FE9300E2B470 /* XToolsCommon.h */,
|
||||
9A0B08492402FE9300E2B470 /* XToolsCommon.cpp */,
|
||||
9A0B08442402FE9300E2B470 /* XStringWArray.h */,
|
||||
9A0B08472402FE9300E2B470 /* XStringWArray.cpp */,
|
||||
9A0B08462402FE9300E2B470 /* XStringW.h */,
|
||||
9A0B08482402FE9300E2B470 /* XStringW.cpp */,
|
||||
9A0B084A2402FE9300E2B470 /* XArray.h */,
|
||||
9A0B084B2402FE9300E2B470 /* XObjArray.h */,
|
||||
9A0B086B24039FE700E2B470 /* printf_lite.cpp */,
|
||||
9A0B086C24039FE700E2B470 /* printf_lite.h */,
|
||||
9AA05BB6240FC78D008EA4F8 /* utf8Conversion.cpp */,
|
||||
9AA05BB9240FC796008EA4F8 /* utf8Conversion.h */,
|
||||
9A0B084A2402FE9300E2B470 /* XArray.h */,
|
||||
9A0B084B2402FE9300E2B470 /* XObjArray.h */,
|
||||
9A0B08482402FE9300E2B470 /* XStringW.cpp */,
|
||||
9A0B08462402FE9300E2B470 /* XStringW.h */,
|
||||
9A0B08472402FE9300E2B470 /* XStringWArray.cpp */,
|
||||
9A0B08442402FE9300E2B470 /* XStringWArray.h */,
|
||||
9A57C2132418A6E90029A39F /* XStringWP.cpp */,
|
||||
9A57C2142418A6EA0029A39F /* XStringWP.h */,
|
||||
9A0B08492402FE9300E2B470 /* XToolsCommon.cpp */,
|
||||
9A0B08452402FE9300E2B470 /* XToolsCommon.h */,
|
||||
9A57C20B2418A27B0029A39F /* XUINTN.cpp */,
|
||||
9A57C20C2418A27B0029A39F /* XUINTN.h */,
|
||||
);
|
||||
name = cpp_foundation;
|
||||
path = ../../rEFIt_UEFI/cpp_foundation;
|
||||
@ -132,17 +183,20 @@
|
||||
9A0B084C2402FE9B00E2B470 /* cpp_unit_test */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9A0B08642403144C00E2B470 /* global_test.cpp */,
|
||||
9A0B08542402FE9B00E2B470 /* all_tests.h */,
|
||||
9A0B08512402FE9B00E2B470 /* all_tests.cpp */,
|
||||
9A0B08632403132300E2B470 /* XStringW_test.h */,
|
||||
9A0B08552402FE9B00E2B470 /* XStringW_test.cpp */,
|
||||
9A0B084D2402FE9B00E2B470 /* XStringWArray_test.h */,
|
||||
9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */,
|
||||
9A0B084E2402FE9B00E2B470 /* XArray_tests.h */,
|
||||
9A0B08542402FE9B00E2B470 /* all_tests.h */,
|
||||
9A0B08642403144C00E2B470 /* global_test.cpp */,
|
||||
9A57C20A2418A1FD0029A39F /* global_test.h */,
|
||||
9A0B08532402FE9B00E2B470 /* XArray_tests.cpp */,
|
||||
9A0B08502402FE9B00E2B470 /* XObjArray_tests.h */,
|
||||
9A0B084E2402FE9B00E2B470 /* XArray_tests.h */,
|
||||
9A0B08522402FE9B00E2B470 /* XObjArray_tests.cpp */,
|
||||
9A0B08502402FE9B00E2B470 /* XObjArray_tests.h */,
|
||||
9A0B08552402FE9B00E2B470 /* XStringW_test.cpp */,
|
||||
9A0B08632403132300E2B470 /* XStringW_test.h */,
|
||||
9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */,
|
||||
9A0B084D2402FE9B00E2B470 /* XStringWArray_test.h */,
|
||||
9A57C20F2418A3550029A39F /* XUINTN_test.cpp */,
|
||||
9A57C2102418A3550029A39F /* XUINTN_test.h */,
|
||||
);
|
||||
name = cpp_unit_test;
|
||||
path = ../../rEFIt_UEFI/cpp_unit_test;
|
||||
@ -162,8 +216,9 @@
|
||||
9A92232E2402FD1000483CBA /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9A92232D2402FD1000483CBA /* cpp_tests UTF16 */,
|
||||
9A92232D2402FD1000483CBA /* cpp_tests UTF16 signed char */,
|
||||
9A0B08862403B08400E2B470 /* cpp_tests UTF32 */,
|
||||
9A57C22F2418B9A00029A39F /* cpp_tests UTF16 unsigned char */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@ -209,9 +264,26 @@
|
||||
productReference = 9A0B08862403B08400E2B470 /* cpp_tests UTF32 */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
9A92232C2402FD1000483CBA /* cpp_tests UTF16 */ = {
|
||||
9A57C2172418B9A00029A39F /* cpp_tests UTF16 unsigned char */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 9A9223342402FD1000483CBA /* Build configuration list for PBXNativeTarget "cpp_tests UTF16" */;
|
||||
buildConfigurationList = 9A57C22C2418B9A00029A39F /* Build configuration list for PBXNativeTarget "cpp_tests UTF16 unsigned char" */;
|
||||
buildPhases = (
|
||||
9A57C2182418B9A00029A39F /* Sources */,
|
||||
9A57C22A2418B9A00029A39F /* Frameworks */,
|
||||
9A57C22B2418B9A00029A39F /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "cpp_tests UTF16 unsigned char";
|
||||
productName = cpp_tests;
|
||||
productReference = 9A57C22F2418B9A00029A39F /* cpp_tests UTF16 unsigned char */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
9A92232C2402FD1000483CBA /* cpp_tests UTF16 signed char */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 9A9223342402FD1000483CBA /* Build configuration list for PBXNativeTarget "cpp_tests UTF16 signed char" */;
|
||||
buildPhases = (
|
||||
9A9223292402FD1000483CBA /* Sources */,
|
||||
9A92232A2402FD1000483CBA /* Frameworks */,
|
||||
@ -221,9 +293,9 @@
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "cpp_tests UTF16";
|
||||
name = "cpp_tests UTF16 signed char";
|
||||
productName = cpp_tests;
|
||||
productReference = 9A92232D2402FD1000483CBA /* cpp_tests UTF16 */;
|
||||
productReference = 9A92232D2402FD1000483CBA /* cpp_tests UTF16 signed char */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
@ -252,8 +324,9 @@
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
9A92232C2402FD1000483CBA /* cpp_tests UTF16 */,
|
||||
9A92232C2402FD1000483CBA /* cpp_tests UTF16 signed char */,
|
||||
9A0B08712403B08400E2B470 /* cpp_tests UTF32 */,
|
||||
9A57C2172418B9A00029A39F /* cpp_tests UTF16 unsigned char */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@ -263,10 +336,12 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9A57C20E2418A27B0029A39F /* XUINTN.cpp in Sources */,
|
||||
9A0B08732403B08400E2B470 /* XObjArray_tests.cpp in Sources */,
|
||||
9A0B08742403B08400E2B470 /* main.cpp in Sources */,
|
||||
9A0B08752403B08400E2B470 /* printf_lite.cpp in Sources */,
|
||||
9A0B08772403B08400E2B470 /* XStringWArray.cpp in Sources */,
|
||||
9A57C2122418A3560029A39F /* XUINTN_test.cpp in Sources */,
|
||||
9AA05BB8240FC78D008EA4F8 /* utf8Conversion.cpp in Sources */,
|
||||
9AC780AF2417DD2F005CDD5C /* panic.cpp in Sources */,
|
||||
9A0B08792403B08400E2B470 /* XStringW.cpp in Sources */,
|
||||
@ -274,20 +349,47 @@
|
||||
9A0B087B2403B08400E2B470 /* global_test.cpp in Sources */,
|
||||
9A0B087C2403B08400E2B470 /* XToolsCommon.cpp in Sources */,
|
||||
9A0B087D2403B08400E2B470 /* XStringWArray_test.cpp in Sources */,
|
||||
9A57C2162418A6EA0029A39F /* XStringWP.cpp in Sources */,
|
||||
9A0B087E2403B08400E2B470 /* XArray_tests.cpp in Sources */,
|
||||
9A0B087F2403B08400E2B470 /* Platform.cpp in Sources */,
|
||||
9A0B08802403B08400E2B470 /* XStringW_test.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
9A57C2182418B9A00029A39F /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9A57C2192418B9A00029A39F /* XUINTN.cpp in Sources */,
|
||||
9A57C21A2418B9A00029A39F /* XObjArray_tests.cpp in Sources */,
|
||||
9A57C21B2418B9A00029A39F /* main.cpp in Sources */,
|
||||
9A57C21C2418B9A00029A39F /* printf_lite.cpp in Sources */,
|
||||
9A57C21D2418B9A00029A39F /* XStringWArray.cpp in Sources */,
|
||||
9A57C21E2418B9A00029A39F /* XUINTN_test.cpp in Sources */,
|
||||
9A57C21F2418B9A00029A39F /* utf8Conversion.cpp in Sources */,
|
||||
9A57C2202418B9A00029A39F /* panic.cpp in Sources */,
|
||||
9A57C2212418B9A00029A39F /* XStringW.cpp in Sources */,
|
||||
9A57C2222418B9A00029A39F /* all_tests.cpp in Sources */,
|
||||
9A57C2232418B9A00029A39F /* global_test.cpp in Sources */,
|
||||
9A57C2242418B9A00029A39F /* XToolsCommon.cpp in Sources */,
|
||||
9A57C2252418B9A00029A39F /* XStringWArray_test.cpp in Sources */,
|
||||
9A57C2262418B9A00029A39F /* XStringWP.cpp in Sources */,
|
||||
9A57C2272418B9A00029A39F /* XArray_tests.cpp in Sources */,
|
||||
9A57C2282418B9A00029A39F /* Platform.cpp in Sources */,
|
||||
9A57C2292418B9A00029A39F /* XStringW_test.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
9A9223292402FD1000483CBA /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9A57C20D2418A27B0029A39F /* XUINTN.cpp in Sources */,
|
||||
9A0B085A2402FF8400E2B470 /* XObjArray_tests.cpp in Sources */,
|
||||
9A9223312402FD1000483CBA /* main.cpp in Sources */,
|
||||
9A0B086D24039FE700E2B470 /* printf_lite.cpp in Sources */,
|
||||
9A0B08562402FF7700E2B470 /* XStringWArray.cpp in Sources */,
|
||||
9A57C2112418A3560029A39F /* XUINTN_test.cpp in Sources */,
|
||||
9AA05BB7240FC78D008EA4F8 /* utf8Conversion.cpp in Sources */,
|
||||
9AC780AE2417DD2F005CDD5C /* panic.cpp in Sources */,
|
||||
9A0B085F240308E400E2B470 /* XStringW.cpp in Sources */,
|
||||
@ -295,6 +397,7 @@
|
||||
9A0B08662403144C00E2B470 /* global_test.cpp in Sources */,
|
||||
9A0B08572402FF7A00E2B470 /* XToolsCommon.cpp in Sources */,
|
||||
9A0B08582402FF7F00E2B470 /* XStringWArray_test.cpp in Sources */,
|
||||
9A57C2152418A6EA0029A39F /* XStringWP.cpp in Sources */,
|
||||
9A0B085B2402FF8700E2B470 /* XArray_tests.cpp in Sources */,
|
||||
9A0B085E240300E000E2B470 /* Platform.cpp in Sources */,
|
||||
9A0B085C2402FF8B00E2B470 /* XStringW_test.cpp in Sources */,
|
||||
@ -308,6 +411,7 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = JIEF_DEBUG;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
@ -320,6 +424,25 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
9A57C22D2418B9A00029A39F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
GCC_CHAR_IS_UNSIGNED_CHAR = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = JIEF_DEBUG;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
9A57C22E2418B9A00029A39F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
GCC_CHAR_IS_UNSIGNED_CHAR = YES;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
9A9223322402FD1000483CBA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@ -331,27 +454,38 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_FLOAT_CONVERSION = YES;
|
||||
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_INTERFACE_IVARS = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
|
||||
CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES_AGGRESSIVE;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
@ -362,11 +496,27 @@
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_PEDANTIC = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_STRICT_SELECTOR_MATCH = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_LABEL = YES;
|
||||
GCC_WARN_UNUSED_PARAMETER = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/src";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
@ -393,27 +543,38 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_CXX0X_EXTENSIONS = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_FLOAT_CONVERSION = YES;
|
||||
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_INTERFACE_IVARS = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES;
|
||||
CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES_AGGRESSIVE;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
@ -422,11 +583,27 @@
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "";
|
||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
|
||||
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
|
||||
GCC_WARN_PEDANTIC = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_STRICT_SELECTOR_MATCH = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_LABEL = YES;
|
||||
GCC_WARN_UNUSED_PARAMETER = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/src";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
@ -470,6 +647,15 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
9A57C22C2418B9A00029A39F /* Build configuration list for PBXNativeTarget "cpp_tests UTF16 unsigned char" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
9A57C22D2418B9A00029A39F /* Debug */,
|
||||
9A57C22E2418B9A00029A39F /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
9A9223282402FD1000483CBA /* Build configuration list for PBXProject "cpp_tests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
@ -479,7 +665,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
9A9223342402FD1000483CBA /* Build configuration list for PBXNativeTarget "cpp_tests UTF16" */ = {
|
||||
9A9223342402FD1000483CBA /* Build configuration list for PBXNativeTarget "cpp_tests UTF16 signed char" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
9A9223352402FD1000483CBA /* Debug */,
|
||||
|
@ -15,8 +15,8 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9A92232C2402FD1000483CBA"
|
||||
BuildableName = "cpp_tests UTF16"
|
||||
BlueprintName = "cpp_tests UTF16"
|
||||
BuildableName = "cpp_tests UTF16 signed char"
|
||||
BlueprintName = "cpp_tests UTF16 signed char"
|
||||
ReferencedContainer = "container:cpp_tests.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
@ -33,8 +33,8 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9A92232C2402FD1000483CBA"
|
||||
BuildableName = "cpp_tests UTF16"
|
||||
BlueprintName = "cpp_tests UTF16"
|
||||
BuildableName = "cpp_tests UTF16 signed char"
|
||||
BlueprintName = "cpp_tests UTF16 signed char"
|
||||
ReferencedContainer = "container:cpp_tests.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
@ -58,8 +58,8 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9A92232C2402FD1000483CBA"
|
||||
BuildableName = "cpp_tests UTF16"
|
||||
BlueprintName = "cpp_tests UTF16"
|
||||
BuildableName = "cpp_tests UTF16 signed char"
|
||||
BlueprintName = "cpp_tests UTF16 signed char"
|
||||
ReferencedContainer = "container:cpp_tests.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
@ -102,8 +102,8 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9A92232C2402FD1000483CBA"
|
||||
BuildableName = "cpp_tests UTF16"
|
||||
BlueprintName = "cpp_tests UTF16"
|
||||
BuildableName = "cpp_tests UTF16 signed char"
|
||||
BlueprintName = "cpp_tests UTF16 signed char"
|
||||
ReferencedContainer = "container:cpp_tests.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
|
@ -33,8 +33,8 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "9A92232C2402FD1000483CBA"
|
||||
BuildableName = "cpp_tests UTF16"
|
||||
BlueprintName = "cpp_tests UTF16"
|
||||
BuildableName = "cpp_tests UTF16 signed char"
|
||||
BlueprintName = "cpp_tests UTF16 signed char"
|
||||
ReferencedContainer = "container:cpp_tests.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
|
@ -28,6 +28,7 @@ void CpuDeadLoop(void)
|
||||
|
||||
void DebugLog(int DebugMode, const char *FormatString, ...)
|
||||
{
|
||||
(void)DebugMode;
|
||||
va_list va;
|
||||
va_start(va, FormatString);
|
||||
vprintf(FormatString, va);
|
||||
@ -42,6 +43,7 @@ void* AllocatePool(UINTN AllocationSize)
|
||||
}
|
||||
void* ReallocatePool(UINTN OldSize, UINTN NewSize, void* OldBuffer)
|
||||
{
|
||||
(void)OldSize;
|
||||
if ( !OldBuffer ) return AllocatePool(NewSize);
|
||||
return realloc(OldBuffer, NewSize);
|
||||
}
|
||||
@ -62,9 +64,9 @@ void PauseForKey(const wchar_t* msg)
|
||||
getchar();
|
||||
}
|
||||
|
||||
int AsciiStrLen(const char* String)
|
||||
UINTN AsciiStrLen(const char* String)
|
||||
{
|
||||
return (int)strlen(String);
|
||||
return (UINTN)strlen(String);
|
||||
}
|
||||
|
||||
#if __WCHAR_MAX__ <= 0xFFFFu
|
||||
@ -86,7 +88,7 @@ int is_high_surrogate(char16_t uc) { return (uc & 0xfffffc00) == 0xd800; }
|
||||
int is_low_surrogate(char16_t uc) { return (uc & 0xfffffc00) == 0xdc00; }
|
||||
|
||||
char32_t surrogate_to_utf32(char16_t high, char16_t low) {
|
||||
return (high << 10) + low - 0x35fdc00;
|
||||
return char32_t((high << 10) + low - 0x35fdc00); // Safe cast, it fits in 32 bits
|
||||
}
|
||||
|
||||
void convert_utf16_to_utf32(const char16_t* input, size_t input_size, std::vector<char32_t>* output)
|
||||
@ -111,12 +113,12 @@ void convert_utf16_to_utf32(const char16_t* input, size_t input_size, std::vecto
|
||||
#endif
|
||||
|
||||
|
||||
unsigned int StrLen(const wchar_t* String)
|
||||
UINTN StrLen(const wchar_t* String)
|
||||
{
|
||||
// wcslen seems not to work if sizeof(wchar_t) == 2
|
||||
const wchar_t* p;
|
||||
for ( p = String ; *p ; p++ );
|
||||
return (int)(p-String);
|
||||
return (UINTN)(p-String);
|
||||
}
|
||||
|
||||
int StrCmp(const wchar_t* FirstString, const wchar_t* SecondString)
|
||||
|
@ -11,14 +11,34 @@
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define UINTN unsigned long long
|
||||
#define MAX_UINTN ULONG_MAX
|
||||
#define BOOLEAN bool
|
||||
#define INTN int
|
||||
#define INTN int32_t
|
||||
#define CHAR8 unsigned char
|
||||
#define CHAR16 char16_t
|
||||
|
||||
#define UINT8 uint8_t
|
||||
#define UINT16 uint16_t
|
||||
#define UINT32 uint32_t
|
||||
#define UINT64 uint64_t
|
||||
#define INT8 int8_t
|
||||
#define INT16 int16_t
|
||||
#define INT32 int32_t
|
||||
#define INT64 int64_t
|
||||
|
||||
#define MAX_INT8 ((INT8)0x7F)
|
||||
#define MAX_UINT8 ((UINT8)0xFF)
|
||||
#define MAX_INT16 ((INT16)0x7FFF)
|
||||
#define MAX_UINT16 ((UINT16)0xFFFF)
|
||||
#define MAX_INT32 ((INT32)0x7FFFFFFF)
|
||||
#define MAX_UINT32 ((UINT32)0xFFFFFFFF)
|
||||
#define MAX_INT64 ((INT64)0x7FFFFFFFFFFFFFFFULL)
|
||||
#define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)
|
||||
|
||||
|
||||
#define IN
|
||||
|
||||
#define VA_LIST va_list
|
||||
@ -39,8 +59,8 @@ void CopyMem(void *Destination, void *Source, UINTN Length);
|
||||
void PauseForKey(const wchar_t* msg);
|
||||
int StrCmp(const wchar_t* FirstString, const wchar_t* SecondString);
|
||||
int StrnCmp(const wchar_t* FirstString, const wchar_t* SecondString, UINTN Length);
|
||||
unsigned int StrLen(const wchar_t* String);
|
||||
int AsciiStrLen(const char* String);
|
||||
UINTN StrLen(const wchar_t* String);
|
||||
UINTN AsciiStrLen(const char* String);
|
||||
|
||||
|
||||
|
||||
|
@ -14,10 +14,18 @@
|
||||
|
||||
extern "C" int main(int argc, const char * argv[])
|
||||
{
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
setlocale(LC_ALL, "en_US"); // to allow printf unicode char
|
||||
|
||||
printf("sizeof(wchar_t)=%lu\n", sizeof(wchar_t));
|
||||
printf("%lc\n", L'Ľ');
|
||||
printf("sizeof(size_t)=%lu\n", sizeof(size_t));
|
||||
printf("sizeof(long)=%lu\n", sizeof(long));
|
||||
printf("sizeof(long long)=%lu\n", sizeof(long long));
|
||||
printf("sizeof(size_t)=%lu\n", sizeof(size_t));
|
||||
printf("%zu\n", (size_t)MAX_UINT64);
|
||||
printf("%zd\n", (size_t)MAX_UINT64);
|
||||
|
||||
return all_tests();
|
||||
}
|
||||
|
@ -622,7 +622,9 @@ void PreCleanupRSDT()
|
||||
// English: If the RSDT address of the XSDT address and the tail of the RSDT crawls onto the XSDT, then we
|
||||
// trim the RSDT tail before the XSDT starts
|
||||
if ((UINTN)Rsdt < (UINTN)Xsdt && (UINTN)Rsdt + Rsdt->Header.Length > (UINTN)Xsdt) {
|
||||
Rsdt->Header.Length = ((UINTN)Xsdt - (UINTN)Rsdt) & ~3;
|
||||
UINTN v = ((UINTN)Xsdt - (UINTN)Rsdt) & ~3;
|
||||
if ( v > MAX_UINT32 ) panic("((UINTN)Xsdt - (UINTN)Rsdt) & ~3 > MAX_UINT32");
|
||||
Rsdt->Header.Length = (UINT32)v;
|
||||
DBG("Cropped Rsdt->Header.Length=%d\n", (UINT32)Rsdt->Header.Length);
|
||||
}
|
||||
|
||||
|
@ -5281,7 +5281,8 @@ VOID RenameDevices(UINT8* table)
|
||||
CHAR8 *Replace;
|
||||
CHAR8 *Find;
|
||||
|
||||
INTN i, k;
|
||||
INTN i;
|
||||
INTN k=0; // Cland complain about possible use uninitialised. Not true, but I don't like warnings.
|
||||
UINTN index;
|
||||
INTN size;
|
||||
UINTN len = ((EFI_ACPI_DESCRIPTION_HEADER*)table)->Length;
|
||||
|
@ -101,7 +101,7 @@ UINT32 pci_config_read32(pci_dt_t *PciDt, UINT8 reg)
|
||||
Status = PciIo->Pci.Read (
|
||||
PciIo,
|
||||
EfiPciIoWidthUint32,
|
||||
(UINT64)(reg & ~3),
|
||||
(UINT32)(reg & ~3),
|
||||
1,
|
||||
&res
|
||||
);
|
||||
|
@ -591,12 +591,12 @@ EFI_STATUS LoadKexts(IN LOADER_ENTRY *Entry)
|
||||
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
|
||||
#define DO16(buf) DO8(buf,0); DO8(buf,8);
|
||||
|
||||
static unsigned long Adler32(unsigned char *buf, long len)
|
||||
static UINT32 Adler32(unsigned char *buf, long len)
|
||||
{
|
||||
unsigned long s1 = 1; // adler & 0xffff;
|
||||
unsigned long s2 = 0; // (adler >> 16) & 0xffff;
|
||||
unsigned long result;
|
||||
int k;
|
||||
long k;
|
||||
|
||||
while (len > 0) {
|
||||
k = len < NMAX ? len : NMAX;
|
||||
@ -615,7 +615,7 @@ static unsigned long Adler32(unsigned char *buf, long len)
|
||||
}
|
||||
result = (s2 << 16) | s1;
|
||||
// result is in big endian
|
||||
return result;
|
||||
return (UINT32)result;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
|
@ -870,7 +870,7 @@ EFI_STATUS FixDataMatchingTag( CHAR8* buffer, CONST CHAR8* tag, UINT32* lenPtr)
|
||||
buffer[start + stop] = '\0';
|
||||
*lenPtr = start + length;
|
||||
|
||||
if (*lenPtr == (UINTN)-1) { // Why is this test. -1 is UINTN_MAX.
|
||||
if (*lenPtr == (__typeof(*lenPtr))-1) { // Why is this test. -1 is UINTN_MAX.
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
|
@ -59,6 +59,8 @@ class XArray
|
||||
|
||||
const TYPE& ElementAt(xsize nIndex) const;
|
||||
TYPE& ElementAt(xsize nIndex);
|
||||
const TYPE& ElementAt(int nIndex) const;
|
||||
TYPE& ElementAt(int nIndex);
|
||||
|
||||
const TYPE& operator[](xsize nIndex) const { return ElementAt(nIndex); }
|
||||
TYPE& operator[](xsize nIndex) { return ElementAt(nIndex); }
|
||||
@ -222,6 +224,38 @@ const TYPE& XArray<TYPE>::ElementAt(xsize index) const
|
||||
return m_data[index];
|
||||
}
|
||||
|
||||
/* ElementAt() */
|
||||
template<class TYPE>
|
||||
TYPE &XArray<TYPE>::ElementAt(int index)
|
||||
{
|
||||
// #ifdef _DEBUG
|
||||
if ( index < 0 ) {
|
||||
panic("XArray::ElementAt(int) -> Operator [] : index < 0");
|
||||
}
|
||||
if ( (unsigned int)index >= m_len ) { // cast safe, index > 0
|
||||
DebugLog(2, "XArray::ElementAt(xsize) -> Operator [] : index > m_len");
|
||||
panic();
|
||||
}
|
||||
// #endif
|
||||
return m_data[index];
|
||||
}
|
||||
|
||||
/* ElementAt() */
|
||||
template<class TYPE>
|
||||
const TYPE& XArray<TYPE>::ElementAt(int index) const
|
||||
{
|
||||
// #ifdef _DEBUG
|
||||
if ( index < 0 ) {
|
||||
panic("XArray::ElementAt(int) const -> Operator [] : index < 0");
|
||||
}
|
||||
if ( (unsigned int)index >= m_len ) { // cast ok as index > 0. Ideally cast would be like '(unsigned __typeof__(index))'
|
||||
DebugLog(2, "XArray::ElementAt(xsize) const -> Operator [] : index > m_len");
|
||||
panic();
|
||||
}
|
||||
// #endif
|
||||
return m_data[index];
|
||||
}
|
||||
|
||||
/* Add(xsize) */
|
||||
template<class TYPE>
|
||||
xsize XArray<TYPE>::AddUninitialized(xsize count)
|
||||
|
@ -44,8 +44,8 @@ class XObjArrayNC
|
||||
virtual ~XObjArrayNC();
|
||||
|
||||
protected:
|
||||
XObjArrayNC(const XObjArrayNC<TYPE> &anObjArrayNC) { DebugLog(2, "Intentionally not defined"); panic(); }
|
||||
const XObjArrayNC<TYPE> &operator =(const XObjArrayNC<TYPE> &anObjArrayNC) { DebugLog(2, "Intentionally not defined"); panic(); }
|
||||
XObjArrayNC(const XObjArrayNC<TYPE> &anObjArrayNC) { (void)anObjArrayNC; DebugLog(2, "Intentionally not defined"); panic(); }
|
||||
const XObjArrayNC<TYPE> &operator =(const XObjArrayNC<TYPE> &anObjArrayNC) { (void)anObjArrayNC; DebugLog(2, "Intentionally not defined"); panic(); }
|
||||
xsize _getLen() const { return _Len; }
|
||||
|
||||
public:
|
||||
|
@ -104,10 +104,9 @@ const XStringW& XStringW::takeValueFrom(const wchar_t* S)
|
||||
|
||||
const XStringW& XStringW::takeValueFrom(const char* S)
|
||||
{
|
||||
UINTN asciiStrLen = AsciiStrLen(S);
|
||||
xsize newLen = StrLenInWChar(S, asciiStrLen);
|
||||
xsize newLen = StrLenInWChar(S);
|
||||
Init(newLen);
|
||||
utf8ToWChar(m_data, m_allocatedSize+1, S, asciiStrLen); // m_size doesn't count the NULL terminator
|
||||
utf8ToWChar(m_data, m_allocatedSize+1, S); // m_size doesn't count the NULL terminator
|
||||
SetLength(newLen);
|
||||
return *this;
|
||||
}
|
||||
|
@ -40,7 +40,12 @@ protected:
|
||||
|
||||
public:
|
||||
const wchar_t *data(UINTN ui=0) const { return m_data+ui; } // do not multiply by sizeof(wchar_t), it's done by the compiler.
|
||||
const wchar_t *data(INTN i) const { if ( i<0 ) panic("const wchar_t *data(INTN i=0) const -> i < 0"); return m_data+i; } // do not multiply by sizeof(wchar_t), it's done by the compiler.
|
||||
// const wchar_t *data(int i=0) const { if ( i<0 ) panic("const wchar_t *data(int i=0) const -> i < 0"); return m_data+i; } // do not multiply by sizeof(wchar_t), it's done by the compiler.
|
||||
wchar_t *data(UINTN ui=0) { return m_data+ui; } // do not multiply by sizeof(wchar_t), it's done by the compiler.
|
||||
wchar_t *data(INTN i) { if ( i<0 ) panic("wchar_t *data(INTN i=0) -> i < 0"); return m_data+i; } // do not multiply by sizeof(wchar_t), it's done by the compiler.
|
||||
// wchar_t *data(int i) { if ( i<0 ) panic("wchar_t *data(int i=0) -> i < 0"); return m_data+i; } // do not multiply by sizeof(wchar_t), it's done by the compiler.
|
||||
|
||||
wchar_t *dataWithSizeMin(UINTN pos, UINTN sizeMin, UINTN nGrowBy=XStringWGrowByDefault) { CheckSize(sizeMin, nGrowBy); return data(pos); }
|
||||
|
||||
UINTN length() const { return m_len; }
|
||||
@ -49,7 +54,7 @@ public:
|
||||
void SetLength(UINTN len);
|
||||
const wchar_t* s() { return m_data; }
|
||||
|
||||
/* IsNull ? */
|
||||
/* Empty ? */
|
||||
void setEmpty() { m_len = 0; }
|
||||
bool isEmpty() const { return size() == 0; }
|
||||
// bool IsNull() const { return size() == 0 ; }
|
||||
|
@ -40,26 +40,12 @@ DBG("Constructor(const wchar_t *S) : %s, StrLen(S)=%d\n", S, StrLen(S));
|
||||
StrCpy(S);
|
||||
}
|
||||
|
||||
//XStringW::XStringW(const wchar_t *S, UINTN count)
|
||||
//{
|
||||
//DBG("Constructor(const wchar_t *S, UINTN count) : %s, %d\n", S, count);
|
||||
// Init(count);
|
||||
// StrnCpy(S, count);
|
||||
//}
|
||||
//
|
||||
//XStringW::XStringW(const wchar_t aChar)
|
||||
//{
|
||||
//DBG("Constructor(const wchar_t aChar)\n");
|
||||
// Init(1);
|
||||
// StrnCpy(&aChar, 1);
|
||||
//}
|
||||
|
||||
XStringWP::XStringWP(const char* S)
|
||||
{
|
||||
DBG("Constructor(const char* S)\n");
|
||||
xsize newLen = StrLenInWChar(S, AsciiStrLen(S));
|
||||
xsize newLen = StrLenInWChar(S);
|
||||
Init(newLen);
|
||||
utf8ToWChar(m_data, m_allocatedSize+1, S, AsciiStrLen(S)); // m_size doesn't count the NULL terminator
|
||||
utf8ToWChar(m_data, m_allocatedSize+1, S); // m_size doesn't count the NULL terminator
|
||||
SetLength(newLen);
|
||||
}
|
||||
|
||||
|
@ -24,13 +24,8 @@ protected:
|
||||
public:
|
||||
XStringWP() : XStringWP_super() {};
|
||||
XStringWP(const wchar_t *);
|
||||
// XStringWP(const wchar_t* S, UINTN count);
|
||||
// XStringWP(const wchar_t);
|
||||
XStringWP(const char*);
|
||||
|
||||
// ~XStringWP();
|
||||
|
||||
public:
|
||||
/* XStringWP(const char*, ...); // Cannot define this ctor although it would be handy. Problem is confusion with XStringWP(const char*) as ... can mean 0 arg. */
|
||||
|
||||
};
|
||||
|
||||
|
@ -18,6 +18,7 @@ extern xsize XBufferGrowByDefault;
|
||||
#ifdef CLOVER_BUILD
|
||||
|
||||
extern "C" {
|
||||
#include <ProcessorBind.h>
|
||||
#include <Library/BaseLib.h> // for StrCmp
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/BaseMemoryLib.h> // for CopyMen
|
||||
|
94
rEFIt_UEFI/cpp_foundation/XUINTN.cpp
Executable file
94
rEFIt_UEFI/cpp_foundation/XUINTN.cpp
Executable file
@ -0,0 +1,94 @@
|
||||
////*************************************************************************************************
|
||||
////*************************************************************************************************
|
||||
////
|
||||
//// STRING
|
||||
////
|
||||
//// Developed by jief666, from 1997.
|
||||
////
|
||||
////*************************************************************************************************
|
||||
////*************************************************************************************************
|
||||
//
|
||||
//#if 0
|
||||
//#define DBG(...) DebugLog(2, __VA_ARGS__)
|
||||
//#else
|
||||
//#define DBG(...)
|
||||
//#endif
|
||||
//
|
||||
//#include "XToolsCommon.h"
|
||||
//#include "XUINTN.h"
|
||||
//
|
||||
////xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
//// Constructor
|
||||
////xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
//
|
||||
//XStringW::XStringW()
|
||||
//{
|
||||
//DBG("Construteur\n");
|
||||
// Init();
|
||||
//}
|
||||
//
|
||||
//XStringW::XStringW(const XStringW &aString)
|
||||
//{
|
||||
//DBG("Constructor(const XStringW &aString) : %s\n", aString.data());
|
||||
// Init(aString.length());
|
||||
// StrnCpy(aString.data(), aString.length());
|
||||
//}
|
||||
////
|
||||
////XStringW::XStringW(const wchar_t *S)
|
||||
////{
|
||||
//// if ( !S ) {
|
||||
//// DebugLog(2, "XStringW(const wchar_t *S) called with NULL. Use setEmpty()\n");
|
||||
//// panic();
|
||||
//// }
|
||||
////DBG("Constructor(const wchar_t *S) : %s, StrLen(S)=%d\n", S, StrLen(S));
|
||||
//// Init(StrLen(S));
|
||||
//// StrCpy(S);
|
||||
////}
|
||||
////
|
||||
////XStringW::XStringW(const wchar_t *S, UINTN count)
|
||||
////{
|
||||
////DBG("Constructor(const wchar_t *S, UINTN count) : %s, %d\n", S, count);
|
||||
//// Init(count);
|
||||
//// StrnCpy(S, count);
|
||||
////}
|
||||
////
|
||||
////XStringW::XStringW(const wchar_t aChar)
|
||||
////{
|
||||
////DBG("Constructor(const wchar_t aChar)\n");
|
||||
//// Init(1);
|
||||
//// StrnCpy(&aChar, 1);
|
||||
////}
|
||||
////
|
||||
////XStringW::XStringW(const char* S)
|
||||
////{
|
||||
////DBG("Constructor(const char* S)\n");
|
||||
//// xsize newLen = StrLenInWChar(S, AsciiStrLen(S));
|
||||
//// Init(newLen);
|
||||
//// utf8ToWChar(m_data, m_allocatedSize+1, S, AsciiStrLen(S)); // m_size doesn't count the NULL terminator
|
||||
//// SetLength(newLen);
|
||||
////}
|
||||
//
|
||||
//const XStringW& XStringW::takeValueFrom(const wchar_t* S)
|
||||
//{
|
||||
// if ( !S ) {
|
||||
// DebugLog(2, "takeValueFrom(const wchar_t* S) called with NULL. Use setEmpty()\n");
|
||||
// panic();
|
||||
// }
|
||||
// Init(StrLen(S));
|
||||
// StrCpy(S);
|
||||
// return *this;
|
||||
//}
|
||||
//
|
||||
//const XStringW& XStringW::takeValueFrom(const char* S)
|
||||
//{
|
||||
// UINTN asciiStrLen = AsciiStrLen(S);
|
||||
// xsize newLen = StrLenInWChar(S, asciiStrLen);
|
||||
// Init(newLen);
|
||||
// utf8ToWChar(m_data, m_allocatedSize+1, S, asciiStrLen); // m_size doesn't count the NULL terminator
|
||||
// SetLength(newLen);
|
||||
// return *this;
|
||||
//}
|
||||
//
|
||||
////xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
////
|
||||
////xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
73
rEFIt_UEFI/cpp_foundation/XUINTN.h
Executable file
73
rEFIt_UEFI/cpp_foundation/XUINTN.h
Executable file
@ -0,0 +1,73 @@
|
||||
//*************************************************************************************************
|
||||
//*************************************************************************************************
|
||||
//
|
||||
// STRING
|
||||
//
|
||||
//*************************************************************************************************
|
||||
//*************************************************************************************************
|
||||
|
||||
#if !defined(__XUINTN_H__)
|
||||
#define __XUINTN_H__
|
||||
|
||||
#include "XToolsCommon.h"
|
||||
|
||||
class XUINTN
|
||||
{
|
||||
public:
|
||||
UINTN m_value;
|
||||
|
||||
public:
|
||||
XUINTN() : m_value(0) {};
|
||||
XUINTN(UINT64 v) : m_value(v) {};
|
||||
XUINTN(unsigned int v) : m_value(v) {};
|
||||
XUINTN(INT64 v) { if ( v < 0 ) panic("XUINTN(INT64 v) -> value is < 0"); m_value=(UINT64)v; };
|
||||
XUINTN(int v) { if ( v < 0 ) panic("XUINTN(int v) -> value is < 0"); m_value=(UINT64)v; };
|
||||
|
||||
bool operator != (UINT8 u) const { return m_value != u; };
|
||||
bool operator != (UINT16 u) const { return m_value != u; };
|
||||
bool operator != (UINT32 u) const { return m_value != u; };
|
||||
bool operator != (UINT64 u) const { return m_value != u; };
|
||||
|
||||
bool operator != (INT8 i) const { if ( i < 0 ) return false; return m_value != (UINT8)i; };
|
||||
bool operator != (INT16 i) const { if ( i < 0 ) return false; return m_value != (UINT16)i; };
|
||||
bool operator != (INT32 i) const { if ( i < 0 ) return false; return m_value != (UINT32)i; };
|
||||
bool operator != (INT64 i) const { if ( i < 0 ) return false; return m_value != (UINT64)i; };
|
||||
|
||||
bool operator == (UINT8 u) const { return m_value == u; };
|
||||
bool operator == (UINT16 u) const { return m_value == u; };
|
||||
bool operator == (UINT32 u) const { return m_value == u; };
|
||||
bool operator == (UINT64 u) const { return m_value == u; };
|
||||
|
||||
bool operator == (INT8 i) const { if ( i < 0 ) return false; return m_value == (UINT8)i; };
|
||||
bool operator == (INT16 i) const { if ( i < 0 ) return false; return m_value == (UINT16)i; };
|
||||
bool operator == (INT32 i) const { if ( i < 0 ) return false; return m_value == (UINT32)i; };
|
||||
bool operator == (INT64 i) const { if ( i < 0 ) return false; return m_value == (UINT64)i; };
|
||||
|
||||
/* seems not needed to define all type for operator + and -, contrary to the other operators. */
|
||||
// UINTN operator + (int i) const { if ( (i>=0 && value + (unsigned int)i < value) || (i<0 && value + (unsigned int)i > value)) panic("UINTN operator + (int i) const -> overflow"); return (UINTN)(value + (unsigned int)i); };
|
||||
// UINTN operator + (UINT8 u) const { if ( value + u < value ) panic("UINTN operator + (UINT8 u) -> overflow"); return value + u; };
|
||||
// UINTN operator + (UINT16 u) const { if ( value + u < value ) panic("UINTN operator + (UINT16 u) -> overflow"); return value + u; };
|
||||
// UINTN operator + (UINT32 u) const { if ( value + u < value ) panic("UINTN operator + (UINT32 u) -> overflow"); return value + u; };
|
||||
UINTN operator + (UINT64 u) const { if ( m_value + u < m_value ) panic("UINTN operator + (UINT64 u) -> overflow"); return m_value + u; };
|
||||
|
||||
UINTN operator - (UINT64 u) const { if ( m_value - u > m_value ) panic("UINTN operator - (UINT64 u) -> overflow"); return m_value - u; };
|
||||
|
||||
UINTN operator > (UINT64 u) const { return m_value > u; };
|
||||
UINTN operator >= (UINT64 u) const { return m_value >= u; };
|
||||
UINTN operator < (UINT64 u) const { return m_value < u; };
|
||||
UINTN operator <= (UINT64 u) const { return m_value <= u; };
|
||||
|
||||
|
||||
explicit operator UINT8() const { if ( m_value > MAX_UINT8 ) panic("operator UINT8() const -> value too big to be casted as UINT8"); return (UINT8)m_value; };
|
||||
explicit operator UINT16() const { if ( m_value > MAX_UINT16 ) panic("operator UINT16() const -> value too big to be casted as UINT16"); return (UINT16)m_value; };
|
||||
explicit operator UINT32() const { if ( m_value > MAX_UINT32 ) panic("operator UINT32() const -> value too big to be casted as UINT32"); return (UINT32)m_value; };
|
||||
explicit operator UINT64() const { return m_value; };
|
||||
|
||||
explicit operator INT8() const { if ( m_value > MAX_INT8 ) panic("operator INT8() const -> value too big to be casted as INT8"); return (INT8)m_value; };
|
||||
explicit operator INT16() const { if ( m_value > MAX_INT16 ) panic("operator INT16() const -> value too big to be casted as INT16"); return (INT16)m_value; };
|
||||
explicit operator INT32() const { if ( m_value > MAX_INT32 ) panic("operator INT32() const -> value too big to be casted as INT32"); return (INT32)m_value; };
|
||||
explicit operator INT64() const { if ( m_value > MAX_INT64 ) panic("operator INT64() const -> value too big to be casted as INT64"); return (INT64)m_value; };
|
||||
|
||||
};
|
||||
|
||||
#endif
|
@ -692,8 +692,8 @@ static void printf_handle_format_char(char c, VALIST_PARAM_TYPE valist, PrintfPa
|
||||
case 'c':
|
||||
#if PRINTF_OUTPUT_FORMAT_UNICODE == 1 && PRINTF_UTF8_SUPPORT == 1
|
||||
if ( printfParams->l_modifier == 0 ) {
|
||||
char c1 = (char)va_arg(VALIST_ACCESS(valist), int);
|
||||
print_char((wchar_t)c1, printfParams); // 'char' is promoted to 'int' when passed through '...'
|
||||
int c1 = (char)va_arg(VALIST_ACCESS(valist), int);
|
||||
print_char((char)c1, printfParams); // 'char' is promoted to 'int' when passed through '...'
|
||||
printfParams->inDirective = 0;
|
||||
}else
|
||||
#endif
|
||||
|
@ -15,7 +15,7 @@
|
||||
#define size_t UINTN
|
||||
|
||||
|
||||
size_t StrLenInWChar(const char *s, size_t src_len)
|
||||
size_t StrLenInWChar(const char *s)
|
||||
{
|
||||
size_t dst_len = 0;
|
||||
|
||||
@ -49,27 +49,27 @@ size_t StrLenInWChar(const char *s, size_t src_len)
|
||||
continue;
|
||||
}
|
||||
/* 4-byte code */
|
||||
c = (*s & 0x7) << 18;
|
||||
c |= (*(s+1) & 0x3f) << 12;
|
||||
c |= (*(s+2) & 0x3f) << 6;
|
||||
c = char32_t(((unsigned char)(*s) & 0x7) << 18); // & result type is int. We know it fits in 32 bits. Safe to cast to char32_t
|
||||
c |= char32_t((*(s+1) & 0x3f) << 12);
|
||||
c |= char32_t((*(s+2) & 0x3f) << 6);
|
||||
c |= *(s+3) & 0x3f;
|
||||
s += 4;
|
||||
} else {
|
||||
/* 3-byte code */
|
||||
c = (*s & 0xf) << 12;
|
||||
c |= (*(s+1) & 0x3f) << 6;
|
||||
c = char32_t((*s & 0xf) << 12);
|
||||
c |= char32_t((*(s+1) & 0x3f) << 6);
|
||||
c |= *(s+2) & 0x3f;
|
||||
s += 3;
|
||||
}
|
||||
} else {
|
||||
/* 2-byte code */
|
||||
c = (*s & 0x1f) << 6;
|
||||
c = char32_t((*s & 0x1f) << 6);
|
||||
c |= *(s+1) & 0x3f;
|
||||
s += 2;
|
||||
}
|
||||
} else {
|
||||
/* 1-byte code */
|
||||
c = *s;
|
||||
c = (unsigned char)(*s); // in case we compiled with signed char
|
||||
s += 1;
|
||||
}
|
||||
#if __WCHAR_MAX__ > 0xFFFFu
|
||||
@ -99,7 +99,7 @@ size_t StrLenInWChar(const char *s, size_t src_len)
|
||||
|
||||
|
||||
|
||||
size_t utf8ToWChar(wchar_t* dst, size_t dst_max_len, const char *s, size_t src_len)
|
||||
size_t utf8ToWChar(wchar_t* dst, size_t dst_max_len, const char *s)
|
||||
{
|
||||
if ( dst_max_len == 0 ) return 0;
|
||||
dst_max_len -= 1;
|
||||
@ -136,27 +136,27 @@ size_t utf8ToWChar(wchar_t* dst, size_t dst_max_len, const char *s, size_t src_
|
||||
continue;
|
||||
}
|
||||
/* 4-byte code */
|
||||
c = (*s & 0x7) << 18;
|
||||
c |= (*(s+1) & 0x3f) << 12;
|
||||
c |= (*(s+2) & 0x3f) << 6;
|
||||
c = char32_t((*s & 0x7) << 18); // & result type is int. We know it fits in 32 bits. Safe to cast to char32_t
|
||||
c |= char32_t((*(s+1) & 0x3f) << 12);
|
||||
c |= char32_t((*(s+2) & 0x3f) << 6);
|
||||
c |= *(s+3) & 0x3f;
|
||||
s += 4;
|
||||
} else {
|
||||
/* 3-byte code */
|
||||
c = (*s & 0xf) << 12;
|
||||
c |= (*(s+1) & 0x3f) << 6;
|
||||
c = char32_t((*s & 0xf) << 12);
|
||||
c |= char32_t((*(s+1) & 0x3f) << 6);
|
||||
c |= *(s+2) & 0x3f;
|
||||
s += 3;
|
||||
}
|
||||
} else {
|
||||
/* 2-byte code */
|
||||
c = (*s & 0x1f) << 6;
|
||||
c = char32_t((*s & 0x1f) << 6);
|
||||
c |= *(s+1) & 0x3f;
|
||||
s += 2;
|
||||
}
|
||||
} else {
|
||||
/* 1-byte code */
|
||||
c = *s;
|
||||
c = (unsigned char)(*s); // in case we compiled with signed char
|
||||
s += 1;
|
||||
}
|
||||
#if __WCHAR_MAX__ > 0xFFFFu
|
||||
|
@ -8,7 +8,7 @@
|
||||
#define utf816Conversion_hpp
|
||||
|
||||
|
||||
UINTN StrLenInWChar(const char *src, UINTN src_len);
|
||||
UINTN utf8ToWChar(wchar_t* dst, UINTN dst_max_len, const char *s, UINTN src_len);
|
||||
UINTN StrLenInWChar(const char *src);
|
||||
UINTN utf8ToWChar(wchar_t* dst, UINTN dst_max_len, const char *s);
|
||||
|
||||
#endif /* utf816Conversion_hpp */
|
||||
|
282
rEFIt_UEFI/cpp_unit_test/XUINTN_test.cpp
Executable file
282
rEFIt_UEFI/cpp_unit_test/XUINTN_test.cpp
Executable file
@ -0,0 +1,282 @@
|
||||
#include <Platform.h>
|
||||
#include "../cpp_foundation/XUINTN.h"
|
||||
#include "../cpp_foundation/XStringWP.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define CHECK_CTOR_FAIL(value, code) \
|
||||
{ \
|
||||
stop_at_panic = false; \
|
||||
i_have_panicked = false; \
|
||||
XUINTN xu(value); \
|
||||
if ( !i_have_panicked ) return code; \
|
||||
stop_at_panic = true; \
|
||||
i_have_panicked = false; \
|
||||
}
|
||||
|
||||
#define CHECK_CTOR_8_16_32_64_int_FAIL(code) \
|
||||
{ \
|
||||
CHECK_CTOR_FAIL((INT8)-10, code); \
|
||||
CHECK_CTOR_FAIL((INT16)-10, code+1); \
|
||||
CHECK_CTOR_FAIL((INT32)-10, code+2); \
|
||||
CHECK_CTOR_FAIL((INT64)-10, code+3); \
|
||||
CHECK_CTOR_FAIL((int)-10, code+4); \
|
||||
}
|
||||
|
||||
// return code..code+3
|
||||
#define CHECK_EQUAL_EQUAL_OPERATOR_OK_(xu, type, value, code) \
|
||||
{ \
|
||||
type u = (value); \
|
||||
if ( !(xu == u) ) return code; \
|
||||
if ( !(xu.operator ==(u)) ) return code+1; \
|
||||
if ( xu != u ) return code+2; \
|
||||
if ( xu.operator !=(u) ) return code+3; \
|
||||
}
|
||||
|
||||
// return code..code+33
|
||||
#define CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(type_root, value, code) \
|
||||
{ \
|
||||
XUINTN xu(145); \
|
||||
\
|
||||
if ( (value) < MAX_##type_root##8 ) { xu = (type_root##8)(value); CHECK_EQUAL_EQUAL_OPERATOR_OK_(xu, type_root##8, (type_root##8)(value), code); } \
|
||||
\
|
||||
if ( (value) < MAX_##type_root##16 ) { xu = (type_root##16)(value); CHECK_EQUAL_EQUAL_OPERATOR_OK_(xu, type_root##16, (type_root##16)(value), code+10); } \
|
||||
\
|
||||
if ( (value) < MAX_##type_root##32 ) { xu = (type_root##32)(value); CHECK_EQUAL_EQUAL_OPERATOR_OK_(xu, type_root##32, (type_root##32)(value), code+20); } \
|
||||
\
|
||||
if ( (value) < MAX_##type_root##64 ) { xu = (type_root##64)(value); CHECK_EQUAL_EQUAL_OPERATOR_OK_(xu, type_root##64, (type_root##64)(value), code+30); } \
|
||||
}
|
||||
|
||||
// return code..code+7
|
||||
#define CHECK_EQUAL_EQUAL_OPERATOR_FAIL(xu, type, value, code) \
|
||||
{ \
|
||||
type u = (value); \
|
||||
\
|
||||
stop_at_panic = false; \
|
||||
i_have_panicked = false; \
|
||||
if ( xu == u ) ; \
|
||||
if ( !i_have_panicked ) return code+1; \
|
||||
i_have_panicked = false; \
|
||||
if ( xu.operator ==(u) ) ; \
|
||||
if ( !i_have_panicked ) return code+3; \
|
||||
i_have_panicked = false; \
|
||||
if ( xu != u ) ; \
|
||||
if ( !i_have_panicked ) return code+5; \
|
||||
i_have_panicked = false; \
|
||||
if ( xu.operator !=(u) ) ; \
|
||||
if ( !i_have_panicked ) return code+7; \
|
||||
stop_at_panic = true; \
|
||||
i_have_panicked = false; \
|
||||
}
|
||||
|
||||
// return code..code+33
|
||||
#define CHECK_PLUS_27_OPERATOR(type_root, type, value, code) \
|
||||
{ \
|
||||
XUINTN xu(27); \
|
||||
XUINTN xu2(27); \
|
||||
xu2 = xu + (type)(value)-1; \
|
||||
if ( xu2.m_value != (UINTN)(value) + 27-1 ) return code; \
|
||||
}
|
||||
|
||||
// return code..code+333
|
||||
#define CHECK_ALL_PLUS_OPERATOR(type_root, code) \
|
||||
{ \
|
||||
CHECK_PLUS_27_OPERATOR(type_root, type_root##8, MAX_##type_root##8-27, code) \
|
||||
CHECK_PLUS_27_OPERATOR(type_root, type_root##16, MAX_##type_root##16-27, code+100) \
|
||||
CHECK_PLUS_27_OPERATOR(type_root, type_root##32, MAX_##type_root##32-27, code+200) \
|
||||
CHECK_PLUS_27_OPERATOR(type_root, type_root##64, MAX_##type_root##64-27, code+300) \
|
||||
}
|
||||
|
||||
// return code..code+33
|
||||
#define CHECK_MINUS_OPERATOR(type_root, type, value, code) \
|
||||
{ \
|
||||
XUINTN xu(MAX_##type); \
|
||||
XUINTN xu2(0); \
|
||||
xu2 = xu - (type)(value); \
|
||||
if ( xu2.m_value != (UINTN)MAX_##type - (value) ) return code; \
|
||||
}
|
||||
|
||||
// return code..code+333
|
||||
#define CHECK_ALL_MINUS_OPERATOR(type_root, code) \
|
||||
{ \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##8, 45, code) \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##16, 45, code+100) \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##32, 45, code+200) \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##64, 45, code+300) \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##8, MAX_##type_root##8-1, code) \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##16, MAX_##type_root##16-1, code+100) \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##32, MAX_##type_root##32-1, code+200) \
|
||||
CHECK_MINUS_OPERATOR(type_root, type_root##64, MAX_##type_root##64-1, code+300) \
|
||||
}
|
||||
|
||||
// return code..code+33
|
||||
#define CHECK_SUPERIOR_OPERATOR(value1, type, value, code) \
|
||||
{ \
|
||||
XUINTN xu(value1); \
|
||||
if ( !(xu > (type)(value)) ) return code; \
|
||||
if ( xu <= (type)(value) ) return code+1; \
|
||||
xu = value; \
|
||||
if ( !(xu < (type)(value1)) ) return code+2; \
|
||||
if ( xu >= (type)(value1) ) return code+3; \
|
||||
}
|
||||
|
||||
#define CHECK_ALL_SUPERIOR_OPERATOR(type_root, code) \
|
||||
{ \
|
||||
CHECK_SUPERIOR_OPERATOR(MAX_##type_root##8, type_root##8, MAX_##type_root##8-1, code) \
|
||||
CHECK_SUPERIOR_OPERATOR(MAX_##type_root##16, type_root##16, MAX_##type_root##16-1, code+10) \
|
||||
CHECK_SUPERIOR_OPERATOR(MAX_##type_root##32, type_root##32, MAX_##type_root##32-1, code+20) \
|
||||
CHECK_SUPERIOR_OPERATOR(MAX_##type_root##64, type_root##64, MAX_##type_root##64-1, code+30) \
|
||||
CHECK_SUPERIOR_OPERATOR(MAX_UINT32, unsigned int, MAX_UINT32-1, code+40) \
|
||||
}
|
||||
|
||||
// return code..code+1
|
||||
#define CHECK_CAST_TO_TYPE_OK(type, value, code) \
|
||||
{ \
|
||||
stop_at_panic = false; \
|
||||
i_have_panicked = false; \
|
||||
XUINTN xu(value); \
|
||||
type u64; \
|
||||
u64 = (type)xu; \
|
||||
if ( i_have_panicked || u64 != (value) ) return code; \
|
||||
u64 = xu.operator type(); \
|
||||
if ( i_have_panicked || u64 != (value) ) return code+1; \
|
||||
stop_at_panic = true; \
|
||||
i_have_panicked = false; \
|
||||
}
|
||||
|
||||
// return code..code+5
|
||||
#define CHECK_CAST_TO_TYPE_8_16_32_64_OK(type_root, code) \
|
||||
{ \
|
||||
CHECK_CAST_TO_TYPE_OK(type_root##8, (UINTN)MAX_##type_root##8, code); \
|
||||
CHECK_CAST_TO_TYPE_OK(type_root##16, (UINTN)MAX_##type_root##16, code+2); \
|
||||
CHECK_CAST_TO_TYPE_OK(type_root##32, (UINTN)MAX_##type_root##32, code+4); \
|
||||
CHECK_CAST_TO_TYPE_OK(type_root##64, (UINTN)MAX_##type_root##64, code+4); \
|
||||
}
|
||||
|
||||
// return code..code+1
|
||||
#define CHECK_CAST_TO_TYPE_PANIC(type, value, code) \
|
||||
{ \
|
||||
stop_at_panic = false; \
|
||||
i_have_panicked = false; \
|
||||
XUINTN xu(value); \
|
||||
type u8; \
|
||||
\
|
||||
u8 = (type)xu; \
|
||||
if ( !i_have_panicked ) return code; \
|
||||
\
|
||||
/* same test as before. be sure that the overloaded cast is really called. */ \
|
||||
i_have_panicked = false; \
|
||||
u8 = xu.operator type(); \
|
||||
if ( !i_have_panicked ) return code+1; \
|
||||
\
|
||||
stop_at_panic = true; \
|
||||
i_have_panicked = false; \
|
||||
}
|
||||
|
||||
// return code..code+5
|
||||
#define CHECK_CAST_TO_TYPE_8_16_32_PANIC(type_root, code) \
|
||||
{ \
|
||||
CHECK_CAST_TO_TYPE_PANIC(type_root##8, (UINTN)MAX_##type_root##8+1, code); \
|
||||
CHECK_CAST_TO_TYPE_PANIC(type_root##16, (UINTN)MAX_##type_root##16+1, code+2); \
|
||||
CHECK_CAST_TO_TYPE_PANIC(type_root##32, (UINTN)MAX_##type_root##32+1, code+4); \
|
||||
}
|
||||
|
||||
int XUINTN_tests()
|
||||
{
|
||||
//#define value MAX_UINT64-27
|
||||
//{ \
|
||||
// XUINTN xu(27); \
|
||||
// XUINTN xu2(27); \
|
||||
// UINT64 v = (UINT64)(value)-1;
|
||||
// xu2 = xu + (UINT64)(value)-1; \
|
||||
// if ( xu2.m_value != (UINTN)value + 27-1 ) return 0; \
|
||||
//}
|
||||
|
||||
{
|
||||
XUINTN xu(72);
|
||||
INT8 u = 72;
|
||||
int code = 100000;
|
||||
if ( !(xu == u) ) return code;
|
||||
if ( !(xu.operator ==(u)) ) return code+1;
|
||||
if ( xu != u ) return code+2;
|
||||
if ( xu.operator !=(u) ) return code+3;
|
||||
|
||||
// xu = (INT8)-10;
|
||||
}
|
||||
|
||||
CHECK_CTOR_8_16_32_64_int_FAIL(200);
|
||||
|
||||
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(UINT, MAX_UINT8, 300);
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(UINT, MAX_UINT16, 400);
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(UINT, MAX_UINT32, 500);
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(UINT, MAX_UINT64, 600);
|
||||
{
|
||||
unsigned int ui = MAX_UINT32;
|
||||
XUINTN xu = ui;
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_OK_(xu, unsigned int, (unsigned int)(MAX_UINT32), 680);
|
||||
}
|
||||
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(INT, MAX_INT8, 700);
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(INT, MAX_INT16, 800);
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(INT, MAX_INT32, 900);
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_8_16_32_64(INT, MAX_INT64, 1000);
|
||||
{
|
||||
int i = MAX_INT32;
|
||||
XUINTN xu = i;
|
||||
CHECK_EQUAL_EQUAL_OPERATOR_OK_(xu, unsigned int, (unsigned int)(MAX_INT32), 690);
|
||||
}
|
||||
|
||||
|
||||
CHECK_ALL_PLUS_OPERATOR(UINT, 2000);
|
||||
CHECK_ALL_PLUS_OPERATOR(INT, 3000);
|
||||
CHECK_ALL_MINUS_OPERATOR(UINT, 2000);
|
||||
CHECK_ALL_MINUS_OPERATOR(INT, 3000);
|
||||
|
||||
// Check + operation that fail
|
||||
{
|
||||
stop_at_panic = false;
|
||||
i_have_panicked = false;
|
||||
|
||||
XUINTN xu1 = (UINT64)MAX_UINT64 - 1;
|
||||
XUINTN xu2 = xu1 + 2;
|
||||
if ( !i_have_panicked ) return 100;
|
||||
(void)xu2;
|
||||
|
||||
stop_at_panic = true;
|
||||
i_have_panicked = false;
|
||||
}
|
||||
|
||||
CHECK_ALL_SUPERIOR_OPERATOR(UINT, 5000);
|
||||
|
||||
CHECK_CAST_TO_TYPE_8_16_32_64_OK(UINT, 210);
|
||||
if ( sizeof(unsigned int) == 4 ) {
|
||||
CHECK_CAST_TO_TYPE_OK(unsigned int, (UINTN)MAX_UINT32, 220);
|
||||
}else{
|
||||
panic("Please define unsigned int test in XUINTN_test.cpp");
|
||||
}
|
||||
CHECK_CAST_TO_TYPE_8_16_32_PANIC(UINT, 220);
|
||||
if ( sizeof(unsigned int) == 4 ) {
|
||||
CHECK_CAST_TO_TYPE_PANIC(unsigned int, (UINTN)MAX_UINT32+1, 230);
|
||||
}else{
|
||||
panic("Please define unsigned int test in XUINTN_test.cpp");
|
||||
}
|
||||
|
||||
|
||||
CHECK_CAST_TO_TYPE_8_16_32_64_OK(INT, 240);
|
||||
if ( sizeof(unsigned int) == 4 ) {
|
||||
CHECK_CAST_TO_TYPE_OK(unsigned int, (UINTN)MAX_UINT32, 250);
|
||||
}else{
|
||||
panic("Please define unsigned int test in XUINTN_test.cpp");
|
||||
}
|
||||
CHECK_CAST_TO_TYPE_8_16_32_PANIC(INT, 260);
|
||||
if ( sizeof(unsigned int) == 4 ) {
|
||||
CHECK_CAST_TO_TYPE_PANIC(int, (UINTN)MAX_INT32+1, 270);
|
||||
}else{
|
||||
panic("Please define unsigned int test in XUINTN_test.cpp");
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
1
rEFIt_UEFI/cpp_unit_test/XUINTN_test.h
Normal file
1
rEFIt_UEFI/cpp_unit_test/XUINTN_test.h
Normal file
@ -0,0 +1 @@
|
||||
int XUINTN_tests();
|
@ -7,6 +7,7 @@
|
||||
#include "XObjArray_tests.h"
|
||||
#include "XStringWArray_test.h"
|
||||
#include "XStringW_test.h"
|
||||
#include "XUINTN_test.h"
|
||||
|
||||
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
|
||||
|
||||
@ -35,6 +36,11 @@ bool all_tests()
|
||||
DebugLog(2, "XStringWArray_tests() failed at test %d\n", ret);
|
||||
all_ok = false;
|
||||
}
|
||||
ret = XUINTN_tests();
|
||||
if ( ret != 0 ) {
|
||||
DebugLog(2, "XUINTN_tests() failed at test %d\n", ret);
|
||||
all_ok = false;
|
||||
}
|
||||
|
||||
if ( !all_ok ) {
|
||||
DebugLog(2, "A test failed\n");
|
||||
|
@ -5,15 +5,34 @@
|
||||
//#include <Library/BaseLib.h> // for CpuDeadLoop
|
||||
//}
|
||||
|
||||
bool stop_at_panic = true;
|
||||
bool i_have_panicked = false;
|
||||
|
||||
/*
|
||||
*
|
||||
* If this modified, you may have to change the Qemu/gdb_launch script to adjust the breakpoint line.
|
||||
* gdb_launch put a breakpoint at CpuDeadLoop();
|
||||
* Currently line 18
|
||||
* Function panic_ seems useless. It's same as panic(). It's to be able to put a breakpoint in gdb with br panic_(). This is done in gdb_launch script in Qemu
|
||||
*/
|
||||
void panic_(const char* s)
|
||||
{
|
||||
if ( stop_at_panic ) {
|
||||
if ( s ) DebugLog(2, "%s\n", s);
|
||||
DebugLog(2, "A fatal error happened. System halted\n");
|
||||
CpuDeadLoop();
|
||||
}else{
|
||||
if ( s ) DebugLog(2, "%s\n", s);
|
||||
// DebugLog(2, "A fatal error happened. Continue for testing\n");
|
||||
i_have_panicked = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void panic(const char* s)
|
||||
{
|
||||
panic_(s);
|
||||
}
|
||||
|
||||
|
||||
void panic(void)
|
||||
{
|
||||
DebugLog(2, "A fatal error happened. System halted\n");
|
||||
CpuDeadLoop();
|
||||
panic_(nullptr);
|
||||
}
|
||||
|
@ -1,6 +1,10 @@
|
||||
#ifndef __PANIC_H__
|
||||
#define __PANIC_H__
|
||||
|
||||
extern bool stop_at_panic;
|
||||
extern bool i_have_panicked;
|
||||
|
||||
void panic(void);
|
||||
void panic(const char* s);
|
||||
|
||||
#endif
|
||||
|
@ -683,7 +683,7 @@ VOID egRawCopy(IN OUT EG_PIXEL *CompBasePtr, IN EG_PIXEL *TopBasePtr,
|
||||
EG_PIXEL *CompPtr = CompBasePtr;
|
||||
for (x = 0; x < Width; x++) {
|
||||
*CompPtr = *TopPtr;
|
||||
TopPtr++, CompPtr++;
|
||||
TopPtr++; CompPtr++;
|
||||
}
|
||||
TopBasePtr += TopLineOffset;
|
||||
CompBasePtr += CompLineOffset;
|
||||
@ -736,7 +736,7 @@ VOID egRawCompose(IN OUT EG_PIXEL *CompBasePtr, IN EG_PIXEL *TopBasePtr,
|
||||
CompPtr->r = (UINT8)((TopPtr->r * TopAlpha + CompPtr->r * TempAlpha) / Alpha);
|
||||
CompPtr->a = (UINT8)(Alpha / 255);
|
||||
}
|
||||
TopPtr++, CompPtr++;
|
||||
TopPtr++; CompPtr++;
|
||||
}
|
||||
TopBasePtr += TopLineOffset;
|
||||
CompBasePtr += CompLineOffset;
|
||||
@ -776,7 +776,7 @@ VOID egRawComposeOnFlat(IN OUT EG_PIXEL *CompBasePtr, IN EG_PIXEL *TopBasePtr,
|
||||
|
||||
CompPtr->a = (UINT8)(255);
|
||||
|
||||
TopPtr++, CompPtr++;
|
||||
TopPtr++; CompPtr++;
|
||||
}
|
||||
TopBasePtr += TopLineOffset;
|
||||
CompBasePtr += CompLineOffset;
|
||||
@ -877,7 +877,7 @@ VOID egCopyPlane(IN UINT8 *SrcPlanePtr, IN UINT8 *DestPlanePtr, IN UINTN PixelCo
|
||||
|
||||
for (i = 0; i < PixelCount; i++) {
|
||||
*DestPlanePtr = *SrcPlanePtr;
|
||||
DestPlanePtr += 4, SrcPlanePtr += 4;
|
||||
DestPlanePtr += 4; SrcPlanePtr += 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@ Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for
|
||||
|
||||
#include "libegint.h"
|
||||
#include "lodepng.h"
|
||||
#include "../cpp_util/panic.h"
|
||||
|
||||
#ifdef LODEPNG_COMPILE_DISK
|
||||
#include <limits.h> /* LONG_MAX */
|
||||
@ -3725,7 +3726,7 @@ static unsigned getValueRequiredBits(unsigned char value) {
|
||||
unsigned lodepng_compute_color_stats(LodePNGColorStats* stats,
|
||||
const unsigned char* in, unsigned w, unsigned h,
|
||||
const LodePNGColorMode* mode_in) {
|
||||
size_t i;
|
||||
// size_t i;
|
||||
ColorTree tree;
|
||||
size_t numpixels = (size_t)w * (size_t)h;
|
||||
unsigned error = 0;
|
||||
@ -3756,7 +3757,7 @@ unsigned lodepng_compute_color_stats(LodePNGColorStats* stats,
|
||||
if(stats->numcolors >= maxnumcolors) numcolors_done = 1;
|
||||
|
||||
if(!numcolors_done) {
|
||||
for(i = 0; i < stats->numcolors; i++) {
|
||||
for(__typeof__(stats->numcolors) i = 0; i < stats->numcolors; i++) {
|
||||
const unsigned char* color = &stats->palette[i * 4];
|
||||
error = color_tree_add(&tree, color[0], color[1], color[2], color[3], i);
|
||||
if(error) goto cleanup;
|
||||
@ -3766,7 +3767,7 @@ unsigned lodepng_compute_color_stats(LodePNGColorStats* stats,
|
||||
/*Check if the 16-bit input is truly 16-bit*/
|
||||
if(mode_in->bitdepth == 16 && !sixteen) {
|
||||
unsigned short r, g, b, a;
|
||||
for(i = 0; i != numpixels; ++i) {
|
||||
for(__typeof__(stats->numpixels) i = 0; i != numpixels; ++i) {
|
||||
getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
|
||||
if((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) ||
|
||||
(b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ {
|
||||
@ -3782,7 +3783,7 @@ unsigned lodepng_compute_color_stats(LodePNGColorStats* stats,
|
||||
if(sixteen) {
|
||||
unsigned short r = 0, g = 0, b = 0, a = 0;
|
||||
|
||||
for(i = 0; i != numpixels; ++i) {
|
||||
for(__typeof__(numpixels) i = 0; i != numpixels; ++i) {
|
||||
getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
|
||||
|
||||
if(!colored_done && (r != g || r != b)) {
|
||||
@ -3812,7 +3813,7 @@ unsigned lodepng_compute_color_stats(LodePNGColorStats* stats,
|
||||
}
|
||||
|
||||
if(stats->key && !stats->alpha) {
|
||||
for(i = 0; i != numpixels; ++i) {
|
||||
for(__typeof__(numpixels) i = 0; i != numpixels; ++i) {
|
||||
getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
|
||||
if(a != 0 && r == stats->key_r && g == stats->key_g && b == stats->key_b) {
|
||||
/* Color key cannot be used if an opaque pixel also has that RGB color. */
|
||||
@ -3824,7 +3825,7 @@ unsigned lodepng_compute_color_stats(LodePNGColorStats* stats,
|
||||
}
|
||||
} else /* < 16-bit */ {
|
||||
unsigned char r = 0, g = 0, b = 0, a = 0;
|
||||
for(i = 0; i != numpixels; ++i) {
|
||||
for(__typeof__(numpixels) i = 0; i != numpixels; ++i) {
|
||||
getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in);
|
||||
|
||||
if(!bits_done && stats->bits < 8) {
|
||||
@ -3882,7 +3883,7 @@ unsigned lodepng_compute_color_stats(LodePNGColorStats* stats,
|
||||
}
|
||||
|
||||
if(stats->key && !stats->alpha) {
|
||||
for(i = 0; i != numpixels; ++i) {
|
||||
for(__typeof__(numpixels) i = 0; i != numpixels; ++i) {
|
||||
getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in);
|
||||
if(a != 0 && r == stats->key_r && g == stats->key_g && b == stats->key_b) {
|
||||
/* Color key cannot be used if an opaque pixel also has that RGB color. */
|
||||
@ -4729,7 +4730,8 @@ static unsigned readChunk_iCCP(LodePNGInfo* info, const LodePNGDecompressSetting
|
||||
length, zlibsettings);
|
||||
if(!error) {
|
||||
if(decoded.size) {
|
||||
info->iccp_profile_size = decoded.size;
|
||||
info->iccp_profile_size = (__typeof(info->iccp_profile_size))decoded.size; // Unsafe cast
|
||||
if ( info->iccp_profile_size != decoded.size ) panic("info->iccp_profile_size != decoded.size"); // Check the cast
|
||||
info->iccp_profile = (unsigned char*)lodepng_malloc(decoded.size);
|
||||
if(info->iccp_profile) {
|
||||
lodepng_memcpy(info->iccp_profile, decoded.data, decoded.size);
|
||||
@ -4806,7 +4808,7 @@ static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h,
|
||||
size_t i;
|
||||
ucvector idat; /*the data from idat chunks*/
|
||||
unsigned char* scanlines = 0;
|
||||
size_t scanlines_size = 0, expected_size = 0;
|
||||
size_t scanlines_size = 0;
|
||||
size_t outsize = 0;
|
||||
|
||||
/*for unknown chunk order*/
|
||||
@ -4952,14 +4954,14 @@ static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h,
|
||||
if(state->info_png.color.colortype == LCT_PALETTE && !state->info_png.color.palette) {
|
||||
state->error = 106; /* error: PNG file must have PLTE chunk if color type is palette */
|
||||
}
|
||||
|
||||
size_t expected_size = 0;
|
||||
/*predict output size, to allocate exact size for output buffer to avoid more dynamic allocation.
|
||||
If the decompressed size does not match the prediction, the image must be corrupt.*/
|
||||
if(state->info_png.interlace_method == 0) {
|
||||
size_t bpp = lodepng_get_bpp(&state->info_png.color);
|
||||
unsigned bpp = lodepng_get_bpp(&state->info_png.color);
|
||||
expected_size = lodepng_get_raw_size_idat(*w, *h, bpp);
|
||||
} else {
|
||||
size_t bpp = lodepng_get_bpp(&state->info_png.color);
|
||||
unsigned bpp = lodepng_get_bpp(&state->info_png.color);
|
||||
/*Adam-7 interlaced: expected size is the sum of the 7 sub-images sizes*/
|
||||
expected_size = 0;
|
||||
expected_size += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, bpp);
|
||||
|
@ -198,6 +198,8 @@
|
||||
cpp_foundation/XStringWArray.h
|
||||
cpp_foundation/XToolsCommon.cpp
|
||||
cpp_foundation/XToolsCommon.h
|
||||
cpp_foundation/XUINTN.cpp
|
||||
cpp_foundation/XUINTN.h
|
||||
cpp_unit_test/all_tests.h
|
||||
cpp_unit_test/all_tests.cpp
|
||||
cpp_unit_test/global_test.cpp
|
||||
@ -210,6 +212,8 @@
|
||||
cpp_unit_test/XStringW_test.h
|
||||
cpp_unit_test/XStringWArray_test.cpp
|
||||
cpp_unit_test/XStringWArray_test.h
|
||||
cpp_unit_test/XUINTN_test.cpp
|
||||
cpp_unit_test/XUINTN_test.h
|
||||
[Sources.IA32]
|
||||
libeg/ftol.asm | MSFT
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user