More cleaning in tests.

This commit is contained in:
Jief L 2020-04-24 12:30:09 +03:00
parent 21f4bc6cb4
commit 5f195c9d8a
38 changed files with 496 additions and 562 deletions

View File

@ -528,6 +528,9 @@ uint32_t getUptimeInMilliseconds()
#endif #endif
#endif //PRINTF_LITE_TIMESTAMP_SUPPORT #endif //PRINTF_LITE_TIMESTAMP_SUPPORT
#ifdef __GNUC__
static void print_longlong(INT_BIGGEST_TYPE v, unsigned int base, PrintfParams* printfParams) __attribute__((no_sanitize("undefined"))); // disable sanitize because we'll do -v
#endif
#if DEFINE_SECTIONS == 1 #if DEFINE_SECTIONS == 1
__attribute__((noinline, section(".print_longlong"))) __attribute__((noinline, section(".print_longlong")))

View File

@ -213,10 +213,16 @@
<sourceEntries> <sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="MemLogLibDefault"/>
<entry excluding="wchar.cpp|strlen.cpp|strcmp.cpp|stdio.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="Posix"/>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_foundation"/> <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_foundation"/>
<entry excluding="printlib-test.cpp|poolprint-test.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_unit_test"/> <entry excluding="printlib-test.cpp|poolprint-test.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_unit_test"/>
<entry excluding="operatorNewDelete.cpp|memory.cpp|globals_dtor.cpp|globals_ctor.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_util"/>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/> <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
</sourceEntries> </sourceEntries>
@ -441,6 +447,8 @@
<entry excluding="MemLogLib.c" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="MemLogLibDefault"/> <entry excluding="MemLogLib.c" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="MemLogLibDefault"/>
<entry excluding="strlen.cpp|wchar.cpp|strcmp.cpp|stdio.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="Posix"/>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_foundation"/> <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_foundation"/>
<entry excluding="printlib-test.cpp|poolprint-test.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_unit_test"/> <entry excluding="printlib-test.cpp|poolprint-test.cpp" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="cpp_unit_test"/>

View File

@ -30,6 +30,11 @@
<type>2</type> <type>2</type>
<locationURI>PARENT-2-PROJECT_LOC/Library/MemLogLibDefault</locationURI> <locationURI>PARENT-2-PROJECT_LOC/Library/MemLogLibDefault</locationURI>
</link> </link>
<link>
<name>Posix</name>
<type>2</type>
<locationURI>PARENT-2-PROJECT_LOC/rEFIt_UEFI/Platform/Posix</locationURI>
</link>
<link> <link>
<name>cpp_foundation</name> <name>cpp_foundation</name>
<type>2</type> <type>2</type>

View File

@ -2,5 +2,5 @@
SCRIPT_ABS_FILENAME=`LC_ALL=en_US.ISO8859-1 perl -e 'use Cwd "abs_path";print abs_path(shift)' "${BASH_SOURCE[0]}"` SCRIPT_ABS_FILENAME=`LC_ALL=en_US.ISO8859-1 perl -e 'use Cwd "abs_path";print abs_path(shift)' "${BASH_SOURCE[0]}"`
SCRIPT_DIR=`dirname "$SCRIPT_ABS_FILENAME"` SCRIPT_DIR=`dirname "$SCRIPT_ABS_FILENAME"`
echo -g -fshort-wchar -include ../src/Platform.h echo -g -fshort-wchar

View File

@ -8,7 +8,6 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
9A0B08562402FF7700E2B470 /* XStringWArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */; }; 9A0B08562402FF7700E2B470 /* XStringWArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */; };
9A0B08572402FF7A00E2B470 /* XToolsCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08492402FE9300E2B470 /* XToolsCommon.cpp */; };
9A0B08582402FF7F00E2B470 /* XStringWArray_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */; }; 9A0B08582402FF7F00E2B470 /* XStringWArray_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */; };
9A0B08592402FF8200E2B470 /* all_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08512402FE9B00E2B470 /* all_tests.cpp */; }; 9A0B08592402FF8200E2B470 /* all_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08512402FE9B00E2B470 /* all_tests.cpp */; };
9A0B085A2402FF8400E2B470 /* XObjArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08522402FE9B00E2B470 /* XObjArray_tests.cpp */; }; 9A0B085A2402FF8400E2B470 /* XObjArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08522402FE9B00E2B470 /* XObjArray_tests.cpp */; };
@ -20,7 +19,6 @@
9A0B08772403B08400E2B470 /* XStringWArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */; }; 9A0B08772403B08400E2B470 /* XStringWArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */; };
9A0B087A2403B08400E2B470 /* all_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08512402FE9B00E2B470 /* all_tests.cpp */; }; 9A0B087A2403B08400E2B470 /* all_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08512402FE9B00E2B470 /* all_tests.cpp */; };
9A0B087B2403B08400E2B470 /* global_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08642403144C00E2B470 /* global_test.cpp */; }; 9A0B087B2403B08400E2B470 /* global_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08642403144C00E2B470 /* global_test.cpp */; };
9A0B087C2403B08400E2B470 /* XToolsCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08492402FE9300E2B470 /* XToolsCommon.cpp */; };
9A0B087D2403B08400E2B470 /* XStringWArray_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */; }; 9A0B087D2403B08400E2B470 /* XStringWArray_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */; };
9A0B087E2403B08400E2B470 /* XArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08532402FE9B00E2B470 /* XArray_tests.cpp */; }; 9A0B087E2403B08400E2B470 /* XArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08532402FE9B00E2B470 /* XArray_tests.cpp */; };
9A0B087F2403B08400E2B470 /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B085D240300E000E2B470 /* Platform.cpp */; }; 9A0B087F2403B08400E2B470 /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B085D240300E000E2B470 /* Platform.cpp */; };
@ -42,9 +40,9 @@
9A28CD22241BB61B00F3D247 /* strlen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD1E241BB61B00F3D247 /* strlen.cpp */; }; 9A28CD22241BB61B00F3D247 /* strlen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD1E241BB61B00F3D247 /* strlen.cpp */; };
9A28CD23241BB61B00F3D247 /* strlen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD1E241BB61B00F3D247 /* strlen.cpp */; }; 9A28CD23241BB61B00F3D247 /* strlen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD1E241BB61B00F3D247 /* strlen.cpp */; };
9A28CD24241BB61B00F3D247 /* strlen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD1E241BB61B00F3D247 /* strlen.cpp */; }; 9A28CD24241BB61B00F3D247 /* strlen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD1E241BB61B00F3D247 /* strlen.cpp */; };
9A28CD4B241F4CCE00F3D247 /* xcode_utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD4A241F4CCE00F3D247 /* xcode_utf16.cpp */; }; 9A28CD4B241F4CCE00F3D247 /* xcode_utf_fixed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD4A241F4CCE00F3D247 /* xcode_utf_fixed.cpp */; };
9A28CD4C241F4CCE00F3D247 /* xcode_utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD4A241F4CCE00F3D247 /* xcode_utf16.cpp */; }; 9A28CD4C241F4CCE00F3D247 /* xcode_utf_fixed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD4A241F4CCE00F3D247 /* xcode_utf_fixed.cpp */; };
9A28CD4D241F4CCE00F3D247 /* xcode_utf16.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD4A241F4CCE00F3D247 /* xcode_utf16.cpp */; }; 9A28CD4D241F4CCE00F3D247 /* xcode_utf_fixed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A28CD4A241F4CCE00F3D247 /* xcode_utf_fixed.cpp */; };
9A4185B12439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */; }; 9A4185B12439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */; };
9A4185B22439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */; }; 9A4185B22439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */; };
9A4185B32439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */; }; 9A4185B32439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */; };
@ -60,10 +58,8 @@
9A57C21A2418B9A00029A39F /* XObjArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08522402FE9B00E2B470 /* XObjArray_tests.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 */; }; 9A57C21B2418B9A00029A39F /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A9223302402FD1000483CBA /* main.cpp */; };
9A57C21D2418B9A00029A39F /* XStringWArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */; }; 9A57C21D2418B9A00029A39F /* XStringWArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */; };
9A57C2202418B9A00029A39F /* panic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC780A32417DD2F005CDD5C /* panic.cpp */; };
9A57C2222418B9A00029A39F /* all_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08512402FE9B00E2B470 /* all_tests.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 */; }; 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 */; }; 9A57C2252418B9A00029A39F /* XStringWArray_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B084F2402FE9B00E2B470 /* XStringWArray_test.cpp */; };
9A57C2272418B9A00029A39F /* XArray_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B08532402FE9B00E2B470 /* XArray_tests.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 */; }; 9A57C2282418B9A00029A39F /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9A0B085D240300E000E2B470 /* Platform.cpp */; };
@ -74,14 +70,9 @@
9AA0458A2425F94D000D6970 /* printf_lite-test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA045892425F94D000D6970 /* printf_lite-test.cpp */; }; 9AA0458A2425F94D000D6970 /* printf_lite-test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA045892425F94D000D6970 /* printf_lite-test.cpp */; };
9AA0458B2425F94D000D6970 /* printf_lite-test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA045892425F94D000D6970 /* printf_lite-test.cpp */; }; 9AA0458B2425F94D000D6970 /* printf_lite-test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA045892425F94D000D6970 /* printf_lite-test.cpp */; };
9AA0458C2425F94D000D6970 /* printf_lite-test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA045892425F94D000D6970 /* printf_lite-test.cpp */; }; 9AA0458C2425F94D000D6970 /* printf_lite-test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AA045892425F94D000D6970 /* printf_lite-test.cpp */; };
9AC780AE2417DD2F005CDD5C /* panic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC780A32417DD2F005CDD5C /* panic.cpp */; };
9AC780AF2417DD2F005CDD5C /* panic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC780A32417DD2F005CDD5C /* panic.cpp */; };
9ACAB117242623EE00BDB3CF /* printf_lite.c in Sources */ = {isa = PBXBuildFile; fileRef = 9ACAB116242623EE00BDB3CF /* printf_lite.c */; }; 9ACAB117242623EE00BDB3CF /* printf_lite.c in Sources */ = {isa = PBXBuildFile; fileRef = 9ACAB116242623EE00BDB3CF /* printf_lite.c */; };
9ACAB1192426255C00BDB3CF /* printf_lite.c in Sources */ = {isa = PBXBuildFile; fileRef = 9ACAB116242623EE00BDB3CF /* printf_lite.c */; }; 9ACAB1192426255C00BDB3CF /* printf_lite.c in Sources */ = {isa = PBXBuildFile; fileRef = 9ACAB116242623EE00BDB3CF /* printf_lite.c */; };
9ACAB11A2426255C00BDB3CF /* printf_lite.c in Sources */ = {isa = PBXBuildFile; fileRef = 9ACAB116242623EE00BDB3CF /* printf_lite.c */; }; 9ACAB11A2426255C00BDB3CF /* printf_lite.c in Sources */ = {isa = PBXBuildFile; fileRef = 9ACAB116242623EE00BDB3CF /* printf_lite.c */; };
9AD469492452B33700D6D0DB /* shared_with_menu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AD469472452B33700D6D0DB /* shared_with_menu.cpp */; };
9AD4694A2452B33700D6D0DB /* shared_with_menu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AD469472452B33700D6D0DB /* shared_with_menu.cpp */; };
9AD4694B2452B33700D6D0DB /* shared_with_menu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AD469472452B33700D6D0DB /* shared_with_menu.cpp */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */ /* Begin PBXCopyFilesBuildPhase section */
@ -116,9 +107,7 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
9A0B08442402FE9300E2B470 /* XStringWArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XStringWArray.h; sourceTree = "<group>"; }; 9A0B08442402FE9300E2B470 /* XStringWArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XStringWArray.h; sourceTree = "<group>"; };
9A0B08452402FE9300E2B470 /* XToolsCommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XToolsCommon.h; sourceTree = "<group>"; };
9A0B08472402FE9300E2B470 /* XStringWArray.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XStringWArray.cpp; sourceTree = "<group>"; }; 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XStringWArray.cpp; sourceTree = "<group>"; };
9A0B08492402FE9300E2B470 /* XToolsCommon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = XToolsCommon.cpp; sourceTree = "<group>"; };
9A0B084A2402FE9300E2B470 /* XArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XArray.h; sourceTree = "<group>"; }; 9A0B084A2402FE9300E2B470 /* XArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XArray.h; sourceTree = "<group>"; };
9A0B084B2402FE9300E2B470 /* XObjArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XObjArray.h; sourceTree = "<group>"; }; 9A0B084B2402FE9300E2B470 /* XObjArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XObjArray.h; sourceTree = "<group>"; };
9A0B084D2402FE9B00E2B470 /* XStringWArray_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XStringWArray_test.h; sourceTree = "<group>"; }; 9A0B084D2402FE9B00E2B470 /* XStringWArray_test.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XStringWArray_test.h; sourceTree = "<group>"; };
@ -143,8 +132,8 @@
9A28CD15241BACBB00F3D247 /* strlen_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strlen_test.cpp; sourceTree = "<group>"; }; 9A28CD15241BACBB00F3D247 /* strlen_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strlen_test.cpp; sourceTree = "<group>"; };
9A28CD1D241BB61B00F3D247 /* abort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = abort.cpp; sourceTree = "<group>"; }; 9A28CD1D241BB61B00F3D247 /* abort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = abort.cpp; sourceTree = "<group>"; };
9A28CD1E241BB61B00F3D247 /* strlen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strlen.cpp; sourceTree = "<group>"; }; 9A28CD1E241BB61B00F3D247 /* strlen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strlen.cpp; sourceTree = "<group>"; };
9A28CD49241F437C00F3D247 /* xcode_utf16.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_utf16.h; sourceTree = "<group>"; }; 9A28CD49241F437C00F3D247 /* xcode_utf_fixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xcode_utf_fixed.h; sourceTree = "<group>"; };
9A28CD4A241F4CCE00F3D247 /* xcode_utf16.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xcode_utf16.cpp; sourceTree = "<group>"; }; 9A28CD4A241F4CCE00F3D247 /* xcode_utf_fixed.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xcode_utf_fixed.cpp; sourceTree = "<group>"; };
9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadOptions_test.cpp; sourceTree = "<group>"; }; 9A4185AF2439E4D500BEAFB8 /* LoadOptions_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadOptions_test.cpp; sourceTree = "<group>"; };
9A4185B02439E4D600BEAFB8 /* LoadOptions_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoadOptions_test.h; sourceTree = "<group>"; }; 9A4185B02439E4D600BEAFB8 /* LoadOptions_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoadOptions_test.h; sourceTree = "<group>"; };
9A4185BE2439F73A00BEAFB8 /* XStringArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XStringArray.cpp; sourceTree = "<group>"; }; 9A4185BE2439F73A00BEAFB8 /* XStringArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XStringArray.cpp; sourceTree = "<group>"; };
@ -165,8 +154,7 @@
9AA045742425D200000D6970 /* IO.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IO.cpp; sourceTree = "<group>"; }; 9AA045742425D200000D6970 /* IO.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IO.cpp; sourceTree = "<group>"; };
9AA045882425F94D000D6970 /* printf_lite-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "printf_lite-test.h"; sourceTree = "<group>"; }; 9AA045882425F94D000D6970 /* printf_lite-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "printf_lite-test.h"; sourceTree = "<group>"; };
9AA045892425F94D000D6970 /* printf_lite-test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "printf_lite-test.cpp"; sourceTree = "<group>"; }; 9AA045892425F94D000D6970 /* printf_lite-test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "printf_lite-test.cpp"; sourceTree = "<group>"; };
9AC780A32417DD2F005CDD5C /* panic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = panic.cpp; sourceTree = "<group>"; }; 9AC790112452C45A0004FBE9 /* abort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = abort.h; sourceTree = "<group>"; };
9AC780A62417DD2F005CDD5C /* panic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = panic.h; sourceTree = "<group>"; };
9ACAB116242623EE00BDB3CF /* printf_lite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = printf_lite.c; sourceTree = "<group>"; }; 9ACAB116242623EE00BDB3CF /* printf_lite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = printf_lite.c; sourceTree = "<group>"; };
9ACAB1182426240C00BDB3CF /* printf_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = printf_lite.h; path = ../../Include/Library/printf_lite.h; sourceTree = "<group>"; }; 9ACAB1182426240C00BDB3CF /* printf_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = printf_lite.h; path = ../../Include/Library/printf_lite.h; sourceTree = "<group>"; };
9AD469472452B33700D6D0DB /* shared_with_menu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shared_with_menu.cpp; sourceTree = "<group>"; }; 9AD469472452B33700D6D0DB /* shared_with_menu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shared_with_menu.cpp; sourceTree = "<group>"; };
@ -226,8 +214,6 @@
9A4185BF2439F73A00BEAFB8 /* XStringArray.h */, 9A4185BF2439F73A00BEAFB8 /* XStringArray.h */,
9A0B08472402FE9300E2B470 /* XStringWArray.cpp */, 9A0B08472402FE9300E2B470 /* XStringWArray.cpp */,
9A0B08442402FE9300E2B470 /* XStringWArray.h */, 9A0B08442402FE9300E2B470 /* XStringWArray.h */,
9A0B08492402FE9300E2B470 /* XToolsCommon.cpp */,
9A0B08452402FE9300E2B470 /* XToolsCommon.h */,
); );
name = cpp_foundation; name = cpp_foundation;
path = ../../rEFIt_UEFI/cpp_foundation; path = ../../rEFIt_UEFI/cpp_foundation;
@ -294,6 +280,7 @@
9A28CCAF241B816400F3D247 /* Posix */ = { 9A28CCAF241B816400F3D247 /* Posix */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
9AC790112452C45A0004FBE9 /* abort.h */,
9A28CD1D241BB61B00F3D247 /* abort.cpp */, 9A28CD1D241BB61B00F3D247 /* abort.cpp */,
9A28CD1E241BB61B00F3D247 /* strlen.cpp */, 9A28CD1E241BB61B00F3D247 /* strlen.cpp */,
9A28CD0F241B9EF800F3D247 /* strcmp.cpp */, 9A28CD0F241B9EF800F3D247 /* strcmp.cpp */,
@ -308,7 +295,6 @@
9A1A3FD82424BC22008C89EB /* MemLogLibDefault */, 9A1A3FD82424BC22008C89EB /* MemLogLibDefault */,
9A0B08432402FE9300E2B470 /* cpp_foundation */, 9A0B08432402FE9300E2B470 /* cpp_foundation */,
9A0B084C2402FE9B00E2B470 /* cpp_unit_test */, 9A0B084C2402FE9B00E2B470 /* cpp_unit_test */,
9AC7809C2417DD2F005CDD5C /* cpp_util */,
9A92232F2402FD1000483CBA /* Main */, 9A92232F2402FD1000483CBA /* Main */,
9A28CCAC241B816400F3D247 /* Platform */, 9A28CCAC241B816400F3D247 /* Platform */,
9A92232E2402FD1000483CBA /* Products */, 9A92232E2402FD1000483CBA /* Products */,
@ -339,8 +325,8 @@
9A28CD13241B9FEE00F3D247 /* posix.h */, 9A28CD13241B9FEE00F3D247 /* posix.h */,
9AF4156E242CBC6000D2644C /* printf_lite-conf.h */, 9AF4156E242CBC6000D2644C /* printf_lite-conf.h */,
9AF4156B242CBB5600D2644C /* printf_lite-test-cpp_conf.h */, 9AF4156B242CBB5600D2644C /* printf_lite-test-cpp_conf.h */,
9A28CD4A241F4CCE00F3D247 /* xcode_utf16.cpp */, 9A28CD4A241F4CCE00F3D247 /* xcode_utf_fixed.cpp */,
9A28CD49241F437C00F3D247 /* xcode_utf16.h */, 9A28CD49241F437C00F3D247 /* xcode_utf_fixed.h */,
); );
name = Main; name = Main;
path = src; path = src;
@ -355,16 +341,6 @@
path = PoolPrint; path = PoolPrint;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
9AC7809C2417DD2F005CDD5C /* cpp_util */ = {
isa = PBXGroup;
children = (
9AC780A32417DD2F005CDD5C /* panic.cpp */,
9AC780A62417DD2F005CDD5C /* panic.h */,
);
name = cpp_util;
path = ../../rEFIt_UEFI/cpp_util;
sourceTree = "<group>";
};
9AD469462452B30500D6D0DB /* gui */ = { 9AD469462452B30500D6D0DB /* gui */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -473,18 +449,15 @@
9A4FFA842451C9740050B38B /* XString.cpp in Sources */, 9A4FFA842451C9740050B38B /* XString.cpp in Sources */,
9A4FFA822451C88D0050B38B /* XString_test.cpp in Sources */, 9A4FFA822451C88D0050B38B /* XString_test.cpp in Sources */,
9A28CD23241BB61B00F3D247 /* strlen.cpp in Sources */, 9A28CD23241BB61B00F3D247 /* strlen.cpp in Sources */,
9A28CD4C241F4CCE00F3D247 /* xcode_utf16.cpp in Sources */, 9A28CD4C241F4CCE00F3D247 /* xcode_utf_fixed.cpp in Sources */,
9A0B08742403B08400E2B470 /* main.cpp in Sources */, 9A0B08742403B08400E2B470 /* main.cpp in Sources */,
9A28CD17241BACBB00F3D247 /* strlen_test.cpp in Sources */, 9A28CD17241BACBB00F3D247 /* strlen_test.cpp in Sources */,
9A0B08772403B08400E2B470 /* XStringWArray.cpp in Sources */, 9A0B08772403B08400E2B470 /* XStringWArray.cpp in Sources */,
9A28CD0D241B8DD400F3D247 /* strcmp_test.cpp in Sources */, 9A28CD0D241B8DD400F3D247 /* strcmp_test.cpp in Sources */,
9A28CD0A241B8DD400F3D247 /* strncmp_test.cpp in Sources */, 9A28CD0A241B8DD400F3D247 /* strncmp_test.cpp in Sources */,
9AC780AF2417DD2F005CDD5C /* panic.cpp in Sources */,
9A0B087A2403B08400E2B470 /* all_tests.cpp in Sources */, 9A0B087A2403B08400E2B470 /* all_tests.cpp in Sources */,
9A9AEB8E243F752C00FBD7D8 /* unicode_conversions.cpp in Sources */, 9A9AEB8E243F752C00FBD7D8 /* unicode_conversions.cpp in Sources */,
9A0B087B2403B08400E2B470 /* global_test.cpp in Sources */, 9A0B087B2403B08400E2B470 /* global_test.cpp in Sources */,
9A0B087C2403B08400E2B470 /* XToolsCommon.cpp in Sources */,
9AD4694A2452B33700D6D0DB /* shared_with_menu.cpp in Sources */,
9ACAB1192426255C00BDB3CF /* printf_lite.c in Sources */, 9ACAB1192426255C00BDB3CF /* printf_lite.c in Sources */,
9A0B087D2403B08400E2B470 /* XStringWArray_test.cpp in Sources */, 9A0B087D2403B08400E2B470 /* XStringWArray_test.cpp in Sources */,
9A28CD11241B9EF800F3D247 /* strcmp.cpp in Sources */, 9A28CD11241B9EF800F3D247 /* strcmp.cpp in Sources */,
@ -505,18 +478,15 @@
9A4FFA852451C9740050B38B /* XString.cpp in Sources */, 9A4FFA852451C9740050B38B /* XString.cpp in Sources */,
9A4FFA832451C88D0050B38B /* XString_test.cpp in Sources */, 9A4FFA832451C88D0050B38B /* XString_test.cpp in Sources */,
9A28CD24241BB61B00F3D247 /* strlen.cpp in Sources */, 9A28CD24241BB61B00F3D247 /* strlen.cpp in Sources */,
9A28CD4D241F4CCE00F3D247 /* xcode_utf16.cpp in Sources */, 9A28CD4D241F4CCE00F3D247 /* xcode_utf_fixed.cpp in Sources */,
9A57C21B2418B9A00029A39F /* main.cpp in Sources */, 9A57C21B2418B9A00029A39F /* main.cpp in Sources */,
9A28CD18241BACBB00F3D247 /* strlen_test.cpp in Sources */, 9A28CD18241BACBB00F3D247 /* strlen_test.cpp in Sources */,
9A57C21D2418B9A00029A39F /* XStringWArray.cpp in Sources */, 9A57C21D2418B9A00029A39F /* XStringWArray.cpp in Sources */,
9A28CD0E241B8DD400F3D247 /* strcmp_test.cpp in Sources */, 9A28CD0E241B8DD400F3D247 /* strcmp_test.cpp in Sources */,
9A28CD0B241B8DD400F3D247 /* strncmp_test.cpp in Sources */, 9A28CD0B241B8DD400F3D247 /* strncmp_test.cpp in Sources */,
9A57C2202418B9A00029A39F /* panic.cpp in Sources */,
9A57C2222418B9A00029A39F /* all_tests.cpp in Sources */, 9A57C2222418B9A00029A39F /* all_tests.cpp in Sources */,
9A9AEB8F243F752C00FBD7D8 /* unicode_conversions.cpp in Sources */, 9A9AEB8F243F752C00FBD7D8 /* unicode_conversions.cpp in Sources */,
9A57C2232418B9A00029A39F /* global_test.cpp in Sources */, 9A57C2232418B9A00029A39F /* global_test.cpp in Sources */,
9A57C2242418B9A00029A39F /* XToolsCommon.cpp in Sources */,
9AD4694B2452B33700D6D0DB /* shared_with_menu.cpp in Sources */,
9ACAB11A2426255C00BDB3CF /* printf_lite.c in Sources */, 9ACAB11A2426255C00BDB3CF /* printf_lite.c in Sources */,
9A57C2252418B9A00029A39F /* XStringWArray_test.cpp in Sources */, 9A57C2252418B9A00029A39F /* XStringWArray_test.cpp in Sources */,
9A28CD12241B9EF800F3D247 /* strcmp.cpp in Sources */, 9A28CD12241B9EF800F3D247 /* strcmp.cpp in Sources */,
@ -536,19 +506,16 @@
9A4FFA7E2451C8330050B38B /* XString.cpp in Sources */, 9A4FFA7E2451C8330050B38B /* XString.cpp in Sources */,
9A4FFA812451C88D0050B38B /* XString_test.cpp in Sources */, 9A4FFA812451C88D0050B38B /* XString_test.cpp in Sources */,
9A28CD22241BB61B00F3D247 /* strlen.cpp in Sources */, 9A28CD22241BB61B00F3D247 /* strlen.cpp in Sources */,
9A28CD4B241F4CCE00F3D247 /* xcode_utf16.cpp in Sources */, 9A28CD4B241F4CCE00F3D247 /* xcode_utf_fixed.cpp in Sources */,
9A9223312402FD1000483CBA /* main.cpp in Sources */, 9A9223312402FD1000483CBA /* main.cpp in Sources */,
9A28CD16241BACBB00F3D247 /* strlen_test.cpp in Sources */, 9A28CD16241BACBB00F3D247 /* strlen_test.cpp in Sources */,
9A0B08562402FF7700E2B470 /* XStringWArray.cpp in Sources */, 9A0B08562402FF7700E2B470 /* XStringWArray.cpp in Sources */,
9A28CD0C241B8DD400F3D247 /* strcmp_test.cpp in Sources */, 9A28CD0C241B8DD400F3D247 /* strcmp_test.cpp in Sources */,
9A28CD09241B8DD400F3D247 /* strncmp_test.cpp in Sources */, 9A28CD09241B8DD400F3D247 /* strncmp_test.cpp in Sources */,
9AC780AE2417DD2F005CDD5C /* panic.cpp in Sources */,
9A0B08592402FF8200E2B470 /* all_tests.cpp in Sources */, 9A0B08592402FF8200E2B470 /* all_tests.cpp in Sources */,
9A0B08662403144C00E2B470 /* global_test.cpp in Sources */, 9A0B08662403144C00E2B470 /* global_test.cpp in Sources */,
9A4185B12439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */, 9A4185B12439E4D600BEAFB8 /* LoadOptions_test.cpp in Sources */,
9A0B08572402FF7A00E2B470 /* XToolsCommon.cpp in Sources */,
9ACAB117242623EE00BDB3CF /* printf_lite.c in Sources */, 9ACAB117242623EE00BDB3CF /* printf_lite.c in Sources */,
9AD469492452B33700D6D0DB /* shared_with_menu.cpp in Sources */,
9A0B08582402FF7F00E2B470 /* XStringWArray_test.cpp in Sources */, 9A0B08582402FF7F00E2B470 /* XStringWArray_test.cpp in Sources */,
9A9AEB8D243F73CE00FBD7D8 /* unicode_conversions.cpp in Sources */, 9A9AEB8D243F73CE00FBD7D8 /* unicode_conversions.cpp in Sources */,
9A4185C02439F73A00BEAFB8 /* XStringArray.cpp in Sources */, 9A4185C02439F73A00BEAFB8 /* XStringArray.cpp in Sources */,
@ -584,11 +551,7 @@
buildSettings = { buildSettings = {
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
GCC_CHAR_IS_UNSIGNED_CHAR = YES; GCC_CHAR_IS_UNSIGNED_CHAR = YES;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
"$(inherited)",
"wcslen=utf16_wcslen",
"wcsncmp=utf16_wcsncmp",
);
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"$(inherited)", "$(inherited)",
"-fshort-wchar", "-fshort-wchar",
@ -663,11 +626,8 @@
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREFIX_HEADER = src/Platform.h; GCC_PREFIX_HEADER = "";
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = JIEF_DEBUG;
JIEF_DEBUG,
XSTRING16_DEV,
);
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -752,7 +712,7 @@
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_PREFIX_HEADER = src/Platform.h; GCC_PREFIX_HEADER = "";
GCC_PREPROCESSOR_DEFINITIONS = ""; GCC_PREPROCESSOR_DEFINITIONS = "";
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
@ -790,11 +750,7 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
"$(inherited)",
"wcslen=utf16_wcslen",
"wcsncmp=utf16_wcsncmp",
);
OTHER_CFLAGS = ( OTHER_CFLAGS = (
"$(inherited)", "$(inherited)",
"-fshort-wchar", "-fshort-wchar",

View File

@ -25,51 +25,51 @@ void CpuDeadLoop(void)
{ {
exit(1); exit(1);
} }
//
static char *dull_replace(const char *in, const char *pattern, const char *by, char* res) //static char *dull_replace(const char *in, const char *pattern, const char *by, char* res)
{ //{
// size_t outsize = strlen(in) + 1; //// size_t outsize = strlen(in) + 1;
// TODO maybe avoid reallocing by counting the non-overlapping occurences of pattern // // TODO maybe avoid reallocing by counting the non-overlapping occurences of pattern
// char *res = malloc(outsize); //// char *res = malloc(outsize);
// use this to iterate over the output // // use this to iterate over the output
size_t resoffset = 0; // size_t resoffset = 0;
//
const char *needle; // const char *needle;
while ( (needle = strstr(in, pattern)) ) { // while ( (needle = strstr(in, pattern)) ) {
// copy everything up to the pattern // // copy everything up to the pattern
memcpy(res + resoffset, in, (size_t)(needle - in)); // memcpy(res + resoffset, in, (size_t)(needle - in));
resoffset += (size_t)(needle - in); // resoffset += (size_t)(needle - in);
//
// skip the pattern in the input-string // // skip the pattern in the input-string
in = needle + strlen(pattern); // in = needle + strlen(pattern);
//
// adjust space for replacement // // adjust space for replacement
// outsize = outsize - strlen(pattern) + strlen(by); //// outsize = outsize - strlen(pattern) + strlen(by);
// res = realloc(res, outsize); //// res = realloc(res, outsize);
//
// copy the pattern // // copy the pattern
memcpy(res + resoffset, by, strlen(by)); // memcpy(res + resoffset, by, strlen(by));
resoffset += strlen(by); // resoffset += strlen(by);
} // }
//
// copy the remaining input // // copy the remaining input
strcpy(res + resoffset, in); // strcpy(res + resoffset, in);
//
return res; // return res;
} //}
//
void DebugLog(INTN DebugMode, const char *FormatString, ...) //void DebugLog(INTN DebugMode, const char *FormatString, ...)
{ //{
(void)DebugMode; // (void)DebugMode;
//
char* NewFormat = (char*)alloca(strlen(FormatString)+1); // char* NewFormat = (char*)alloca(strlen(FormatString)+1);
dull_replace(FormatString, "%a", "%s", NewFormat); //// dull_replace(FormatString, "%a", "%s", NewFormat);
//
va_list va; // va_list va;
va_start(va, FormatString); // va_start(va, FormatString);
vprintf(NewFormat, va); // vprintf(NewFormat, va);
va_end(va); // va_end(va);
} //}
void PauseForKey(const wchar_t* msg) void PauseForKey(const wchar_t* msg)
{ {
@ -132,14 +132,14 @@ void CopyMem(void *Destination, void *Source, UINTN Length)
CHAR16* EfiStrDuplicate (IN CONST CHAR16 *Src) CHAR16* EfiStrDuplicate (IN CONST CHAR16 *Src)
{ {
CHAR16* newS = (CHAR16*)malloc((wcslen(Src)+1)*sizeof(wchar_t)); CHAR16* newS = (CHAR16*)malloc((wcslen_fixed(Src)+1)*sizeof(wchar_t));
memcpy(newS, Src, (wcslen(Src)+1)*sizeof(wchar_t)); memcpy(newS, Src, (wcslen_fixed(Src)+1)*sizeof(wchar_t));
return newS; return newS;
} }
CHAR16* StrStr (IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString) CHAR16* StrStr (IN CONST CHAR16 *String, IN CONST CHAR16 *SearchString)
{ {
return (CHAR16*)wcsstr(String, SearchString); return (CHAR16*)wcsstr_fixed(String, SearchString);
} }

View File

@ -17,10 +17,11 @@
#include <wchar.h> #include <wchar.h>
#include "posix.h" #include "posix.h"
#include "../../../rEFIt_UEFI/Platform/Posix/abort.h"
#include "../../../rEFIt_UEFI/cpp_foundation/unicode_conversions.h" #include "../../../rEFIt_UEFI/cpp_foundation/unicode_conversions.h"
#include "../../../rEFIt_UEFI/cpp_foundation/XString.h" #include "../../../rEFIt_UEFI/cpp_foundation/XString.h"
#include "xcode_utf16.h" #include "xcode_utf_fixed.h"
#ifndef __cplusplus #ifndef __cplusplus
@ -64,7 +65,7 @@ typedef UINTN RETURN_STATUS;
#endif #endif
void CpuDeadLoop(void); void CpuDeadLoop(void);
void DebugLog(INTN DebugMode, const char *FormatString, ...); //void DebugLog(INTN DebugMode, const char *FormatString, ...);
void PauseForKey(const wchar_t* msg); void PauseForKey(const wchar_t* msg);

View File

@ -9,30 +9,17 @@
#define MAX_XSIZE SIZE_T_MAX #define MAX_XSIZE SIZE_T_MAX
//#define MAX_XISIZE MAX_INTN //#define MAX_XISIZE MAX_INTN
extern xsize XArrayGrowByDefault; #define XStringGrowByDefault 10
extern xsize XBufferGrowByDefault; #define XArrayGrowByDefault 8
//extern xsize XBufferGrowByDefault;
/* For convience, operator [] is define with int parameter. /* For convience, operator [] is define with int parameter.
* Defining __XTOOLS_INT_CHECK__ make a check that the parameter is >= 0 * Defining __XTOOLS_CHECK_OVERFLOW__ make a check that the parameter is >= 0
* TODO : make new XString using __XTOOLS_CHECK_OVERFLOW__
*/ */
#define __XTOOLS_INT_CHECK__ #define __XTOOLS_CHECK_OVERFLOW__
#include "../cpp_util/panic.h" #define Xrealloc(ptr, newsize, oldsize) realloc(ptr, newsize)
#define realloc(ptr, newsize, oldsize) realloc(ptr, newsize)
// Declare here instead of include to avoid circular dependency.
#ifdef _MSC_VER
#define __attribute__(x)
#endif
VOID
EFIAPI
DebugLog (
IN INTN DebugMode,
IN CONST CHAR8 *FormatString, ...) __attribute__((format(printf, 2, 3)));;

View File

@ -5,7 +5,7 @@
#define PRIF "%a" #define PRIF "%a"
#define PRILF "%s" #define PRILF "%s"
//#define loggf(...) DebugLog(2, __VA_ARGS__) //#define loggf(...) printf__VA_ARGS__)
#define loggf(...) printf(__VA_ARGS__) #define loggf(...) printf(__VA_ARGS__)
//#define DISPLAY_ONLY_FAILED //#define DISPLAY_ONLY_FAILED

View File

@ -4,7 +4,7 @@
#define PRIF "%a" #define PRIF "%a"
#define PRILF "%s" #define PRILF "%s"
#define loggf(...) DebugLog(2, __VA_ARGS__) #define loggf(...) printf__VA_ARGS__)
//#define loggf(...) printf(__VA_ARGS__) //#define loggf(...) printf(__VA_ARGS__)
#define DISPLAY_ONLY_FAILED #define DISPLAY_ONLY_FAILED

View File

@ -18,7 +18,7 @@
// Currently with clang version Apple LLVM version 10.0.0 (clang-1000.11.45.5) with High Sierra // Currently with clang version Apple LLVM version 10.0.0 (clang-1000.11.45.5) with High Sierra
// If it's fixed one day, a version number could added to this #ifdef // If it's fixed one day, a version number could added to this #ifdef
# include "xcode_utf16.h" # include "xcode_utf_fixed.h"
#else #else
# include <wchar.h> # include <wchar.h>
#endif #endif

View File

@ -9,13 +9,14 @@
#include <stdarg.h> #include <stdarg.h>
#include <stddef.h> // for size_t #include <stddef.h> // for size_t
#include <stdint.h>
#ifndef __cplusplus #ifndef __cplusplus
#ifdef _MSC_VER #ifdef _MSC_VER
typedef UINT16 wchar_t; typedef UINT16 wchar_t;
#endif #endif
typedef UINT32 char32_t; typedef uint32_t char32_t;
typedef UINT16 char16_t; typedef uint16_t char16_t;
#endif #endif
#ifdef _MSC_VER #ifdef _MSC_VER

View File

@ -4,7 +4,7 @@
#define PRIF "%s" #define PRIF "%s"
#define PRILF "%ls" #define PRILF "%ls"
#define loggf(...) DebugLog(2, __VA_ARGS__) #define loggf(...) printf(__VA_ARGS__)
//#define loggf(...) printf(__VA_ARGS__) //#define loggf(...) printf(__VA_ARGS__)
#define DISPLAY_ONLY_FAILED #define DISPLAY_ONLY_FAILED

View File

@ -4,7 +4,7 @@
#define PRIF "%s" #define PRIF "%s"
#define PRILF "%ls" #define PRILF "%ls"
//#define loggf(...) DebugLog(2, __VA_ARGS__) //#define loggf(...) printf__VA_ARGS__)
#define loggf(...) printf(__VA_ARGS__) #define loggf(...) printf(__VA_ARGS__)
//#define DISPLAY_ONLY_FAILED //#define DISPLAY_ONLY_FAILED

View File

@ -1,36 +0,0 @@
//
// wfunction.hpp
// cpp_tests
//
// Created by jief on 15.03.20.
// Copyright © 2020 JF Knudsen. All rights reserved.
//
#ifndef __xcode_utf16_h__
#define __xcode_utf16_h__
#if defined(__APPLE__) && defined(__clang__) && __WCHAR_MAX__ <= 0xFFFFu
//#define wcslen utf16_wcsleny
//#define strlen utf16_wcslenx
#ifdef __cplusplus
extern "C" {
#endif
/*
* all the functions w... seems to expect utf32 even when compiled with short-wchar
*/
size_t utf16_wcslen(const wchar_t *s);
int utf16_wcsncmp(const wchar_t *s1, const wchar_t * s2, size_t n);
#ifdef __cplusplus
}
#endif
#endif // defined(__APPLE__) && defined(__clang__) && __WCHAR_MAX__ <= 0xFFFFu
#endif /* wfunction_hpp */

View File

@ -6,20 +6,17 @@
// Copyright © 2020 JF Knudsen. All rights reserved. // Copyright © 2020 JF Knudsen. All rights reserved.
// //
//#include <stdarg.h>
//#include <stdint.h>
//#include <limits.h>
//#include <stdlib.h>
#if defined(__APPLE__) && defined(__clang__) && __WCHAR_MAX__ <= 0xFFFFu
/* /*
* clang had poisoned identifier like wcslen. * clang had poisoned identifier like wcslen.
* It's not possible to define a function with that name, not even a macro... except on the command line. * It's not possible to define a function with that name, not even a macro... except on the command line.
* So, for this to work, pass macro definition argument on command line : wcslen=utf16_wcslen wcsncmp=utf16_wcsncmp * So, for this to work, pass macro definition argument on command line : wcslen=utf16_wcslen wcsncmp=utf16_wcsncmp wcsstr=utf16_wcsstr
*/ */
#include <wchar.h>
#include <vector> #include <vector>
#include <cwchar>
#if __WCHAR_MAX__ < 0x10000
static int is_surrogate(char16_t uc) { return (uc - 0xd800u) < 2048u; } static int is_surrogate(char16_t uc) { return (uc - 0xd800u) < 2048u; }
static int is_high_surrogate(char16_t uc) { return (uc & 0xfffffc00) == 0xd800; } static int is_high_surrogate(char16_t uc) { return (uc & 0xfffffc00) == 0xd800; }
@ -47,17 +44,27 @@ static void convert_utf16_to_utf32(const char16_t* input, size_t input_size, std
(*output).push_back(0); (*output).push_back(0);
} }
#endif
size_t utf16_wcslen(const wchar_t *s)
size_t wcslen_fixed(const wchar_t *s)
{ {
#if __WCHAR_MAX__ >= 0x10000
return wcslen(s);
#else
// wcslen seems not to work if sizeof(wchar_t) == 2 // wcslen seems not to work if sizeof(wchar_t) == 2
const wchar_t* p; const wchar_t* p;
for ( p = s ; *p ; p++ ); for ( p = s ; *p ; p++ );
return (size_t)(p-s); return (size_t)(p-s);
#endif
} }
int utf16_wcsncmp(const wchar_t *s1, const wchar_t * s2, size_t n) int wcsncmp_fixed(const wchar_t *s1, const wchar_t * s2, size_t n)
{ {
#if __WCHAR_MAX__ >= 0x10000
return wcsncmp(s1, s2, n);
#else
// Looks like wcscmp doesn't work with Utf16, even if compiled with -fshort-wchar. // Looks like wcscmp doesn't work with Utf16, even if compiled with -fshort-wchar.
// So conversion to Utf32 needed first. // So conversion to Utf32 needed first.
@ -71,11 +78,26 @@ int utf16_wcsncmp(const wchar_t *s1, const wchar_t * s2, size_t n)
// but that's ok because we converted only n UTF16 chars in the call of convert_utf16_to_utf32 // but that's ok because we converted only n UTF16 chars in the call of convert_utf16_to_utf32
int ret = wcscmp((const wchar_t*)s1Utf32.data(), (const wchar_t*)s2Utf32.data()); int ret = wcscmp((const wchar_t*)s1Utf32.data(), (const wchar_t*)s2Utf32.data());
return ret; return ret;
#endif
} }
const wchar_t* wcsstr_fixed(const wchar_t* haystack, const wchar_t* needle)
{
#if __WCHAR_MAX__ >= 0x10000
return wcsstr(haystack, needle);
#else
// Looks like wcscmp doesn't work with Utf16, even if compiled with -fshort-wchar.
// So conversion to Utf32 needed first.
const wchar_t *a = haystack, *b = needle;
for (;;)
if (!*b) return a - wcslen_fixed(needle);
else if (!*a) return NULL;
else if (*a++ != *b++) { a = ++haystack; b = needle;}
#endif
}
#endif // defined(__APPLE__) && defined(__clang__) && __WCHAR_MAX__ <= 0xFFFFu

View File

@ -0,0 +1,22 @@
//
// wfunction.hpp
// cpp_tests
//
// Created by jief on 15.03.20.
// Copyright © 2020 JF Knudsen. All rights reserved.
//
#ifndef __xcode_utf16_h__
#define __xcode_utf16_h__
/*
* all the functions w... seems to expect utf32 even when compiled with short-wchar
*/
size_t wcslen_fixed(const wchar_t *s);
int wcsncmp_fixed(const wchar_t *s1, const wchar_t * s2, size_t n);
const wchar_t* wcsstr_fixed(const wchar_t* s1, const wchar_t* s2);
#endif /* wfunction_hpp */

View File

@ -1,5 +1,5 @@
//#ifdef CLOVER_BUILD //#ifdef CLOVER_BUILD
#include "../../Platform/BootLog.h" //#include "../../Platform/BootLog.h"
#include <Platform.h> #include <Platform.h>
@ -22,7 +22,7 @@
void abort(void) void abort(void)
{ {
DebugLog(2, "A fatal error happened. System halted\n"); printf("A fatal error happened. System halted\n");
while (1) { // tis will avoid warning : Function declared 'noreturn' should not return while (1) { // tis will avoid warning : Function declared 'noreturn' should not return
CpuDeadLoop(); CpuDeadLoop();
} }

View File

@ -15,7 +15,7 @@
#if 0 #if 0
#define XArray_DBG(...) DebugLog(2, __VA_ARGS__) #define XArray_DBG(...) printf(__VA_ARGS__)
#else #else
#define XArray_DBG(...) #define XArray_DBG(...)
#endif #endif
@ -185,8 +185,7 @@ void XArray<TYPE>::CheckSize(xsize nNewSize, xsize nGrowBy)
nNewSize += nGrowBy; nNewSize += nGrowBy;
m_data = (TYPE *)Xrealloc((void *)m_data, nNewSize * sizeof(TYPE), m_allocatedSize * sizeof(TYPE) ); m_data = (TYPE *)Xrealloc((void *)m_data, nNewSize * sizeof(TYPE), m_allocatedSize * sizeof(TYPE) );
if ( !m_data ) { if ( !m_data ) {
DebugLog(2, "XArray<TYPE>::CheckSize(nNewSize=%zu, nGrowBy=%zu) : Xrealloc(%zu, %lu, %" PRIuPTR ") returned NULL. System halted\n", nNewSize, nGrowBy, m_allocatedSize, nNewSize*sizeof(TYPE), (uintptr_t)m_data); panic("XArray<TYPE>::CheckSize(nNewSize=%zu, nGrowBy=%zu) : Xrealloc(%zu, %lu, %" PRIuPTR ") returned NULL. System halted\n", nNewSize, nGrowBy, m_allocatedSize, nNewSize*sizeof(TYPE), (uintptr_t)m_data);
panic();
} }
// memset(&_Data[_Size], 0, (nNewSize-_Size) * sizeof(TYPE)); // Could help for debugging, but zeroing in not needed. // memset(&_Data[_Size], 0, (nNewSize-_Size) * sizeof(TYPE)); // Could help for debugging, but zeroing in not needed.
m_allocatedSize = nNewSize; m_allocatedSize = nNewSize;
@ -208,8 +207,7 @@ void XArray<TYPE>::setSize(xsize l)
m_len = l; m_len = l;
#ifdef DEBUG #ifdef DEBUG
if(m_len > m_allocatedSize) { if(m_len > m_allocatedSize) {
DebugLog(2, "XArray::SetLength(xsize) -> _Len > _Size"); panic("XArray::SetLength(xsize) -> _Len > _Size");
panic();
} }
#endif #endif
} }
@ -221,8 +219,7 @@ TYPE &XArray<TYPE>::ElementAt(xsize index)
{ {
// #ifdef _DEBUG // #ifdef _DEBUG
if ( index >= m_len ) { if ( index >= m_len ) {
DebugLog(2, "XArray::ElementAt(xsize) -> Operator [] : index > m_len"); panic("XArray::ElementAt(xsize) -> Operator [] : index > m_len");
panic();
} }
// #endif // #endif
return m_data[index]; return m_data[index];
@ -234,8 +231,7 @@ const TYPE& XArray<TYPE>::ElementAt(xsize index) const
{ {
// #ifdef _DEBUG // #ifdef _DEBUG
if ( index >= m_len ) { if ( index >= m_len ) {
DebugLog(2, "XArray::ElementAt(xsize) const -> Operator [] : index > m_len"); panic("XArray::ElementAt(xsize) const -> Operator [] : index > m_len");
panic();
} }
// #endif // #endif
return m_data[index]; return m_data[index];
@ -250,8 +246,7 @@ TYPE &XArray<TYPE>::ElementAt(int index)
panic("XArray::ElementAt(int) -> Operator [] : index < 0"); panic("XArray::ElementAt(int) -> Operator [] : index < 0");
} }
if ( (unsigned int)index >= m_len ) { // cast safe, index > 0 if ( (unsigned int)index >= m_len ) { // cast safe, index > 0
DebugLog(2, "XArray::ElementAt(int) -> Operator [] : index > m_len"); panic("XArray::ElementAt(int) -> Operator [] : index > m_len");
panic();
} }
// #endif // #endif
return m_data[index]; return m_data[index];
@ -266,8 +261,7 @@ const TYPE& XArray<TYPE>::ElementAt(int index) const
panic("XArray::ElementAt(int) const -> Operator [] : 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))' if ( (unsigned int)index >= m_len ) { // cast ok as index > 0. Ideally cast would be like '(unsigned __typeof__(index))'
DebugLog(2, "XArray::ElementAt(int) const -> Operator [] : index > m_len"); panic("XArray::ElementAt(int) const -> Operator [] : index > m_len");
panic();
} }
// #endif // #endif
return m_data[index]; return m_data[index];
@ -350,8 +344,7 @@ void XArray<TYPE>::RemoveAtIndex(int nIndex)
{ {
#if defined(__XTOOLS_CHECK_OVERFLOW__) #if defined(__XTOOLS_CHECK_OVERFLOW__)
if ( nIndex < 0 ) { if ( nIndex < 0 ) {
DebugLog(2, "XArray<TYPE>::RemoveAtIndex(int nIndex) : BUG nIndex (%d) is < 0. System halted\n", nIndex); panic("XArray<TYPE>::RemoveAtIndex(int nIndex) : BUG nIndex (%d) is < 0. System halted\n", nIndex);
panic();
} }
#endif #endif

View File

@ -15,7 +15,7 @@
#if 1 #if 1
#define XObjArray_DBG(...) DebugLog(2, __VA_ARGS__) #define XObjArray_DBG(...) printf__VA_ARGS__)
#else #else
#define XObjArray_DBG(...) #define XObjArray_DBG(...)
#endif #endif
@ -44,8 +44,10 @@ class XObjArrayNC
virtual ~XObjArrayNC(); virtual ~XObjArrayNC();
protected: protected:
XObjArrayNC(const XObjArrayNC<TYPE> &anObjArrayNC) { (void)anObjArrayNC; DebugLog(2, "Intentionally not defined"); panic(); } // XObjArrayNC(const XObjArrayNC<TYPE> &anObjArrayNC) { (void)anObjArrayNC; panic("Intentionally not defined"); }
const XObjArrayNC<TYPE> &operator =(const XObjArrayNC<TYPE> &anObjArrayNC) { (void)anObjArrayNC; DebugLog(2, "Intentionally not defined"); panic(); } // const XObjArrayNC<TYPE> &operator =(const XObjArrayNC<TYPE> &anObjArrayNC) { (void)anObjArrayNC; panic("Intentionally not defined"); }
XObjArrayNC(const XObjArrayNC<TYPE> &anObjArrayNC) = delete;
const XObjArrayNC<TYPE> &operator =(const XObjArrayNC<TYPE> &anObjArrayNC) = delete;
xsize _getLen() const { return _Len; } xsize _getLen() const { return _Len; }
public: public:
@ -424,8 +426,7 @@ void XObjArrayNC<TYPE>::RemoveAtIndex(xsize nIndex)
if ( nIndex < XObjArrayNC<TYPE>::_Len ) if ( nIndex < XObjArrayNC<TYPE>::_Len )
{ {
if ( nIndex >= XObjArrayNC<TYPE>::_Len ) { if ( nIndex >= XObjArrayNC<TYPE>::_Len ) {
DebugLog(2, "void XObjArrayNC<TYPE>::RemoveAtIndex(xsize nIndex) : BUG nIndex (%zu) is > length(). System halted\n", nIndex); panic("void XObjArrayNC<TYPE>::RemoveAtIndex(xsize nIndex) : BUG nIndex (%zu) is > length(). System halted\n", nIndex);
panic();
} }
} }
if ( _Data[nIndex].FreeIt ) if ( _Data[nIndex].FreeIt )
@ -467,8 +468,7 @@ void XObjArrayNC<TYPE>::RemoveAtIndex(int nIndex)
{ {
#if defined(__XTOOLS_CHECK_OVERFLOW__) #if defined(__XTOOLS_CHECK_OVERFLOW__)
if ( nIndex < 0 ) { if ( nIndex < 0 ) {
DebugLog(2, "XArray<TYPE>::RemoveAtIndex(int nIndex) : BUG nIndex (%d) is < 0. System halted\n", nIndex); panic("XArray<TYPE>::RemoveAtIndex(int nIndex) : BUG nIndex (%d) is < 0. System halted\n", nIndex);
panic();
} }
#endif #endif
RemoveAtIndex( (xsize)nIndex ); // Remove(xsize) will check that index is < _Len RemoveAtIndex( (xsize)nIndex ); // Remove(xsize) will check that index is < _Len
@ -487,7 +487,7 @@ void XObjArrayNC<TYPE>::Remove(const TYPE &Element)
} }
} }
#if defined(_DEBUG) #if defined(_DEBUG)
DebugLog(2, "XObjArray::Remove(TYPE &) -> Not found\n"); printf("XObjArray::Remove(TYPE &) -> Not found\n");
panic(); panic();
#endif #endif
} }

View File

@ -10,11 +10,12 @@
#if 0 #if 0
#define DBG(...) DebugLog(2, __VA_ARGS__) #define DBG(...) printf__VA_ARGS__)
#else #else
#define DBG(...) #define DBG(...)
#endif #endif
#include <Platform.h>
#include "XString.h" #include "XString.h"
#include "../../Include/Library/printf_lite.h" #include "../../Include/Library/printf_lite.h"

View File

@ -152,7 +152,6 @@ int XStringAbstract__compare(const S* src, const O* other, bool ignoreCase)
template<typename O, typename P> template<typename O, typename P>
size_t XStringAbstract__indexOf(const O** s, const P* other, size_t offsetRet, bool toLower) size_t XStringAbstract__indexOf(const O** s, const P* other, size_t offsetRet, bool toLower)
{ {
size_t i;
size_t Idx = 0; size_t Idx = 0;
char32_t s_char32; char32_t s_char32;
@ -160,7 +159,6 @@ size_t XStringAbstract__indexOf(const O** s, const P* other, size_t offsetRet, b
do do
{ {
i = 0;
const O* s2 = *s; const O* s2 = *s;
const P* other2 = other; const P* other2 = other;
do { do {
@ -359,8 +357,7 @@ public:
char32_t char32At(IntegralType i) const char32_t char32At(IntegralType i) const
{ {
if (i < 0) { if (i < 0) {
DBG_XSTRING("XStringAbstract<T>::char32At(size_t i) : i < 0. System halted\n"); panic("XStringAbstract<T>::char32At(size_t i) : i < 0. System halted\n");
panic();
} }
size_t nb = 0; size_t nb = 0;
const T *p = m_data; const T *p = m_data;
@ -571,10 +568,12 @@ public:
// } // }
//} //}
XStringAbstract subString(size_t pos, size_t count) const ThisXStringClass subString(size_t pos, size_t count) const
{ {
if ( pos > length() ) return ThisXStringClass();
if ( count > length()-pos ) count = length()-pos; if ( count > length()-pos ) count = length()-pos;
XStringAbstract ret;
ThisXStringClass ret;
const T* src = m_data; const T* src = m_data;
char32_t char32 = 1; char32_t char32 = 1;
@ -690,45 +689,45 @@ public:
// == operator // == operator
template<typename O, class OtherXStringClass> template<typename O, class OtherXStringClass>
bool operator == (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) == 0; } bool operator == (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) == 0; }
template<typename O> // template<typename O>
bool operator == (const O* s2) const { return (*this).strcmp(s2) == 0; } // bool operator == (const O* s2) const { return (*this).strcmp(s2) == 0; }
template<typename O> // template<typename O>
friend bool operator == (const O* s1, ThisXStringClass& s2) { return s2.strcmp(s1) == 0; } // friend bool operator == (const O* s1, ThisXStringClass& s2) { return s2.strcmp(s1) == 0; }
template<typename O, class OtherXStringClass> template<typename O, class OtherXStringClass>
bool operator != (const XStringAbstract<O, OtherXStringClass>& s2) const { return !(*this == s2); } bool operator != (const XStringAbstract<O, OtherXStringClass>& s2) const { return !(*this == s2); }
template<typename O> // template<typename O>
bool operator != (const O* s2) const { return !(*this == s2); } // bool operator != (const O* s2) const { return !(*this == s2); }
template<typename O> // template<typename O>
friend bool operator != (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) != 0; } // friend bool operator != (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) != 0; }
template<typename O, class OtherXStringClass> template<typename O, class OtherXStringClass>
bool operator < (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) < 0; } bool operator < (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) < 0; }
template<typename O> // template<typename O>
bool operator < (const O* s2) const { return (*this).strcmp(s2) < 0; } // bool operator < (const O* s2) const { return (*this).strcmp(s2) < 0; }
template<typename O> // template<typename O>
friend bool operator < (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) > 0; } // friend bool operator < (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) > 0; }
template<typename O, class OtherXStringClass> template<typename O, class OtherXStringClass>
bool operator > (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) > 0; } bool operator > (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) > 0; }
template<typename O> // template<typename O>
bool operator > (const O* s2) const { return (*this).strcmp(s2) > 0; } // bool operator > (const O* s2) const { return (*this).strcmp(s2) > 0; }
template<typename O> // template<typename O>
friend bool operator > (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) < 0; } // friend bool operator > (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) < 0; }
template<typename O, class OtherXStringClass> template<typename O, class OtherXStringClass>
bool operator <= (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) <= 0; } bool operator <= (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) <= 0; }
template<typename O> // template<typename O>
bool operator <= (const O* s2) const { return (*this).strcmp(s2) <= 0; } // bool operator <= (const O* s2) const { return (*this).strcmp(s2) <= 0; }
template<typename O> // template<typename O>
friend bool operator <= (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) >= 0; } // friend bool operator <= (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) >= 0; }
template<typename O, class OtherXStringClass> template<typename O, class OtherXStringClass>
bool operator >= (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) >= 0; } bool operator >= (const XStringAbstract<O, OtherXStringClass>& s2) const { return (*this).strcmp(s2.s()) >= 0; }
template<typename O> // template<typename O>
bool operator >= (const O* s2) const { return (*this).strcmp(s2) >= 0; } // bool operator >= (const O* s2) const { return (*this).strcmp(s2) >= 0; }
template<typename O> // template<typename O>
friend bool operator >= (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) <= 0; } // friend bool operator >= (const O* s1, const ThisXStringClass& s2) { return s2.strcmp(s1) <= 0; }
}; };

View File

@ -4,6 +4,7 @@
// //
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
#include "XStringArray.h" #include "XStringArray.h"

View File

@ -7,6 +7,7 @@
#if !defined(__XSTRINGWS_CPP__) #if !defined(__XSTRINGWS_CPP__)
#define __XSTRINGWS_CPP__ #define __XSTRINGWS_CPP__
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
#include "XStringWArray.h" #include "XStringWArray.h"

View File

@ -175,7 +175,7 @@ int BootOptions_tests()
{ {
#ifdef JIEF_DEBUG #ifdef JIEF_DEBUG
// DebugLog(2, "XStringW_tests -> Enter\n"); // printf("XStringW_tests -> Enter\n");
#endif #endif
{ {
@ -188,11 +188,11 @@ int BootOptions_tests()
if ( XString().takeValueFrom(LoadOptions) != "opt1 opt2 opt3"_XS ) return 1; if ( XString().takeValueFrom(LoadOptions) != "opt1 opt2 opt3"_XS ) return 1;
CHAR16* LoadOptions1 = Old1_RemoveLoadOption(LoadOptions, L"opt1"); CHAR16* LoadOptions1 = Old1_RemoveLoadOption(LoadOptions, L"opt1");
if ( XString().takeValueFrom(LoadOptions1) != "opt2 opt3"_XS ) return 1; if ( XString().takeValueFrom(LoadOptions1) != "opt2 opt3"_XS ) return 2;
CHAR16* LoadOptions2 = Old1_RemoveLoadOption(LoadOptions, L"opt2"); CHAR16* LoadOptions2 = Old1_RemoveLoadOption(LoadOptions, L"opt2");
if ( XString().takeValueFrom(LoadOptions2) != "opt1 opt3"_XS ) return 1; if ( XString().takeValueFrom(LoadOptions2) != "opt1 opt3"_XS ) return 3;
CHAR16* LoadOptions3 = Old1_RemoveLoadOption(LoadOptions, L"opt3"); CHAR16* LoadOptions3 = Old1_RemoveLoadOption(LoadOptions, L"opt3");
if ( XString().takeValueFrom(LoadOptions3) != "opt1 opt2"_XS ) return 1; if ( XString().takeValueFrom(LoadOptions3) != "opt1 opt2"_XS ) return 4;
} }
// { // {
// XString LoadOptions; // XString LoadOptions;
@ -217,17 +217,17 @@ int BootOptions_tests()
LoadOptions.AddID("opt2"_XS); LoadOptions.AddID("opt2"_XS);
LoadOptions.AddID("opt3"_XS); LoadOptions.AddID("opt3"_XS);
if ( LoadOptions.ConcatAll(" "_XS) != "opt1 opt2 opt3"_XS ) return 1; if ( LoadOptions.ConcatAll(" "_XS) != "opt1 opt2 opt3"_XS ) return 30;
XStringArray LoadOptions1 = LoadOptions; XStringArray LoadOptions1 = LoadOptions;
LoadOptions1.Remove("opt1"_XS); LoadOptions1.Remove("opt1"_XS);
if ( LoadOptions1.ConcatAll(" "_XS) != "opt2 opt3"_XS ) return 1; if ( LoadOptions1.ConcatAll(" "_XS) != "opt2 opt3"_XS ) return 31;
XStringArray LoadOptions2 = LoadOptions; XStringArray LoadOptions2 = LoadOptions;
LoadOptions2.Remove("opt2"_XS); LoadOptions2.Remove("opt2"_XS);
if ( LoadOptions2.ConcatAll(" "_XS) != "opt1 opt3"_XS ) return 1; if ( LoadOptions2.ConcatAll(" "_XS) != "opt1 opt3"_XS ) return 32;
XStringArray LoadOptions3 = LoadOptions; XStringArray LoadOptions3 = LoadOptions;
LoadOptions3.Remove("opt3"_XS); LoadOptions3.Remove("opt3"_XS);
if ( LoadOptions3.ConcatAll(" "_XS) != "opt1 opt2"_XS ) return 1; if ( LoadOptions3.ConcatAll(" "_XS) != "opt1 opt2"_XS ) return 33;
} }
return 0; return 0;

View File

@ -1,6 +1,6 @@
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
#include "../cpp_foundation/XArray.h" #include "../cpp_foundation/XArray.h"
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
int XArray_tests() int XArray_tests()
{ {

View File

@ -1,6 +1,6 @@
#include "../cpp_foundation/XObjArray.h"
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile #include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
#include "../cpp_foundation/XObjArray.h"
class TestObjInt class TestObjInt
{ {

View File

@ -5,7 +5,7 @@ int XStringWArray_tests()
{ {
#ifdef JIEF_DEBUG #ifdef JIEF_DEBUG
// DebugLog(2, "XStringWArray_tests -> Enter\n"); // printf("XStringWArray_tests -> Enter\n");
#endif #endif
XStringWArray array1; XStringWArray array1;

View File

@ -114,8 +114,9 @@ public:
~SimpleString() { delete data; } ~SimpleString() { delete data; }
}; };
SimpleString sprintf(const char* format, ...) __attribute__((__format__(__printf__, 1, 2))); /* ssprintf = SimpleStringprintf */
SimpleString sprintf(const char* format, ...) SimpleString ssprintf(const char* format, ...) __attribute__((__format__(__printf__, 1, 2)));
SimpleString ssprintf(const char* format, ...)
{ {
SimpleString ss; SimpleString ss;
va_list va; va_list va;
@ -447,19 +448,19 @@ template<class XStringClass>
SimpleString testDefaultCtor_() SimpleString testDefaultCtor_()
{ {
XStringClass xstr; XStringClass xstr;
TEST_TITLE(displayOnlyFailed, sprintf("Test default ctor of %s", XStringClassInfo<XStringClass>::xStringClassName)); TEST_TITLE(displayOnlyFailed, ssprintf("Test default ctor of %s", XStringClassInfo<XStringClass>::xStringClassName));
CHECK_RESULT(xstr.length() == 0, CHECK_RESULT(xstr.length() == 0,
sprintf("xstr.length() == 0"), ssprintf("xstr.length() == 0"),
sprintf("xstr.length() != 0") ssprintf("xstr.length() != 0")
); );
CHECK_RESULT(xstr.sizeInBytes() == 0, CHECK_RESULT(xstr.sizeInBytes() == 0,
sprintf("xstr.sizeInBytes() == 0"), ssprintf("xstr.sizeInBytes() == 0"),
sprintf("xstr.sizeInBytes() != 0") ssprintf("xstr.sizeInBytes() != 0")
); );
CHECK_RESULT(*xstr.s() == 0, CHECK_RESULT(*xstr.s() == 0,
sprintf("*xstr.s() == 0"), ssprintf("*xstr.s() == 0"),
sprintf("*xstr.s() != 0") ssprintf("*xstr.s() != 0")
); );
return SimpleString(); return SimpleString();
} }
@ -474,19 +475,19 @@ template<class XStringClass, class TestStringSrc, class TestStringExpectedResult
SimpleString testTakeValueFrom_(const TestStringSrc& src, const TestStringExpectedResult& expectedResult) SimpleString testTakeValueFrom_(const TestStringSrc& src, const TestStringExpectedResult& expectedResult)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::testTakeValueFrom(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::testTakeValueFrom(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str()));
XStringClass xstr; XStringClass xstr;
xstr.takeValueFrom(src.cha); xstr.takeValueFrom(src.cha);
size_t expectedSize = expectedResult.size*sizeof(expectedResult.cha[0]); size_t expectedSize = expectedResult.size*sizeof(expectedResult.cha[0]);
CHECK_RESULT(xstr.sizeInBytes() == expectedSize, CHECK_RESULT(xstr.sizeInBytes() == expectedSize,
sprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize), ssprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize),
sprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize) ssprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize)
); );
CHECK_RESULT(memcmp(xstr.s(), expectedResult.cha, expectedSize) == 0, CHECK_RESULT(memcmp(xstr.s(), expectedResult.cha, expectedSize) == 0,
sprintf("memcmp(xstr.s(), expectedResult.cha, expectedSize) == 0"), ssprintf("memcmp(xstr.s(), expectedResult.cha, expectedSize) == 0"),
sprintf("memcmp(xstr.s(), expectedResult.cha, expectedSize) != 0") ssprintf("memcmp(xstr.s(), expectedResult.cha, expectedSize) != 0")
); );
// TODO test ctor with litteral // TODO test ctor with litteral
@ -509,7 +510,7 @@ SimpleString testTakeValueFromXString_(const TestStringSrc& src, const TestStrin
{ {
// TODO test ctor with litteral // TODO test ctor with litteral
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::testTakeValueFrom(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::testTakeValueFrom(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str()));
typename XStringClassInfo<TestStringSrc>::xs_t srcXString; typename XStringClassInfo<TestStringSrc>::xs_t srcXString;
srcXString.takeValueFrom(src.cha); srcXString.takeValueFrom(src.cha);
@ -519,23 +520,23 @@ SimpleString testTakeValueFromXString_(const TestStringSrc& src, const TestStrin
size_t expectedSize = expectedResult.size*sizeof(expectedResult.cha[0]); size_t expectedSize = expectedResult.size*sizeof(expectedResult.cha[0]);
CHECK_RESULT(xstr.sizeInBytes() == expectedSize, CHECK_RESULT(xstr.sizeInBytes() == expectedSize,
sprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize), ssprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize),
sprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize) ssprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize)
); );
CHECK_RESULT(memcmp(xstr.s(), expectedResult.cha, expectedSize+sizeof(expectedResult.cha[0])) == 0, CHECK_RESULT(memcmp(xstr.s(), expectedResult.cha, expectedSize+sizeof(expectedResult.cha[0])) == 0,
sprintf("memcmp(xstr.s(), expectedResult.cha, expectedResult.size) == 0"), ssprintf("memcmp(xstr.s(), expectedResult.cha, expectedResult.size) == 0"),
sprintf("memcmp(xstr.s(), expectedResult.cha, expectedResult.size) != 0") ssprintf("memcmp(xstr.s(), expectedResult.cha, expectedResult.size) != 0")
); );
{ {
XStringClass xstr2(srcXString); XStringClass xstr2(srcXString);
// We don't use operator == to check xstr == xstr2 because operator == is not tested yet. // We don't use operator == to check xstr == xstr2 because operator == is not tested yet.
CHECK_RESULT(xstr2.sizeInBytes() == xstr.sizeInBytes(), CHECK_RESULT(xstr2.sizeInBytes() == xstr.sizeInBytes(),
sprintf("xstr2.sizeInBytes() == xstr.sizeInBytes() (%zu)", xstr.sizeInBytes()), ssprintf("xstr2.sizeInBytes() == xstr.sizeInBytes() (%zu)", xstr.sizeInBytes()),
sprintf("xstr2.sizeInBytes() != xstr.sizeInBytes() (%zu!=%zu)", xstr2.sizeInBytes(), xstr.sizeInBytes()) ssprintf("xstr2.sizeInBytes() != xstr.sizeInBytes() (%zu!=%zu)", xstr2.sizeInBytes(), xstr.sizeInBytes())
); );
CHECK_RESULT(memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()+sizeof(xstr.s()[0])) == 0, CHECK_RESULT(memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()+sizeof(xstr.s()[0])) == 0,
sprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) == 0"), ssprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) == 0"),
sprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) != 0") ssprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) != 0")
); );
} }
{ {
@ -543,12 +544,12 @@ SimpleString testTakeValueFromXString_(const TestStringSrc& src, const TestStrin
xstr2 = srcXString; xstr2 = srcXString;
// We don't use operator == to check xstr == xstr2 because operator == is not tested yet. // We don't use operator == to check xstr == xstr2 because operator == is not tested yet.
CHECK_RESULT(xstr2.sizeInBytes() == xstr.sizeInBytes(), CHECK_RESULT(xstr2.sizeInBytes() == xstr.sizeInBytes(),
sprintf("xstr2.sizeInBytes() == xstr.sizeInBytes() (%zu)", xstr.sizeInBytes()), ssprintf("xstr2.sizeInBytes() == xstr.sizeInBytes() (%zu)", xstr.sizeInBytes()),
sprintf("xstr2.sizeInBytes() != xstr.sizeInBytes() (%zu!=%zu)", xstr2.sizeInBytes(), xstr.sizeInBytes()) ssprintf("xstr2.sizeInBytes() != xstr.sizeInBytes() (%zu!=%zu)", xstr2.sizeInBytes(), xstr.sizeInBytes())
); );
CHECK_RESULT(memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()+sizeof(xstr.s()[0])) == 0, CHECK_RESULT(memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()+sizeof(xstr.s()[0])) == 0,
sprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) == 0"), ssprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) == 0"),
sprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) != 0") ssprintf("memcmp(xstr2.s(), xstr.s(), xstr.sizeInBytes()) != 0")
); );
} }
return SimpleString(); return SimpleString();
@ -566,29 +567,29 @@ SimpleString testTakeValueFromXString_(const TestStringSrc& src, const TestStrin
template<class XStringClass> template<class XStringClass>
SimpleString testEmpty_() SimpleString testEmpty_()
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test isEmpty(),notEmpty(),setEmpty() of %s", XStringClassInfo<XStringClass>::xStringClassName)); TEST_TITLE(displayOnlyFailed, ssprintf("Test isEmpty(),notEmpty(),setEmpty() of %s", XStringClassInfo<XStringClass>::xStringClassName));
XStringClass str; XStringClass str;
str.takeValueFrom("aa"); str.takeValueFrom("aa");
CHECK_RESULT(str.isEmpty() == false, CHECK_RESULT(str.isEmpty() == false,
sprintf("str.isEmpty() == false"), ssprintf("str.isEmpty() == false"),
sprintf("str.isEmpty() != true") ssprintf("str.isEmpty() != true")
); );
CHECK_RESULT(str.notEmpty() == true, CHECK_RESULT(str.notEmpty() == true,
sprintf("str.notEmpty() == true"), ssprintf("str.notEmpty() == true"),
sprintf("str.notEmpty() != false") ssprintf("str.notEmpty() != false")
); );
str.setEmpty(); str.setEmpty();
CHECK_RESULT(str.isEmpty() == true, CHECK_RESULT(str.isEmpty() == true,
sprintf("str.isEmpty() == true"), ssprintf("str.isEmpty() == true"),
sprintf("str.isEmpty() != false") ssprintf("str.isEmpty() != false")
); );
CHECK_RESULT(str.notEmpty() == false, CHECK_RESULT(str.notEmpty() == false,
sprintf("str.notEmpty() == false"), ssprintf("str.notEmpty() == false"),
sprintf("str.notEmpty() != true") ssprintf("str.notEmpty() != true")
); );
return SimpleString(); return SimpleString();
@ -603,15 +604,15 @@ SimpleString testEmpty_()
template<class XStringClass, typename integralType, class InitialValue> template<class XStringClass, typename integralType, class InitialValue>
SimpleString testchar32At_(const InitialValue& initialValue) SimpleString testchar32At_(const InitialValue& initialValue)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::char32At_u()", XStringClassInfo<XStringClass>::xStringClassName)); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::char32At_u()", XStringClassInfo<XStringClass>::xStringClassName));
XStringClass xstr; XStringClass xstr;
xstr.takeValueFrom(initialValue.cha); xstr.takeValueFrom(initialValue.cha);
for ( integralType i=0 ; (typename make_unsigned<integralType>::type)i < xstr.length() ; i++ ) for ( integralType i=0 ; (typename make_unsigned<integralType>::type)i < xstr.length() ; i++ )
{ {
CHECK_RESULT(xstr[i] == initialValue.utf32[i], CHECK_RESULT(xstr[i] == initialValue.utf32[i],
sprintf("xstr[i] == dst.cha[i] (%d)", initialValue.utf32[i]), ssprintf("xstr[i] == dst.cha[i] (%d)", initialValue.utf32[i]),
sprintf("xstr[i] != dst.cha[i] (%d!=%d)", xstr[i], initialValue.utf32[i]) ssprintf("xstr[i] != dst.cha[i] (%d!=%d)", xstr[i], initialValue.utf32[i])
); );
} }
return SimpleString(); return SimpleString();
@ -628,15 +629,15 @@ SimpleString testchar32At_(const InitialValue& initialValue)
template<class XStringClass, typename integralType> template<class XStringClass, typename integralType>
SimpleString testdataSized_() SimpleString testdataSized_()
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::dataSized()", XStringClassInfo<XStringClass>::xStringClassName)); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::dataSized()", XStringClassInfo<XStringClass>::xStringClassName));
XStringClass xstr; XStringClass xstr;
integralType i = 10; integralType i = 10;
typename XStringClassInfo<XStringClass>::ch_t* s = xstr.dataSized(i); typename XStringClassInfo<XStringClass>::ch_t* s = xstr.dataSized(i);
(void)s; (void)s;
CHECK_RESULT(xstr.allocatedSize() >= 10, CHECK_RESULT(xstr.allocatedSize() >= 10,
sprintf("xstr[i] == dst.cha[i] (%d)", 10), ssprintf("xstr[i] == dst.cha[i] (%d)", 10),
sprintf("xstr[i] != dst.cha[i] (%zu!=%d)", xstr.allocatedSize(), 10) ssprintf("xstr[i] != dst.cha[i] (%zu!=%d)", xstr.allocatedSize(), 10)
); );
return SimpleString(); return SimpleString();
} }
@ -652,7 +653,7 @@ SimpleString testdataSized_()
template<class XStringClass, class TestStringSameAsClass, class TestStringSrc> template<class XStringClass, class TestStringSameAsClass, class TestStringSrc>
SimpleString teststrcpy_(const TestStringSameAsClass& encodedSameAsClass, const TestStringSrc& src) SimpleString teststrcpy_(const TestStringSameAsClass& encodedSameAsClass, const TestStringSrc& src)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::strcpy(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::strcpy(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str()));
XStringClass xstr; XStringClass xstr;
xstr.takeValueFrom("foobar"); xstr.takeValueFrom("foobar");
@ -660,12 +661,12 @@ SimpleString teststrcpy_(const TestStringSameAsClass& encodedSameAsClass, const
size_t expectedSize = encodedSameAsClass.size*sizeof(encodedSameAsClass.cha[0]); size_t expectedSize = encodedSameAsClass.size*sizeof(encodedSameAsClass.cha[0]);
CHECK_RESULT(xstr.sizeInBytes() == expectedSize, CHECK_RESULT(xstr.sizeInBytes() == expectedSize,
sprintf("xstr.sizeInBytes() == dst.size (%zu)", expectedSize), ssprintf("xstr.sizeInBytes() == dst.size (%zu)", expectedSize),
sprintf("xstr.sizeInBytes() != dst.size (%zu!=%zu)", xstr.sizeInBytes(), expectedSize) ssprintf("xstr.sizeInBytes() != dst.size (%zu!=%zu)", xstr.sizeInBytes(), expectedSize)
); );
CHECK_RESULT(memcmp(xstr.s(), encodedSameAsClass.cha, expectedSize+sizeof(encodedSameAsClass.cha[0])) == 0, CHECK_RESULT(memcmp(xstr.s(), encodedSameAsClass.cha, expectedSize+sizeof(encodedSameAsClass.cha[0])) == 0,
sprintf("memcmp(xstr.s(), dst.cha, dst.size) == 0"), ssprintf("memcmp(xstr.s(), dst.cha, dst.size) == 0"),
sprintf("memcmp(xstr.s(), dst.cha, dst.size) != 0") ssprintf("memcmp(xstr.s(), dst.cha, dst.size) != 0")
); );
return SimpleString(); return SimpleString();
} }
@ -682,7 +683,7 @@ SimpleString teststrcpy_(const TestStringSameAsClass& encodedSameAsClass, const
template<class XStringClass, class TestStringSameAsClass, class TestStringSrc> template<class XStringClass, class TestStringSameAsClass, class TestStringSrc>
SimpleString teststrncpy_(const TestStringSameAsClass& encodedSameAsClass, const TestStringSrc& src) SimpleString teststrncpy_(const TestStringSameAsClass& encodedSameAsClass, const TestStringSrc& src)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::strncpy(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::strncpy(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<TestStringSrc>::prefix, SimpleString(src.cha).c_str()));
for ( size_t i = 0 ; i < length_of_utf_string(src.cha)+5 ; i++ ) for ( size_t i = 0 ; i < length_of_utf_string(src.cha)+5 ; i++ )
{ {
@ -691,12 +692,12 @@ SimpleString teststrncpy_(const TestStringSameAsClass& encodedSameAsClass, const
xstr.strncpy(src.cha, i); xstr.strncpy(src.cha, i);
CHECK_RESULT((length_of_utf_string(encodedSameAsClass.cha) >= i && xstr.length() == i) || (xstr.length() == length_of_utf_string(encodedSameAsClass.cha)), CHECK_RESULT((length_of_utf_string(encodedSameAsClass.cha) >= i && xstr.length() == i) || (xstr.length() == length_of_utf_string(encodedSameAsClass.cha)),
sprintf("xstr.sizeInBytes() == dst.size (%zu)", xstr.sizeInBytes()), ssprintf("xstr.sizeInBytes() == dst.size (%zu)", xstr.sizeInBytes()),
sprintf("xstr.sizeInBytes() != dst.size (%zu!=%zu)", xstr.sizeInBytes(), encodedSameAsClass.size) ssprintf("xstr.sizeInBytes() != dst.size (%zu!=%zu)", xstr.sizeInBytes(), encodedSameAsClass.size)
); );
CHECK_RESULT(memcmp(xstr.s(), encodedSameAsClass.cha, xstr.sizeInBytes()) == 0, CHECK_RESULT(memcmp(xstr.s(), encodedSameAsClass.cha, xstr.sizeInBytes()) == 0,
sprintf("memcmp(xstr.s(), dst.cha, dst.size) == 0"), ssprintf("memcmp(xstr.s(), dst.cha, dst.size) == 0"),
sprintf("memcmp(xstr.s(), dst.cha, dst.size) != 0") ssprintf("memcmp(xstr.s(), dst.cha, dst.size) != 0")
); );
} }
return SimpleString(); return SimpleString();
@ -714,28 +715,28 @@ template<class XStringClass, typename ch_t>
static void teststrcatCheckResult(size_t expectedLength, size_t expectedSize, ch_t* expectedString, XStringClass xstr) static void teststrcatCheckResult(size_t expectedLength, size_t expectedSize, ch_t* expectedString, XStringClass xstr)
{ {
CHECK_RESULT(xstr.length() == expectedLength, CHECK_RESULT(xstr.length() == expectedLength,
sprintf("xstr.length() == expectedLength (%zu)", expectedLength), ssprintf("xstr.length() == expectedLength (%zu)", expectedLength),
sprintf("xstr.length() != expectedLength (%zu!=%zu)", xstr.length(), expectedLength) ssprintf("xstr.length() != expectedLength (%zu!=%zu)", xstr.length(), expectedLength)
); );
//expectedLength = length_of_utf_string(initialValue.cha) + length_of_utf_string(valueToCat.cha); //expectedLength = length_of_utf_string(initialValue.cha) + length_of_utf_string(valueToCat.cha);
//xstr.takeValueFrom(initialValue.cha); //xstr.takeValueFrom(initialValue.cha);
//xstr.strcat(valueToCat.cha); //xstr.strcat(valueToCat.cha);
CHECK_RESULT(xstr.sizeInBytes() == expectedSize, CHECK_RESULT(xstr.sizeInBytes() == expectedSize,
sprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize), ssprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize),
sprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize) ssprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize)
); );
CHECK_RESULT(memcmp(xstr.s(), expectedString, expectedSize+sizeof(ch_t)) == 0, CHECK_RESULT(memcmp(xstr.s(), expectedString, expectedSize+sizeof(ch_t)) == 0,
sprintf("memcmp(xstr.s(), dst.cha, dst.size) == 0"), ssprintf("memcmp(xstr.s(), dst.cha, dst.size) == 0"),
sprintf("memcmp(xstr.s(), dst.cha, dst.size) != 0") ssprintf("memcmp(xstr.s(), dst.cha, dst.size) != 0")
); );
} }
template<class XStringClass, class InitialValue, class ValueToCat> template<class XStringClass, class InitialValue, class ValueToCat>
SimpleString teststrcat_(const InitialValue& initialValue, const ValueToCat& valueToCat) SimpleString teststrcat_(const InitialValue& initialValue, const ValueToCat& valueToCat)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::strcpy(%s\"%s\") strcat(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str(), XStringClassInfo<ValueToCat>::prefix, SimpleString(valueToCat.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::strcpy(%s\"%s\") strcat(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str(), XStringClassInfo<ValueToCat>::prefix, SimpleString(valueToCat.cha).c_str()));
typedef typename XStringClassInfo<XStringClass>::ch_t ch_t; typedef typename XStringClassInfo<XStringClass>::ch_t ch_t;
ch_t c; // dummy for call utf function ch_t c; // dummy for call utf function
@ -815,7 +816,7 @@ SimpleString teststrcat_(const InitialValue& initialValue, const ValueToCat& val
template<class XStringClass, class InitialValue, class ValueToCat> template<class XStringClass, class InitialValue, class ValueToCat>
SimpleString teststrncat_(const InitialValue& initialValue, const ValueToCat& valueToCat) SimpleString teststrncat_(const InitialValue& initialValue, const ValueToCat& valueToCat)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::strcpy(%s\"%s\") strncat(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str(), XStringClassInfo<ValueToCat>::prefix, SimpleString(valueToCat.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::strcpy(%s\"%s\") strncat(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str(), XStringClassInfo<ValueToCat>::prefix, SimpleString(valueToCat.cha).c_str()));
for ( size_t i = 0 ; i < valueToCat.utf32_length+5 ; i++ ) for ( size_t i = 0 ; i < valueToCat.utf32_length+5 ; i++ )
{ {
@ -829,8 +830,8 @@ SimpleString teststrncat_(const InitialValue& initialValue, const ValueToCat& va
size_t expectedLength = length_of_utf_string(initialValue.cha) + min(i, valueToCat.utf32_length); size_t expectedLength = length_of_utf_string(initialValue.cha) + min(i, valueToCat.utf32_length);
CHECK_RESULT(xstr.length() == expectedLength, CHECK_RESULT(xstr.length() == expectedLength,
sprintf("xstr.length() == expectedLength (%zu)", expectedLength), ssprintf("xstr.length() == expectedLength (%zu)", expectedLength),
sprintf("xstr.length() != expectedLength (%zu!=%zu)", xstr.length(), expectedLength) ssprintf("xstr.length() != expectedLength (%zu!=%zu)", xstr.length(), expectedLength)
); );
//expectedLength = length_of_utf_string(initialValue.cha) + min(i, valueToCat.utf32_length); //expectedLength = length_of_utf_string(initialValue.cha) + min(i, valueToCat.utf32_length);
//xstr.takeValueFrom(initialValue.cha); //xstr.takeValueFrom(initialValue.cha);
@ -838,16 +839,16 @@ SimpleString teststrncat_(const InitialValue& initialValue, const ValueToCat& va
size_t expectedSize = (utf_size_of_utf_string(&c, initialValue.cha) + utf_size_of_utf_string_len(&c, valueToCat.cha, i)); size_t expectedSize = (utf_size_of_utf_string(&c, initialValue.cha) + utf_size_of_utf_string_len(&c, valueToCat.cha, i));
CHECK_RESULT(xstr.sizeInBytes() == expectedSize * sizeof(ch_t), CHECK_RESULT(xstr.sizeInBytes() == expectedSize * sizeof(ch_t),
sprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize * sizeof(ch_t)), ssprintf("xstr.sizeInBytes() == expectedSize (%zu)", expectedSize * sizeof(ch_t)),
sprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize * sizeof(ch_t)) ssprintf("xstr.sizeInBytes() != expectedSize (%zu!=%zu)", xstr.sizeInBytes(), expectedSize * sizeof(ch_t))
); );
ch_t* expectedString = (ch_t*)malloc((expectedSize+1)*sizeof(ch_t)); ch_t* expectedString = (ch_t*)malloc((expectedSize+1)*sizeof(ch_t));
utf_string_from_utf_string(expectedString, expectedSize + 1, initialValue.cha); utf_string_from_utf_string(expectedString, expectedSize + 1, initialValue.cha);
utf_string_from_utf_string_len(expectedString + utf_size_of_utf_string(&c, initialValue.cha), expectedSize + 1 - size_of_utf_string(expectedString), valueToCat.cha, i); utf_string_from_utf_string_len(expectedString + utf_size_of_utf_string(&c, initialValue.cha), expectedSize + 1 - size_of_utf_string(expectedString), valueToCat.cha, i);
CHECK_RESULT(memcmp(xstr.s(), expectedString, expectedSize+sizeof(ch_t)) == 0, CHECK_RESULT(memcmp(xstr.s(), expectedString, expectedSize+sizeof(ch_t)) == 0,
sprintf("memcmp(xstr.s(), expectedString, dst.size) == 0"), ssprintf("memcmp(xstr.s(), expectedString, dst.size) == 0"),
sprintf("memcmp(xstr.s(), expectedString, dst.size) != 0") ssprintf("memcmp(xstr.s(), expectedString, dst.size) != 0")
); );
//utf_string_from_utf_string(expectedString, expectedSize*sizeof(XStringCharClass) + 1, initialValue.cha); //utf_string_from_utf_string(expectedString, expectedSize*sizeof(XStringCharClass) + 1, initialValue.cha);
//utf_string_from_utf_string_len(expectedString + utf_size_of_utf_string(&c, initialValue.cha), expectedSize*sizeof(XStringCharClass) + 1 - size_of_utf_string(expectedString), valueToCat.cha, i); //utf_string_from_utf_string_len(expectedString + utf_size_of_utf_string(&c, initialValue.cha), expectedSize*sizeof(XStringCharClass) + 1 - size_of_utf_string(expectedString), valueToCat.cha, i);
@ -873,7 +874,7 @@ SimpleString teststrncat_(const InitialValue& initialValue, const ValueToCat& va
template<class XStringClass, class InitialValue> template<class XStringClass, class InitialValue>
SimpleString testSubString_(const InitialValue& initialValue) SimpleString testSubString_(const InitialValue& initialValue)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::subString(%s\"%s\"", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::subString(%s\"%s\"", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str()));
typedef typename XStringClassInfo<XStringClass>::ch_t ch_t; typedef typename XStringClassInfo<XStringClass>::ch_t ch_t;
ch_t c; // dummy for call utf function ch_t c; // dummy for call utf function
@ -897,12 +898,13 @@ SimpleString testSubString_(const InitialValue& initialValue)
XStringClass subStr = str.subString(pos, count); XStringClass subStr = str.subString(pos, count);
CHECK_RESULT(subStr.length() == expectedLength, CHECK_RESULT(subStr.length() == expectedLength,
sprintf("subStr.length() == expectedLength (%zu)", expectedLength), ssprintf("subStr.length() == expectedLength (%zu)", expectedLength),
sprintf("subStr.length() != expectedLength (%zu!=%zu)", subStr.length(), expectedLength) ssprintf("subStr.length() != expectedLength (%zu!=%zu)", subStr.length(), expectedLength)
); );
subStr = str.subString(pos, count);
CHECK_RESULT(memcmp(subStr.s(), initialValue.cha + offset, expectedSize) == 0, CHECK_RESULT(memcmp(subStr.s(), initialValue.cha + offset, expectedSize) == 0,
sprintf("memcmp == 0"), ssprintf("memcmp == 0"),
sprintf("memcmp != 0)") ssprintf("memcmp != 0)")
); );
} }
} }
@ -942,13 +944,14 @@ CharType* incrementChar(const CharType* s, size_t pos, int increment)
s = get_char32_from_string(s, &char32); s = get_char32_from_string(s, &char32);
n++; n++;
} }
*d = 0;
return buf; return buf;
} }
template<class XStringClass, class InitialValue> template<class XStringClass, class InitialValue>
SimpleString testCompare_(const InitialValue& initialValue) SimpleString testCompare_(const InitialValue& initialValue)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::strcmp(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str())); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::strcmp(%s\"%s\")", XStringClassInfo<XStringClass>::xStringClassName, XStringClassInfo<InitialValue>::prefix, SimpleString(initialValue.cha).c_str()));
// typedef typename XStringClassInfo<XStringClass>::ch_t xs_ch_t; // typedef typename XStringClassInfo<XStringClass>::ch_t xs_ch_t;
// ch_t c; // dummy for call utf function // ch_t c; // dummy for call utf function
@ -960,34 +963,34 @@ SimpleString testCompare_(const InitialValue& initialValue)
xstr2.takeValueFrom(initialValue.cha); xstr2.takeValueFrom(initialValue.cha);
CHECK_RESULT(xstr.strcmp(xstr2.s()) == 0, CHECK_RESULT(xstr.strcmp(xstr2.s()) == 0,
sprintf("subStr.length() == 0"), ssprintf("subStr.length() == 0"),
sprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s())) ssprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
); );
CHECK_RESULT(xstr == xstr2.s(), // CHECK_RESULT(xstr == xstr2.s(),
sprintf("subStr.length() == 0"), // ssprintf("subStr.length() == 0"),
sprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s())) // ssprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
); // );
CHECK_RESULT(xstr == xstr2, CHECK_RESULT(xstr == xstr2,
sprintf("subStr.length() == 0"), ssprintf("subStr.length() == 0"),
sprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s())) ssprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
);
CHECK_RESULT(!(xstr != xstr2.s()),
sprintf("subStr.length() == 0"),
sprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
); );
// CHECK_RESULT(!(xstr != xstr2.s()),
// ssprintf("subStr.length() == 0"),
// ssprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
// );
CHECK_RESULT(!(xstr != xstr2), CHECK_RESULT(!(xstr != xstr2),
sprintf("subStr.length() == 0"), ssprintf("subStr.length() == 0"),
sprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s())) ssprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
);
CHECK_RESULT(!(xstr != xstr2.s()),
sprintf("subStr.length() == 0"),
sprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
); );
// CHECK_RESULT(!(xstr != xstr2.s()),
// ssprintf("subStr.length() == 0"),
// ssprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
// );
CHECK_RESULT(!(xstr != xstr2), CHECK_RESULT(!(xstr != xstr2),
sprintf("subStr.length() == 0"), ssprintf("subStr.length() == 0"),
sprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s())) ssprintf("subStr.length() != 0 (%d)", xstr.strcmp(xstr2.s()))
); );
//res = xstr.strcmp(xstr2.s()); //res = xstr.strcmp(xstr2.s());
@ -997,109 +1000,111 @@ SimpleString testCompare_(const InitialValue& initialValue)
{ {
const ch_t* s = incrementChar(initialValue.cha, pos, 1); const ch_t* s = incrementChar(initialValue.cha, pos, 1);
CHECK_RESULT(xstr.strcmp(s) == -1, CHECK_RESULT(xstr.strcmp(s) == -1,
sprintf("xstr.strcmp(s) == -1"), ssprintf("xstr.strcmp(s) == -1"),
sprintf("xstr.strcmp(s) != -1 (%d)", xstr.strcmp(s)) ssprintf("xstr.strcmp(s) != -1 (%d)", xstr.strcmp(s))
); );
/* operator comparison with native type */ /* operator comparison with native type */
CHECK_RESULT(!(xstr == s), // CHECK_RESULT(!(xstr == s),
sprintf("!(xstr == s)"), // ssprintf("!(xstr == s)"),
sprintf("!!(xstr == s)") // ssprintf("!!(xstr == s)")
); // );
CHECK_RESULT(!(s == xstr), // CHECK_RESULT(!(s == xstr),
sprintf("!(s == xstr)"), // ssprintf("!(s == xstr)"),
sprintf("!!(s == xstr)") // ssprintf("!!(s == xstr)")
); // );
CHECK_RESULT(xstr != s, // CHECK_RESULT(xstr != s,
sprintf("xstr != s"), // ssprintf("xstr != s"),
sprintf("!xstr != s") // ssprintf("!xstr != s")
); // );
CHECK_RESULT(s != xstr, // CHECK_RESULT(s != xstr,
sprintf("s != xstr"), // ssprintf("s != xstr"),
sprintf("!s != xstr") // ssprintf("!s != xstr")
); // );
CHECK_RESULT(xstr < s, // CHECK_RESULT(xstr < s,
sprintf("xstr < s"), // ssprintf("xstr < s"),
sprintf("!xstr < s") // ssprintf("!xstr < s")
); // );
CHECK_RESULT(s > xstr, // CHECK_RESULT(s > xstr,
sprintf("s > xstr"), // ssprintf("s > xstr"),
sprintf("!s > xstr") // ssprintf("!s > xstr")
); // );
CHECK_RESULT(xstr <= s, // CHECK_RESULT(xstr <= s,
sprintf("xstr <= s"), // ssprintf("xstr <= s"),
sprintf("!xstr <= s") // ssprintf("!xstr <= s")
); // );
CHECK_RESULT(s >= xstr, // CHECK_RESULT(s >= xstr,
sprintf("s >= xstr"), // ssprintf("s >= xstr"),
sprintf("!s >= xstr") // ssprintf("!s >= xstr")
); // );
CHECK_RESULT(!(xstr > s), // CHECK_RESULT(!(xstr > s),
sprintf("!(xstr > s)"), // ssprintf("!(xstr > s)"),
sprintf("!!(xstr < s)") // ssprintf("!!(xstr < s)")
); // );
CHECK_RESULT(!(s < xstr), // CHECK_RESULT(!(s < xstr),
sprintf("!(s < xstr)"), // ssprintf("!(s < xstr)"),
sprintf("!!(s < xstr)") // ssprintf("!!(s < xstr)")
); // );
CHECK_RESULT(!(xstr >= s), // CHECK_RESULT(!(xstr >= s),
sprintf("!(xstr >= s)"), // ssprintf("!(xstr >= s)"),
sprintf("!!(xstr >= s)") // ssprintf("!!(xstr >= s)")
); // );
CHECK_RESULT(!(s <= xstr), // CHECK_RESULT(!(s <= xstr),
sprintf("!(s <= xstr)"), // ssprintf("!(s <= xstr)"),
sprintf("!!(s <= xstr)") // ssprintf("!!(s <= xstr)")
); // );
/* operator comparison with other XString */ /* operator comparison with other XString */
xstr2.takeValueFrom(s); xstr2.takeValueFrom(s);
CHECK_RESULT(!(xstr == xstr2), CHECK_RESULT(!(xstr == xstr2),
sprintf("!(xstr == xstr2)"), ssprintf("!(xstr == xstr2)"),
sprintf("!!(xstr == xstr2)") ssprintf("!!(xstr == xstr2)")
); );
CHECK_RESULT(!(xstr2 == xstr), CHECK_RESULT(!(xstr2 == xstr),
sprintf("!(xstr2 == xstr)"), ssprintf("!(xstr2 == xstr)"),
sprintf("!!(xstr2 == xstr)") ssprintf("!!(xstr2 == xstr)")
); );
CHECK_RESULT(xstr != xstr2, CHECK_RESULT(xstr != xstr2,
sprintf("xstr != xstr2"), ssprintf("xstr != xstr2"),
sprintf("!xstr != xstr2") ssprintf("!xstr != xstr2")
); );
CHECK_RESULT(xstr2 != xstr, CHECK_RESULT(xstr2 != xstr,
sprintf("xstr2 != xstr"), ssprintf("xstr2 != xstr"),
sprintf("!xstr2 != xstr") ssprintf("!xstr2 != xstr")
); );
CHECK_RESULT(xstr < xstr2, CHECK_RESULT(xstr < xstr2,
sprintf("xstr < xstr2"), ssprintf("xstr < xstr2"),
sprintf("!xstr < xstr2") ssprintf("!xstr < xstr2")
); );
CHECK_RESULT(xstr2 > xstr, CHECK_RESULT(xstr2 > xstr,
sprintf("xstr2 > xstr"), ssprintf("xstr2 > xstr"),
sprintf("!xstr2 > xstr") ssprintf("!xstr2 > xstr")
); );
CHECK_RESULT(xstr <= xstr2, CHECK_RESULT(xstr <= xstr2,
sprintf("xstr <= xstr2"), ssprintf("xstr <= xstr2"),
sprintf("!xstr <= xstr2") ssprintf("!xstr <= xstr2")
); );
CHECK_RESULT(xstr2 >= xstr, CHECK_RESULT(xstr2 >= xstr,
sprintf("xstr2 >= xstr"), ssprintf("xstr2 >= xstr"),
sprintf("!xstr2 >= xstr") ssprintf("!xstr2 >= xstr")
); );
CHECK_RESULT(!(xstr > xstr2), CHECK_RESULT(!(xstr > xstr2),
sprintf("!(xstr > xstr2)"), ssprintf("!(xstr > xstr2)"),
sprintf("!!(xstr < xstr2)") ssprintf("!!(xstr < xstr2)")
); );
CHECK_RESULT(!(xstr2 < xstr), CHECK_RESULT(!(xstr2 < xstr),
sprintf("!(xstr2 < xstr)"), ssprintf("!(xstr2 < xstr)"),
sprintf("!!(xstr2 < xstr)") ssprintf("!!(xstr2 < xstr)")
); );
CHECK_RESULT(!(xstr >= xstr2), CHECK_RESULT(!(xstr >= xstr2),
sprintf("!(xstr >= xstr2)"), ssprintf("!(xstr >= xstr2)"),
sprintf("!!(xstr >= xstr2)") ssprintf("!!(xstr >= xstr2)")
); );
CHECK_RESULT(!(xstr2 <= xstr), CHECK_RESULT(!(xstr2 <= xstr),
sprintf("!(xstr2 <= xstr)"), ssprintf("!(xstr2 <= xstr)"),
sprintf("!!(xstr2 <= xstr)") ssprintf("!!(xstr2 <= xstr)")
); );
free((void*)s);
} }
@ -1107,8 +1112,8 @@ SimpleString testCompare_(const InitialValue& initialValue)
{ {
const ch_t* s = incrementChar(initialValue.cha, pos, -1); const ch_t* s = incrementChar(initialValue.cha, pos, -1);
CHECK_RESULT(xstr.strcmp(s) == 1, CHECK_RESULT(xstr.strcmp(s) == 1,
sprintf("xstr.strcmp(s) == 1"), ssprintf("xstr.strcmp(s) == 1"),
sprintf("xstr.strcmp(s) != 1 (%d)", xstr.strcmp(s)) ssprintf("xstr.strcmp(s) != 1 (%d)", xstr.strcmp(s))
); );
//const ch_t* s2 = incrementChar(initialValue.cha, pos, 1); //const ch_t* s2 = incrementChar(initialValue.cha, pos, 1);
} }
@ -1139,27 +1144,27 @@ static void testindexOf__(XStringClass subStr, bool ignoreCase,
testStr = subStr; testStr = subStr;
if ( ignoreCase ) testStr.lowerAscii(); if ( ignoreCase ) testStr.lowerAscii();
CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 0, CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 0,
sprintf("testStr.indexOf(subStr.s(), 0) == 0"), ssprintf("testStr.indexOf(subStr.s(), 0) == 0"),
sprintf("testStr.indexOf(subStr.s(), 0) != 0 (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("testStr.indexOf(subStr.s(), 0) != 0 (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
(testStr.*indexOfString)(subStr.s(), 0); (testStr.*indexOfString)(subStr.s(), 0);
size_t expectedPos = subStr.length()==0 ? testStr.length() : 0; size_t expectedPos = subStr.length()==0 ? testStr.length() : 0;
CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == expectedPos, CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == expectedPos,
sprintf("testStr.indexOf(subStr.s(), 0) == expectedPos (%zu)", expectedPos), ssprintf("testStr.indexOf(subStr.s(), 0) == expectedPos (%zu)", expectedPos),
sprintf("testStr.indexOf(subStr.s(), 0) != 0 (%zu!=%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1), expectedPos) ssprintf("testStr.indexOf(subStr.s(), 0) != 0 (%zu!=%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1), expectedPos)
); );
(testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1); (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1);
XStringClass apple; XStringClass apple;
apple.takeValueFrom(""); apple.takeValueFrom("");
CHECK_RESULT((testStr.*indexOfString)(apple.s(), 0) == MAX_XSIZE, CHECK_RESULT((testStr.*indexOfString)(apple.s(), 0) == MAX_XSIZE,
sprintf("testStr.*indexOfString)(\"\", 0) == MAX_XSIZE"), ssprintf("testStr.*indexOfString)(\"\", 0) == MAX_XSIZE"),
sprintf("testStr.*indexOfString)(\"\", 0) != MAX_XSIZE (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("testStr.*indexOfString)(\"\", 0) != MAX_XSIZE (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
//(testStr.*indexOfString)(""); //(testStr.*indexOfString)("");
CHECK_RESULT((testStr.*rindexOfString)(apple.s(), MAX_XSIZE-1) == MAX_XSIZE, CHECK_RESULT((testStr.*rindexOfString)(apple.s(), MAX_XSIZE-1) == MAX_XSIZE,
sprintf("(testStr.*rindexOfString)(\"\", MAX_XSIZE-1) == MAX_XSIZE"), ssprintf("(testStr.*rindexOfString)(\"\", MAX_XSIZE-1) == MAX_XSIZE"),
sprintf("(testStr.*rindexOfString)(\"\", MAX_XSIZE-1) != MAX_XSIZE (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1)) ssprintf("(testStr.*rindexOfString)(\"\", MAX_XSIZE-1) != MAX_XSIZE (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1))
); );
if ( subStr.length() > 0 ) if ( subStr.length() > 0 )
@ -1168,30 +1173,30 @@ static void testindexOf__(XStringClass subStr, bool ignoreCase,
testStr.strcat(subStr.s()); testStr.strcat(subStr.s());
if ( ignoreCase ) testStr.lowerAscii(); if ( ignoreCase ) testStr.lowerAscii();
CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 3, CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 3,
sprintf("testStr.indexOf(subStr.s(), 0) == 3"), ssprintf("testStr.indexOf(subStr.s(), 0) == 3"),
sprintf("testStr.indexOf(subStr.s(), 0) != 3 (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("testStr.indexOf(subStr.s(), 0) != 3 (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
(testStr.*indexOfString)(subStr.s(), 0); (testStr.*indexOfString)(subStr.s(), 0);
CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 3, CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 3,
sprintf("(testStr.*indexOfString)(subStr.s(), 0) == 3"), ssprintf("(testStr.*indexOfString)(subStr.s(), 0) == 3"),
sprintf("(testStr.*indexOfString)(subStr.s(), 0) != 3 (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("(testStr.*indexOfString)(subStr.s(), 0) != 3 (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
CHECK_RESULT((testStr.*indexOfChar)(subStr[0], 0) == 3, CHECK_RESULT((testStr.*indexOfChar)(subStr[0], 0) == 3,
sprintf("(testStr.*indexOfString)(subStr[0]) == 3"), ssprintf("(testStr.*indexOfString)(subStr[0]) == 3"),
sprintf("(testStr.*indexOfString)(subStr[0]) != 3 (%zu)", (testStr.*indexOfChar)(subStr[0], 0)) ssprintf("(testStr.*indexOfString)(subStr[0]) != 3 (%zu)", (testStr.*indexOfChar)(subStr[0], 0))
); );
CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 3, CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 3,
sprintf("testStr.indexOf(subStr.s(), MAX_XSIZE-1) == 3"), ssprintf("testStr.indexOf(subStr.s(), MAX_XSIZE-1) == 3"),
sprintf("testStr.indexOf(subStr.s(), MAX_XSIZE-1) != 3 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1)) ssprintf("testStr.indexOf(subStr.s(), MAX_XSIZE-1) != 3 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1))
); );
(testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1); (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1);
CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 3, CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 3,
sprintf("(testStr.*rindexOfString)(subStr.s(), 0) == 3"), ssprintf("(testStr.*rindexOfString)(subStr.s(), 0) == 3"),
sprintf("(testStr.*rindexOfString)(subStr.s(), 0) != 3 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1)) ssprintf("(testStr.*rindexOfString)(subStr.s(), 0) != 3 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1))
); );
CHECK_RESULT((testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1) == 3 + subStr.length() - 1, CHECK_RESULT((testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1) == 3 + subStr.length() - 1,
sprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 3 + subStr.length() - 1 (%zu)", 3 + subStr.length() - 1), ssprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 3 + subStr.length() - 1 (%zu)", 3 + subStr.length() - 1),
sprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 3 + subStr.length() - 1 (%zu!=%zu)", (testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1), 3 + subStr.length() - 1) ssprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 3 + subStr.length() - 1 (%zu!=%zu)", (testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1), 3 + subStr.length() - 1)
); );
testStr.takeValueFrom(""); testStr.takeValueFrom("");
@ -1199,29 +1204,29 @@ static void testindexOf__(XStringClass subStr, bool ignoreCase,
testStr.strcat(""); testStr.strcat("");
if ( ignoreCase ) testStr.lowerAscii(); if ( ignoreCase ) testStr.lowerAscii();
CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 4, CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 4,
sprintf("testStr.indexOf(subStr.s(), 0) == 4"), ssprintf("testStr.indexOf(subStr.s(), 0) == 4"),
sprintf("testStr.indexOf(subStr.s(), 0) != 4 (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("testStr.indexOf(subStr.s(), 0) != 4 (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
(testStr.*indexOfString)(subStr.s(), 0); (testStr.*indexOfString)(subStr.s(), 0);
CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 4, CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 4,
sprintf("(testStr.*indexOfString)(subStr.s(), 0) == 4"), ssprintf("(testStr.*indexOfString)(subStr.s(), 0) == 4"),
sprintf("(testStr.*indexOfString)(subStr.s(), 0) != 4 (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("(testStr.*indexOfString)(subStr.s(), 0) != 4 (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
CHECK_RESULT((testStr.*indexOfChar)(subStr[0], 0) == 4, CHECK_RESULT((testStr.*indexOfChar)(subStr[0], 0) == 4,
sprintf("(testStr.*indexOfString)(subStr[0]) == 4"), ssprintf("(testStr.*indexOfString)(subStr[0]) == 4"),
sprintf("(testStr.*indexOfString)(subStr[0]) != 4 (%zu)", (testStr.*indexOfChar)(subStr[0], 0)) ssprintf("(testStr.*indexOfString)(subStr[0]) != 4 (%zu)", (testStr.*indexOfChar)(subStr[0], 0))
); );
CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 4, CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 4,
sprintf("testStr.indexOf(subStr.s(), 0) == 4"), ssprintf("testStr.indexOf(subStr.s(), 0) == 4"),
sprintf("testStr.indexOf(subStr.s(), 0) != 4 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1)) ssprintf("testStr.indexOf(subStr.s(), 0) != 4 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1))
); );
CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 4, CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 4,
sprintf("(testStr.*rindexOfString)(subStr.s(), 0) == 4"), ssprintf("(testStr.*rindexOfString)(subStr.s(), 0) == 4"),
sprintf("(testStr.*rindexOfString)(subStr.s(), 0) != 4 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1)) ssprintf("(testStr.*rindexOfString)(subStr.s(), 0) != 4 (%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1))
); );
CHECK_RESULT((testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1) == 4 + subStr.length() - 1, CHECK_RESULT((testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1) == 4 + subStr.length() - 1,
sprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 4 + subStr.length() - 1 (%zu)", 4 + subStr.length() - 1), ssprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 4 + subStr.length() - 1 (%zu)", 4 + subStr.length() - 1),
sprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 4 + subStr.length() - 1 (%zu!=%zu)", (testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1), 4 + subStr.length() - 1) ssprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 4 + subStr.length() - 1 (%zu!=%zu)", (testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1), 4 + subStr.length() - 1)
); );
testStr.takeValueFrom(""); testStr.takeValueFrom("");
@ -1231,29 +1236,29 @@ static void testindexOf__(XStringClass subStr, bool ignoreCase,
testStr.strcat(""); testStr.strcat("");
if ( ignoreCase ) testStr.lowerAscii(); if ( ignoreCase ) testStr.lowerAscii();
CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 5, CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 5,
sprintf("testStr.indexOf(subStr.s(), 0) == 5"), ssprintf("testStr.indexOf(subStr.s(), 0) == 5"),
sprintf("testStr.indexOf(subStr.s(), 0) != 5 (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("testStr.indexOf(subStr.s(), 0) != 5 (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 5, CHECK_RESULT((testStr.*indexOfString)(subStr.s(), 0) == 5,
sprintf("(testStr.*indexOfString)(subStr.s(), 0) == 5"), ssprintf("(testStr.*indexOfString)(subStr.s(), 0) == 5"),
sprintf("(testStr.*indexOfString)(subStr.s(), 0) != 5 (%zu)", (testStr.*indexOfString)(subStr.s(), 0)) ssprintf("(testStr.*indexOfString)(subStr.s(), 0) != 5 (%zu)", (testStr.*indexOfString)(subStr.s(), 0))
); );
CHECK_RESULT((testStr.*indexOfChar)(subStr[0], 0) == 5, CHECK_RESULT((testStr.*indexOfChar)(subStr[0], 0) == 5,
sprintf("(testStr.*indexOfString)(subStr[0]) == 5"), ssprintf("(testStr.*indexOfString)(subStr[0]) == 5"),
sprintf("(testStr.*indexOfString)(subStr[0]) != 5 (%zu)", (testStr.*indexOfChar)(subStr[0], 0)) ssprintf("(testStr.*indexOfString)(subStr[0]) != 5 (%zu)", (testStr.*indexOfChar)(subStr[0], 0))
); );
CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 5 + subStr.length() + 6, CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 5 + subStr.length() + 6,
sprintf("testStr.indexOf(subStr.s(), 0) == 5 + subStr.length() + 6"), ssprintf("testStr.indexOf(subStr.s(), 0) == 5 + subStr.length() + 6"),
sprintf("testStr.indexOf(subStr.s(), 0) != 5 + subStr.length() + 6 (%zu!=%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1), 5 + subStr.length() + 6) ssprintf("testStr.indexOf(subStr.s(), 0) != 5 + subStr.length() + 6 (%zu!=%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1), 5 + subStr.length() + 6)
); );
(testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1); (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1);
CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 5 + subStr.length() + 6, CHECK_RESULT((testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1) == 5 + subStr.length() + 6,
sprintf("(testStr.*rindexOfString)(subStr.s(), 0) == 5 + subStr.length() + 6"), ssprintf("(testStr.*rindexOfString)(subStr.s(), 0) == 5 + subStr.length() + 6"),
sprintf("(testStr.*rindexOfString)(subStr.s(), 0) != 5 + subStr.length() + 6 (%zu!=%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1), 5 + subStr.length() + 6) ssprintf("(testStr.*rindexOfString)(subStr.s(), 0) != 5 + subStr.length() + 6 (%zu!=%zu)", (testStr.*rindexOfString)(subStr.s(), MAX_XSIZE-1), 5 + subStr.length() + 6)
); );
CHECK_RESULT((testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1) == 5 + subStr.length() + 6 + subStr.length() - 1, CHECK_RESULT((testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1) == 5 + subStr.length() + 6 + subStr.length() - 1,
sprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 5 + subStr.length() + 6 + subStr.length() - 1 (%zu)", 5 + subStr.length() + 6 + subStr.length() - 1), ssprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 5 + subStr.length() + 6 + subStr.length() - 1 (%zu)", 5 + subStr.length() + 6 + subStr.length() - 1),
sprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 5 + subStr.length() + 6 + subStr.length() - 1 (%zu!=%zu)", (testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1), 5 + subStr.length() + 6 + subStr.length() - 1) ssprintf("(testStr.*rindexOfString)(subStr[subStr.length()-1]) == 5 + subStr.length() + 6 + subStr.length() - 1 (%zu!=%zu)", (testStr.*rindexOfChar)(subStr[subStr.length()-1], MAX_XSIZE-1), 5 + subStr.length() + 6 + subStr.length() - 1)
); );
} }
} }
@ -1261,7 +1266,7 @@ static void testindexOf__(XStringClass subStr, bool ignoreCase,
template<class XStringClass, class InitialValue> template<class XStringClass, class InitialValue>
SimpleString testindexOf_(const InitialValue& initialValue) SimpleString testindexOf_(const InitialValue& initialValue)
{ {
TEST_TITLE(displayOnlyFailed, sprintf("Test %s::idxOf", XStringClassInfo<XStringClass>::xStringClassName)); TEST_TITLE(displayOnlyFailed, ssprintf("Test %s::idxOf", XStringClassInfo<XStringClass>::xStringClassName));
typedef typename XStringClassInfo<XStringClass>::xs_t ixs_t; typedef typename XStringClassInfo<XStringClass>::xs_t ixs_t;
typedef typename XStringClassInfo<XStringClass>::ch_t ich_t; typedef typename XStringClassInfo<XStringClass>::ch_t ich_t;
@ -1317,7 +1322,7 @@ void func_test(XStringW& xsw)
int XString_tests() int XString_tests()
{ {
#ifdef JIEF_DEBUG #ifdef JIEF_DEBUG
// DebugLog(2, "XString16_tests -> Enter\n"); // printf("XString16_tests -> Enter\n");
#endif #endif
//const char c = ' '; //const char c = ' ';
@ -1354,10 +1359,6 @@ xw1.dataSized(ll);
// testDefaultCtor<XString>("XString"); // testDefaultCtor<XString>("XString");
// XString16 a = u"toto"_XS16; // XString16 a = u"toto"_XS16;
// teststrncpy_<XString>("utf8", testStringMultiCodedArray[1].utf8, testStringMultiCodedArray[1].wchar);
//testindexOf(XString, utf8, utf16);
//testCompare(XString, utf8, utf8);
//testindexOf_<XString>(testStringMultiCoded4CaseArray[0].utf8);
const char* utf8 = "ギ"; (void)utf8; const char* utf8 = "ギ"; (void)utf8;
size_t utf8_size = sizeof("ギ") - 1; (void)utf8_size; // this char is 6 bytes long ! size_t utf8_size = sizeof("ギ") - 1; (void)utf8_size; // this char is 6 bytes long !
@ -1372,24 +1373,29 @@ size_t utf32_size = sizeof(U"ギ") - 1; (void)utf32_size; // this char is 6 b
//size_t size = sizeof("楘")-1; // this char is 3 bytes long //size_t size = sizeof("楘")-1; // this char is 3 bytes long
//XString str = "ギꇉ伽楘"_XS; //XString str = "ギꇉ伽楘"_XS;
//char* s = str.data(42); //char* s = str.data(42);
TEST_ALL_CLASSES(testchar32At, TEST_ALL_INTEGRAL);
//teststrncpy_<XString>("utf8", testStringMultiCodedArray[1].utf8, testStringMultiCodedArray[1].wchar);
//testindexOf(XString, utf8, utf16);
testCompare(XString, utf8, utf16);
//testindexOf_<XString>(testStringMultiCoded4CaseArray[0].utf8);
TEST_ALL_CLASSES(testDefaultCtor, __TEST0); // TEST_ALL_CLASSES(testDefaultCtor, __TEST0);
TEST_ALL_CLASSES(testEmpty, __TEST0); // TEST_ALL_CLASSES(testEmpty, __TEST0);
TEST_ALL_CLASSES(testTakeValueFrom, TEST_ALL_UTF); // TEST_ALL_CLASSES(testTakeValueFrom, TEST_ALL_UTF);
TEST_ALL_CLASSES(testTakeValueFromXString, TEST_ALL_UTF); // TEST_ALL_CLASSES(testTakeValueFromXString, TEST_ALL_UTF);
TEST_ALL_CLASSES(testchar32At, TEST_ALL_INTEGRAL); // TEST_ALL_CLASSES(testchar32At, TEST_ALL_INTEGRAL);
TEST_ALL_CLASSES(testdataSized, TEST_ALL_INTEGRAL); // TEST_ALL_CLASSES(testdataSized, TEST_ALL_INTEGRAL);
//
TEST_ALL_CLASSES(teststrcpy, TEST_ALL_UTF); // TEST_ALL_CLASSES(teststrcpy, TEST_ALL_UTF);
TEST_ALL_CLASSES(teststrncpy, TEST_ALL_UTF); // 26944 tests // TEST_ALL_CLASSES(teststrncpy, TEST_ALL_UTF); // 26944 tests
TEST_ALL_CLASSES(teststrcat, TEST_ALL_UTF_ALL_UTF); // TEST_ALL_CLASSES(teststrcat, TEST_ALL_UTF_ALL_UTF);
TEST_ALL_CLASSES(teststrncat, TEST_ALL_UTF_ALL_UTF); // 2101632 tests // TEST_ALL_CLASSES(teststrncat, TEST_ALL_UTF_ALL_UTF); // 2101632 tests
//
TEST_ALL_CLASSES(testSubString, __TEST0); // TEST_ALL_CLASSES(testSubString, __TEST0);
TEST_ALL_CLASSES(testCompare, TEST_ALL_UTF); TEST_ALL_CLASSES(testCompare, TEST_ALL_UTF);
TEST_ALL_CLASSES(testindexOf, TEST_ALL_UTF); TEST_ALL_CLASSES(testindexOf, TEST_ALL_UTF);
@ -1398,7 +1404,7 @@ TEST_ALL_CLASSES(testchar32At, TEST_ALL_INTEGRAL);
// //
//// str2.insert(1, str); //// str2.insert(1, str);
// //
// str2.SPrintf("%c", 'a'); // signle UTF8 ascii char // str2.ssprintf("%c", 'a'); // signle UTF8 ascii char
// if ( str2 != L"a" ) return // if ( str2 != L"a" ) return
@ -1410,7 +1416,7 @@ TEST_ALL_CLASSES(testchar32At, TEST_ALL_INTEGRAL);
#ifdef JIEF_DEBUG #ifdef JIEF_DEBUG
if ( nbTestFailed == 0 ) printf("All %d tests succeeded.\n", nbTest); if ( nbTestFailed == 0 ) printf("All %d tests succeeded.\n", nbTest);
else printf("%d tests succeeded out of %d.\n", nbTest-nbTestFailed, nbTestFailed); else printf("%d tests succeeded out of %d.\n", nbTest-nbTestFailed, nbTest);
#endif #endif
return 0; return nbTestFailed > 0;
} }

View File

@ -33,77 +33,77 @@ bool all_tests()
ret = XString_tests(); ret = XString_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "XString16_tests() failed at test %d\n", ret); printf("XString16_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
//return ret; //return ret;
// ret = XUINTN_tests(); // ret = XUINTN_tests();
// if ( ret != 0 ) { // if ( ret != 0 ) {
// DebugLog(2, "XUINTN_tests() failed at test %d\n", ret); // printf("XUINTN_tests() failed at test %d\n", ret);
// all_ok = false; // all_ok = false;
// } // }
#if defined(JIEF_DEBUG) && defined(CLOVER_BUILD) #if defined(JIEF_DEBUG) && defined(CLOVER_BUILD)
ret = printlib_tests(); ret = printlib_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "printlib_tests() failed at test %d\n", ret); printf("printlib_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
ret = poolprint_tests(); ret = poolprint_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "poolprint_tests() failed at test %d\n", ret); printf("poolprint_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
#endif #endif
#ifndef _MSC_VER #ifndef _MSC_VER
ret = printf_lite_tests(); ret = printf_lite_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "printf_lite_tests() failed at test %d\n", ret); printf("printf_lite_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
#endif #endif
ret = strlen_tests(); ret = strlen_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "strlen_tests() failed at test %d\n", ret); printf("strlen_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
ret = BootOptions_tests(); ret = BootOptions_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "BootOptions_tests() failed at test %d\n", ret); printf("BootOptions_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
ret = strcmp_tests(); ret = strcmp_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "strcmp_tests() failed at test %d\n", ret); printf("strcmp_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
ret = strncmp_tests(); ret = strncmp_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "strncmp_tests() failed at test %d\n", ret); printf("strncmp_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
ret = XArray_tests(); ret = XArray_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "XArray_tests() failed at test %d\n", ret); printf("XArray_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
ret = XObjArray_tests(); ret = XObjArray_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "XObjArray_tests() failed at test %d\n", ret); printf("XObjArray_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
ret = XStringWArray_tests(); ret = XStringWArray_tests();
if ( ret != 0 ) { if ( ret != 0 ) {
DebugLog(2, "XStringWArray_tests() failed at test %d\n", ret); printf("XStringWArray_tests() failed at test %d\n", ret);
all_ok = false; all_ok = false;
} }
// ret = XUINTN_tests(); // ret = XUINTN_tests();
// if ( ret != 0 ) { // if ( ret != 0 ) {
// DebugLog(2, "XUINTN_tests() failed at test %d\n", ret); // printf("XUINTN_tests() failed at test %d\n", ret);
// all_ok = false; // all_ok = false;
// } // }
if ( !all_ok ) { if ( !all_ok ) {
DebugLog(2, "A test failed\n"); printf("A test failed\n");
} }
#if defined(JIEF_DEBUG) #if defined(JIEF_DEBUG)

View File

@ -4,7 +4,7 @@
#define PRIF "%a" #define PRIF "%a"
#define PRILF "%s" #define PRILF "%s"
#define loggf(...) DebugLog(2, __VA_ARGS__) #define loggf(...) printf(__VA_ARGS__)
//#define loggf(...) printf(__VA_ARGS__) //#define loggf(...) printf(__VA_ARGS__)
#define DISPLAY_ONLY_FAILED #define DISPLAY_ONLY_FAILED

View File

@ -4,7 +4,7 @@
#define PRIF "%s" #define PRIF "%s"
#define PRILF "%ls" #define PRILF "%ls"
#define loggf(...) DebugLog(2, __VA_ARGS__) #define loggf(...) printf(__VA_ARGS__)
//#define loggf(...) printf(__VA_ARGS__) //#define loggf(...) printf(__VA_ARGS__)
#define DISPLAY_ONLY_FAILED #define DISPLAY_ONLY_FAILED

View File

@ -288,22 +288,22 @@ int printf_lite_tests(void)
Test1arg(F("| c|"), F("|%5x|"), 12); Test1arg(F("| c|"), F("|%5x|"), 12);
Test1arg(F("| C|"), F("|%5X|"), 12); Test1arg(F("| C|"), F("|%5X|"), 12);
Test1arg(F("| -12|"), F("|%5hhd|"), (char)-12); Test1arg(F("| -12|"), F("|%5hhd|"), (signed char)-12);
Test1arg(F("| -12|"), F("|%5d|"), (char)-12); Test1arg(F("| -12|"), F("|%5d|"), (signed char)-12);
Test1arg(F("| -12|"), F("|%5hd|"), (short)-12); Test1arg(F("| -12|"), F("|%5hd|"), (short)-12);
Test1arg(F("| -12|"), F("|%5d|"), -12); Test1arg(F("| -12|"), F("|%5d|"), -12);
Test1arg(F("| -12|"), F("|%5ld|"), -12L); Test1arg(F("| -12|"), F("|%5ld|"), -12L);
Test1arg(F("| -12|"), F("|%5lld|"), -12LL); Test1arg(F("| -12|"), F("|%5lld|"), -12LL);
Test1arg(F("| 244|"), F("|%5hhu|"), (char)-12); Test1arg(F("| 244|"), F("|%5hhu|"), (signed char)-12);
Test1arg(F("|4294967284|"), F("|%5u|"), (char)-12); Test1arg(F("|4294967284|"), F("|%5u|"), (signed char)-12);
Test1arg(F("|65524|"), F("|%5hu|"), (short)-12); Test1arg(F("|65524|"), F("|%5hu|"), (short)-12);
Test1arg(F("|4294967284|"), F("|%5u|"), -12); Test1arg(F("|4294967284|"), F("|%5u|"), -12);
Test1arg(F("|18446744073709551604|"), F("|%5lu|"), -12L); Test1arg(F("|18446744073709551604|"), F("|%5lu|"), -12L);
Test1arg(F("|18446744073709551604|"), F("|%5llu|"), -12LL); Test1arg(F("|18446744073709551604|"), F("|%5llu|"), -12LL);
Test1arg(F("| f4|"), F("|%5hhx|"), (char)-12); Test1arg(F("| f4|"), F("|%5hhx|"), (signed char)-12);
Test1arg(F("|fffffff4|"), F("|%5x|"), (char)-12); Test1arg(F("|fffffff4|"), F("|%5x|"), (signed char)-12);
Test1arg(F("| fff4|"), F("|%5hx|"), (short)-12); Test1arg(F("| fff4|"), F("|%5hx|"), (short)-12);
Test1arg(F("|fffffff4|"), F("|%5x|"), -12); Test1arg(F("|fffffff4|"), F("|%5x|"), -12);
Test1arg(F("|fffffffffffffff4|"), F("|%5lx|"), -12L); Test1arg(F("|fffffffffffffff4|"), F("|%5lx|"), -12L);

View File

@ -4,7 +4,7 @@
#define PRIF "%s" #define PRIF "%s"
#define PRILF "%ls" #define PRILF "%ls"
#define loggf(...) DebugLog(2, __VA_ARGS__) #define loggf(...) printf(__VA_ARGS__)
//#define loggf(...) printf(__VA_ARGS__) //#define loggf(...) printf(__VA_ARGS__)
#define DISPLAY_ONLY_FAILED #define DISPLAY_ONLY_FAILED

View File

@ -45,7 +45,7 @@ static int compare(const char*s1, const char*s2)
int ret2 = strcmp_reference(s1, s2);; int ret2 = strcmp_reference(s1, s2);;
if ( sign(ret1) != sign(ret2) ) { if ( sign(ret1) != sign(ret2) ) {
DebugLog(2, "Comparing '%s' and '%s' gives %d and should have given %d\n", s1, s2, ret1, ret2); printf("Comparing '%s' and '%s' gives %d and should have given %d\n", s1, s2, ret1, ret2);
return 1; // whatever if not 0 return 1; // whatever if not 0
} }
return 0; return 0;
@ -101,7 +101,7 @@ static int compare_s1_with_variable_sizes(const char* s1, int code)
{ {
size_t count = (size_t)(rndf()*sizeof(s2)-1); size_t count = (size_t)(rndf()*sizeof(s2)-1);
if ( count >= sizeof(s2) ) { if ( count >= sizeof(s2) ) {
DebugLog(2, "compare_s1_with_variable_sizes, BUG : sizeof=%lu, count=%zu\n", sizeof(s2), count); printf("compare_s1_with_variable_sizes, BUG : sizeof=%lu, count=%zu\n", sizeof(s2), count);
continue; continue;
} }
fillRandom(s2, count); fillRandom(s2, count);

View File

@ -7,12 +7,12 @@
static int len(const char* s1, size_t count, int code) static int len(const char* s1, size_t count, int code)
{ {
//DebugLog(2, "strlen of '%s'\n", s1); //printf("strlen of '%s'\n", s1);
size_t ret1 = strlen(s1); size_t ret1 = strlen(s1);
if ( ret1 != count ) { if ( ret1 != count ) {
DebugLog(2, "strlen of '%s' gives %zu and should have given %zu\n", s1, ret1, count); printf("strlen of '%s' gives %zu and should have given %zu\n", s1, ret1, count);
return code; return code;
} }
return 0; return 0;
@ -59,7 +59,7 @@ int strlen_tests()
{ {
#ifdef JIEF_DEBUG #ifdef JIEF_DEBUG
// DebugLog(2, "XStringW_tests -> Enter\n"); // printf("XStringW_tests -> Enter\n");
#endif #endif
const char* s; const char* s;
s = "1234567890"; // use intermediary var to not be optimized out. s = "1234567890"; // use intermediary var to not be optimized out.
@ -77,15 +77,15 @@ int strlen_tests()
#ifdef CLOVER_BUILD #ifdef CLOVER_BUILD
// UINTN start = AsmReadTsc(); // UINTN start = AsmReadTsc();
// DebugLog(2, "strlen_tests -> Enter\n"); // printf("strlen_tests -> Enter\n");
// //
// for ( UINTN i=0 ; i<100000 ; i++ ) { // for ( UINTN i=0 ; i<100000 ; i++ ) {
// ret = strlen_s1_all_offset(s, 50, 10); // ret = strlen_s1_all_offset(s, 50, 10);
// } // }
// //
// DebugLog(2, "strlen_tests -> Exit\n"); // printf("strlen_tests -> Exit\n");
// UINTN end = AsmReadTsc(); // UINTN end = AsmReadTsc();
// DebugLog(2, "Strlen bench time = %d\n", end - start); // printf("Strlen bench time = %d\n", end - start);
#endif #endif

View File

@ -52,12 +52,12 @@ static int nb_compare = 0;
static int compare(const char*s1, const char*s2, size_t count) static int compare(const char*s1, const char*s2, size_t count)
{ {
nb_compare ++; nb_compare ++;
//DebugLog(2, "Comparing '%s' and '%s' with count %d\n", s1, s2, count); //printf("Comparing '%s' and '%s' with count %d\n", s1, s2, count);
int ret1 = strncmp(s1, s2, count); int ret1 = strncmp(s1, s2, count);
int ret2 = strncmp_reference(s1, s2, count); int ret2 = strncmp_reference(s1, s2, count);
if ( sign(ret1) != sign(ret2) ) { if ( sign(ret1) != sign(ret2) ) {
DebugLog(2, "Comparing '%s' and '%s' with count %zu gives %d and should have given %d\n", s1, s2, count, ret1, ret2); printf("Comparing '%s' and '%s' with count %zu gives %d and should have given %d\n", s1, s2, count, ret1, ret2);
int ret3 = strncmp(s1, s2, count); // for live debugging int ret3 = strncmp(s1, s2, count); // for live debugging
(void)ret3; (void)ret3;
return 1; // whatever if not 0 return 1; // whatever if not 0
@ -141,7 +141,7 @@ static int compare_s1_with_variable_sizes(const char* s1, size_t s1count, int co
{ {
size_t s2count = (size_t)(rndf()*sizeof(s2)-1); size_t s2count = (size_t)(rndf()*sizeof(s2)-1);
if ( s2count >= sizeof(s2) ) { if ( s2count >= sizeof(s2) ) {
DebugLog(2, "compare_s1_with_variable_sizes, BUG : sizeof=%lu, count=%zu\n", sizeof(s2), s2count); printf("compare_s1_with_variable_sizes, BUG : sizeof=%lu, count=%zu\n", sizeof(s2), s2count);
continue; continue;
} }
fillRandom(s2, s2count); fillRandom(s2, s2count);

View File

@ -1,36 +0,0 @@
#include "panic.h"
#include <Platform.h>
//extern "C" {
//#include <Library/BaseLib.h> // for CpuDeadLoop
//}
bool stop_at_panic = true;
bool i_have_panicked = false;
/*
*
* 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
*/
static void panic_(const char* s)
{
if ( s ) DebugLog(2, "%s\n", s);
DebugLog(2, "A fatal error happened. System halted\n");
CpuDeadLoop();
}
void panic(const char* s)
{
if ( stop_at_panic ) {
panic_(s);
}else{
i_have_panicked = true;
}
}
void panic(void)
{
panic(nullptr);
}