language level macro cleanup; don't roll our own dbstrings when that's avoidable
This commit is contained in:
parent
70cd4ab27d
commit
c1d21ff630
|
@ -71,6 +71,12 @@ namespace tss
|
||||||
typedef std::wstring dbstring;
|
typedef std::wstring dbstring;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif (USE_U16STRING)
|
||||||
|
namespace tss
|
||||||
|
{
|
||||||
|
typedef std::u16string dbstring;
|
||||||
|
}
|
||||||
|
|
||||||
#elif (WCHAR_IS_32_BITS)
|
#elif (WCHAR_IS_32_BITS)
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
@ -87,7 +93,7 @@ typedef std::basic_string<dbchar_t> dbstring;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if WCHAR_IS_32_BITS // We already have a dbstring implicitly in wstring!!!
|
#if NEED_DBSTRING_IMPL // We already have a dbstring implicitly in wstring!!!
|
||||||
|
|
||||||
#if HAVE_LOCALE
|
#if HAVE_LOCALE
|
||||||
# include <locale>
|
# include <locale>
|
||||||
|
|
|
@ -86,9 +86,12 @@ typedef const wchar_t* const_ntwcs_t;
|
||||||
# define NTDBS_T_DEFINED
|
# define NTDBS_T_DEFINED
|
||||||
# if WCHAR_IS_16_BITS
|
# if WCHAR_IS_16_BITS
|
||||||
typedef wchar_t dbchar_t; // Same size but use NT's type
|
typedef wchar_t dbchar_t; // Same size but use NT's type
|
||||||
|
# elif USE_CHAR16_T
|
||||||
|
typedef char16_t dbchar_t;
|
||||||
# else
|
# else
|
||||||
typedef uint16_t dbchar_t;
|
typedef uint16_t dbchar_t;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
typedef dbchar_t* ntdbs_t;
|
typedef dbchar_t* ntdbs_t;
|
||||||
typedef const dbchar_t* const_ntdbs_t;
|
typedef const dbchar_t* const_ntdbs_t;
|
||||||
#endif //NTDBS_T_DEFINED
|
#endif //NTDBS_T_DEFINED
|
||||||
|
|
|
@ -389,6 +389,11 @@
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
|
# define CPLUSPLUS_2011_OR_GREATER (__cplusplus >= 201103L)
|
||||||
|
# define CPLUSPLUS_PRE_2011 !CPLUSPLUS_2011_OR_GREATER
|
||||||
|
|
||||||
|
# define CPLUSPLUS_2017_OR_GREATER (__cplusplus >= 201703L)
|
||||||
|
# define CPLUSPLUS_PRE_2017 !CPLUSPLUS_2011_OR_GREATER
|
||||||
|
|
||||||
// KAI 3.4 uses a much improved stl
|
// KAI 3.4 uses a much improved stl
|
||||||
# define IS_KAI_3_4 (IS_KAI && (COMP == COMP_KAI_IRIX || COMP == COMP_KAI_OSF1ALPHA || COMP == COMP_KAI_GLIBC))
|
# define IS_KAI_3_4 (IS_KAI && (COMP == COMP_KAI_IRIX || COMP == COMP_KAI_OSF1ALPHA || COMP == COMP_KAI_GLIBC))
|
||||||
|
@ -420,18 +425,27 @@
|
||||||
# define WCHAR_IS_32_BITS 1
|
# define WCHAR_IS_32_BITS 1
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
# define USE_U16STRING ((!WCHAR_IS_16_BITS) && CPLUSPLUS_2011_OR_GREATER)
|
||||||
|
# define USE_CHAR16_T USE_U16STRING
|
||||||
|
# define NEED_DBSTRING_IMPL (!WCHAR_IS_16_BITS && !USE_U16STRING)
|
||||||
|
|
||||||
|
# define USE_UNIQUE_PTR CPLUSPLUS_2011_OR_GREATER
|
||||||
|
# define USE_LAMBDAS CPLUSPLUS_2011_OR_GREATER
|
||||||
|
# define USE_UNICODE_ESCAPES CPLUSPLUS_2011_OR_GREATER
|
||||||
|
# define USE_UNEXPECTED CPLUSPLUS_PRE_2017
|
||||||
|
|
||||||
# define SUPPORTS_POSIX_FORK_EXEC (HAVE_FORK && HAVE_EXECVE)
|
# define SUPPORTS_POSIX_FORK_EXEC (HAVE_FORK && HAVE_EXECVE)
|
||||||
// msystem+mpopen fail on Syllable, so use the libc equivalents until we figure out why.
|
// msystem+mpopen fail on Syllable, so use the libc equivalents until we figure out why.
|
||||||
// TODO: Figure out why.
|
// TODO: Figure out why.
|
||||||
# define USES_MPOPEN (SUPPORTS_POSIX_FORK_EXEC && !IS_SYLLABLE)
|
# define USES_MPOPEN (SUPPORTS_POSIX_FORK_EXEC && !IS_SYLLABLE)
|
||||||
# define USES_MSYSTEM (SUPPORTS_POSIX_FORK_EXEC && !IS_SYLLABLE)
|
# define USES_MSYSTEM (SUPPORTS_POSIX_FORK_EXEC && !IS_SYLLABLE)
|
||||||
|
|
||||||
# define SUPPORTS_WCHART IS_WIN32 // TODO: Remove after getting new ver of KAI
|
//# define SUPPORTS_WCHART IS_WIN32 // TODO: Remove this?
|
||||||
# define USES_GLIBC ((COMP == COMP_KAI_GLIBC) || HAVE_GCC)
|
# define USES_GLIBC ((COMP == COMP_KAI_GLIBC) || HAVE_GCC)
|
||||||
# define SUPPORTS_MEMBER_TEMPLATES (!IS_SUNPRO)
|
# define SUPPORTS_MEMBER_TEMPLATES (!IS_SUNPRO)
|
||||||
# define SUPPORTS_EXPLICIT_TEMPLATE_FUNC_INST (!IS_SUNPRO)
|
# define SUPPORTS_EXPLICIT_TEMPLATE_FUNC_INST (!IS_SUNPRO)
|
||||||
|
|
||||||
# define SUPPORTS_POSIX_SIGNALS (!IS_DOS_DJGPP)
|
# define SUPPORTS_POSIX_SIGNALS (!IS_DOS_DJGPP && !IS_MINGW)
|
||||||
# define SUPPORTS_NETWORKING (HAVE_SOCKET && !IS_SORTIX && !IS_DOS_DJGPP && !IS_REDOX)
|
# define SUPPORTS_NETWORKING (HAVE_SOCKET && !IS_SORTIX && !IS_DOS_DJGPP && !IS_REDOX)
|
||||||
# define SUPPORTS_SYSLOG (HAVE_SYSLOG && !IS_SKYOS && !IS_RISCOS)
|
# define SUPPORTS_SYSLOG (HAVE_SYSLOG && !IS_SKYOS && !IS_RISCOS)
|
||||||
# define NEEDS_SWAB_IMPL (IS_CYGWIN || IS_SYLLABLE || IS_ANDROID || IS_SORTIX)
|
# define NEEDS_SWAB_IMPL (IS_CYGWIN || IS_SYLLABLE || IS_ANDROID || IS_SORTIX)
|
||||||
|
@ -492,9 +506,9 @@
|
||||||
// Work around single-arg mkdir on MinGW.
|
// Work around single-arg mkdir on MinGW.
|
||||||
// consider using autoconf AX_FUNC_MKDIR if
|
// consider using autoconf AX_FUNC_MKDIR if
|
||||||
// we need to handle any more cases here
|
// we need to handle any more cases here
|
||||||
#if IS_MINGW
|
/*#if IS_MINGW
|
||||||
# define mkdir(a,b) mkdir(a)
|
# define mkdir(a,b) mkdir(a)
|
||||||
#endif
|
#endif*/
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// Miscellaneous
|
// Miscellaneous
|
||||||
|
|
|
@ -187,7 +187,7 @@ inline int64_t SWAPBYTES64(int64_t i)
|
||||||
|
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
|
|
||||||
# if __cplusplus >= 201103L
|
# if USE_UNIQUE_PTR
|
||||||
# define TW_UNIQUE_PTR std::unique_ptr
|
# define TW_UNIQUE_PTR std::unique_ptr
|
||||||
# else
|
# else
|
||||||
# define TW_UNIQUE_PTR std::auto_ptr
|
# define TW_UNIQUE_PTR std::auto_ptr
|
||||||
|
|
|
@ -52,6 +52,7 @@ int wchar16len(const WCHAR16* s)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if NEED_DBSTRING_IMPL
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// class wc16_string
|
// class wc16_string
|
||||||
//
|
//
|
||||||
|
@ -331,3 +332,22 @@ void wc16_string_impl::CopyString(const wc16_string_impl& rhs)
|
||||||
|
|
||||||
memcpy(this->pString, rhs.pString, newlen * sizeof(WCHAR16));
|
memcpy(this->pString, rhs.pString, newlen * sizeof(WCHAR16));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace tss
|
||||||
|
{
|
||||||
|
void swapbytes(wc16_string& str)
|
||||||
|
{
|
||||||
|
#if NEED_DBSTRING_IMPL
|
||||||
|
str.swapbytes();
|
||||||
|
#else
|
||||||
|
size_t len = str.length();
|
||||||
|
for (size_t x=0; x < len; x++)
|
||||||
|
{
|
||||||
|
WCHAR16 current = str[x];
|
||||||
|
str[x] = ((current >> 8) | ((current & 0xFF) << 8));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,11 +38,22 @@
|
||||||
#ifndef __WCHAR16_H
|
#ifndef __WCHAR16_H
|
||||||
#define __WCHAR16_H
|
#define __WCHAR16_H
|
||||||
|
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
// TODO: Perhaps WCHAR16 should come out of types.h???
|
// TODO: Perhaps WCHAR16 should come out of types.h???
|
||||||
#ifndef __TYPES_H
|
#ifndef __TYPES_H
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if WCHAR_IS_16_BITS
|
||||||
|
typedef wchar_t WCHAR16;
|
||||||
|
typedef std::wstring wc16_string;
|
||||||
|
|
||||||
|
#elif USE_U16STRING
|
||||||
|
typedef char16_t WCHAR16;
|
||||||
|
typedef std::u16string wc16_string;
|
||||||
|
|
||||||
|
#else
|
||||||
typedef uint16_t WCHAR16; // unix has 4 byte wchar_t, but we want to standardize on 16 bit wide chars
|
typedef uint16_t WCHAR16; // unix has 4 byte wchar_t, but we want to standardize on 16 bit wide chars
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
@ -107,5 +118,17 @@ public:
|
||||||
private:
|
private:
|
||||||
wc16_string_impl* mpData;
|
wc16_string_impl* mpData;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
namespace tss
|
||||||
|
{
|
||||||
|
void swapbytes(wc16_string& str);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef WORDS_BIGENDIAN
|
||||||
|
#define TSS_SwapBytes(x) tss::swapbytes(x)
|
||||||
|
#else
|
||||||
|
#define TSS_SwapBytes(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // __WCHAR16_H
|
||||||
|
|
|
@ -86,13 +86,13 @@
|
||||||
|
|
||||||
// Make sure these typedefs are correct for your computer
|
// Make sure these typedefs are correct for your computer
|
||||||
|
|
||||||
#if __cplusplus < 201103L
|
#if CPLUSPLUS_PRE_2011
|
||||||
typedef unsigned char uint8_t;
|
typedef unsigned char uint8_t;
|
||||||
#else
|
#else
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __cplusplus < 201103L
|
#if CPLUSPLUS_PRE_2011
|
||||||
typedef unsigned short word16;
|
typedef unsigned short word16;
|
||||||
#if SIZEOF_INT == 4
|
#if SIZEOF_INT == 4
|
||||||
typedef unsigned int word32;
|
typedef unsigned int word32;
|
||||||
|
@ -155,7 +155,7 @@ typedef unsigned long long word64;
|
||||||
|
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
|
|
||||||
#if __cplusplus < 201103L
|
#if CPLUSPLUS_PRE_2011
|
||||||
typedef word32 word;
|
typedef word32 word;
|
||||||
#if SIZEOF_LONG_LONG == 8
|
#if SIZEOF_LONG_LONG == 8
|
||||||
typedef unsigned long long dword;
|
typedef unsigned long long dword;
|
||||||
|
@ -165,7 +165,7 @@ typedef word32 word;
|
||||||
#else
|
#else
|
||||||
#error "I don't seem to have a 64-bit integer type on this system."
|
#error "I don't seem to have a 64-bit integer type on this system."
|
||||||
#endif
|
#endif
|
||||||
#else // __cplusplus < 201103L
|
#else // CPLUSPLUS_PRE_2011
|
||||||
|
|
||||||
typedef uint32_t word;
|
typedef uint32_t word;
|
||||||
typedef uint64_t dword;
|
typedef uint64_t dword;
|
||||||
|
|
|
@ -179,7 +179,7 @@ static inline void trim_leading_whitespace(std::string& str)
|
||||||
{
|
{
|
||||||
// C++17 removes std::ptr_fun and deprecates std::not1,
|
// C++17 removes std::ptr_fun and deprecates std::not1,
|
||||||
// so just use a lambda where available
|
// so just use a lambda where available
|
||||||
#if __cplusplus < 201103L
|
#if !USE_LAMBDAS
|
||||||
str.erase(str.begin(), std::find_if(str.begin(), str.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
|
str.erase(str.begin(), std::find_if(str.begin(), str.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
|
||||||
#else
|
#else
|
||||||
str.erase(str.begin(), std::find_if(str.begin(), str.end(), [](int c) {return !std::isspace(c);} ));
|
str.erase(str.begin(), std::find_if(str.begin(), str.end(), [](int c) {return !std::isspace(c);} ));
|
||||||
|
|
|
@ -71,7 +71,7 @@ void tw_terminate_handler()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
void tw_unexpected_handler()
|
void tw_unexpected_handler()
|
||||||
{
|
{
|
||||||
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
||||||
|
@ -122,7 +122,7 @@ int __cdecl _tmain(int argc, const TCHAR** argv)
|
||||||
// Note: we do this before Init() in case it attempts to call these handlers
|
// Note: we do this before Init() in case it attempts to call these handlers
|
||||||
// TODO: move this into the Init() routine
|
// TODO: move this into the Init() routine
|
||||||
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
||||||
#endif
|
#endif
|
||||||
//cTWInit twInit( argv[0] );
|
//cTWInit twInit( argv[0] );
|
||||||
|
|
|
@ -99,7 +99,7 @@ void tw_terminate_handler()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
void tw_unexpected_handler()
|
void tw_unexpected_handler()
|
||||||
{
|
{
|
||||||
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
||||||
|
@ -132,7 +132,7 @@ int __cdecl _tmain(int argc, const TCHAR* argv[], const TCHAR* envp[])
|
||||||
// Note: we do this before Init() in case it attempts to call these handlers
|
// Note: we do this before Init() in case it attempts to call these handlers
|
||||||
// TODO: move this into the Init() routine
|
// TODO: move this into the Init() routine
|
||||||
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
||||||
#endif
|
#endif
|
||||||
// Initialization
|
// Initialization
|
||||||
|
|
|
@ -762,9 +762,7 @@ cTWUtil::CreatePrivateKey(cKeyFile& keyFile, const WCHAR16* usePassphrase, KeyTy
|
||||||
|
|
||||||
passphrase = usePassphrase;
|
passphrase = usePassphrase;
|
||||||
|
|
||||||
#ifndef WORDS_BIGENDIAN
|
TSS_SwapBytes(passphrase);
|
||||||
passphrase.swapbytes();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pPrivateKey = keyFile.GetPrivateKey((int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16));
|
pPrivateKey = keyFile.GetPrivateKey((int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16));
|
||||||
|
|
||||||
|
@ -804,9 +802,7 @@ cTWUtil::CreatePrivateKey(cKeyFile& keyFile, const WCHAR16* usePassphrase, KeyTy
|
||||||
// sleep to hinder brute force (dictionary, etc.) attacks
|
// sleep to hinder brute force (dictionary, etc.) attacks
|
||||||
iFSServices::GetInstance()->Sleep(nSecs);
|
iFSServices::GetInstance()->Sleep(nSecs);
|
||||||
|
|
||||||
#ifndef WORDS_BIGENDIAN
|
TSS_SwapBytes(passphrase);
|
||||||
passphrase.swapbytes();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pPrivateKey = keyFile.GetPrivateKey((int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16));
|
pPrivateKey = keyFile.GetPrivateKey((int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16));
|
||||||
|
|
||||||
|
@ -840,9 +836,7 @@ void cTWUtil::CreatePrivateKey(
|
||||||
|
|
||||||
passphrase = usePassphrase;
|
passphrase = usePassphrase;
|
||||||
|
|
||||||
#ifndef WORDS_BIGENDIAN
|
TSS_SwapBytes(passphrase);
|
||||||
passphrase.swapbytes();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (proxy.AquireKey(keyFile, (int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16)))
|
if (proxy.AquireKey(keyFile, (int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16)))
|
||||||
return;
|
return;
|
||||||
|
@ -880,9 +874,7 @@ void cTWUtil::CreatePrivateKey(
|
||||||
// sleep to hinder brute force (dictionary, etc.) attacks
|
// sleep to hinder brute force (dictionary, etc.) attacks
|
||||||
iFSServices::GetInstance()->Sleep(nSecs);
|
iFSServices::GetInstance()->Sleep(nSecs);
|
||||||
|
|
||||||
#ifndef WORDS_BIGENDIAN
|
TSS_SwapBytes(passphrase);
|
||||||
passphrase.swapbytes();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (proxy.AquireKey(keyFile, (int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16)))
|
if (proxy.AquireKey(keyFile, (int8_t*)passphrase.data(), passphrase.length() * sizeof(WCHAR16)))
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -130,9 +130,7 @@ static void GeneratePublicPrivateKeys(void* pParams, const cElGamalSig::KeySize
|
||||||
|
|
||||||
bool GenerateKey(const TCHAR* keyPath, wc16_string passphrase, const cElGamalSig::KeySize key_size)
|
bool GenerateKey(const TCHAR* keyPath, wc16_string passphrase, const cElGamalSig::KeySize key_size)
|
||||||
{
|
{
|
||||||
#ifndef WORDS_BIGENDIAN
|
TSS_SwapBytes(passphrase);
|
||||||
passphrase.swapbytes();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
// test reading in the keys
|
// test reading in the keys
|
||||||
|
|
|
@ -66,7 +66,7 @@ void tw_terminate_handler()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
void tw_unexpected_handler()
|
void tw_unexpected_handler()
|
||||||
{
|
{
|
||||||
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
||||||
|
@ -95,7 +95,7 @@ int __cdecl _tmain(int argc, const TCHAR* argv[], const TCHAR* envp[])
|
||||||
// Note: we do this before Init() in case it attempts to call these handlers
|
// Note: we do this before Init() in case it attempts to call these handlers
|
||||||
// TODO: move this into the Init() routine
|
// TODO: move this into the Init() routine
|
||||||
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
||||||
#endif
|
#endif
|
||||||
twInit.Init(argv[0]);
|
twInit.Init(argv[0]);
|
||||||
|
|
|
@ -681,7 +681,7 @@ void cParserUtil::CreatePropVector(const TSTRING& strPropListC, class cFCOPropVe
|
||||||
TSTRING strPropList = strPropListC;
|
TSTRING strPropList = strPropListC;
|
||||||
|
|
||||||
// C++17 removes std::ptr_fun, so use a lambda where available
|
// C++17 removes std::ptr_fun, so use a lambda where available
|
||||||
#if __cplusplus < 201103L
|
#if !USE_LAMBDAS
|
||||||
strPropList.erase(std::remove_if(strPropList.begin(), strPropList.end(),
|
strPropList.erase(std::remove_if(strPropList.begin(), strPropList.end(),
|
||||||
std::ptr_fun<int, int>(std::isspace)), strPropList.end());
|
std::ptr_fun<int, int>(std::isspace)), strPropList.end());
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -75,7 +75,7 @@ void tw_terminate_handler()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exception specifications removed as a misfeature in C++17
|
// Exception specifications removed as a misfeature in C++17
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
void tw_unexpected_handler()
|
void tw_unexpected_handler()
|
||||||
{
|
{
|
||||||
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
||||||
|
@ -105,7 +105,7 @@ int __cdecl _tmain(int argc, const TCHAR* argv[])
|
||||||
// TODO: move this into the Init() routine
|
// TODO: move this into the Init() routine
|
||||||
|
|
||||||
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,7 @@ void TestCharUtilBasic()
|
||||||
CheckChars("fo\x23 54");
|
CheckChars("fo\x23 54");
|
||||||
|
|
||||||
// Test case requires support for Unicode escape sequences
|
// Test case requires support for Unicode escape sequences
|
||||||
#if __cplusplus >= 201103L
|
#if USE_UNICODE_ESCAPES
|
||||||
if (localeIsUtf8())
|
if (localeIsUtf8())
|
||||||
CheckChars("\U0001F408", 4); //Cat emoji, if UTF-8
|
CheckChars("\U0001F408", 4); //Cat emoji, if UTF-8
|
||||||
else
|
else
|
||||||
|
|
|
@ -431,7 +431,7 @@ void tw_terminate_handler()
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
void tw_unexpected_handler()
|
void tw_unexpected_handler()
|
||||||
{
|
{
|
||||||
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
fputs("### Internal Error.\n### Unexpected Exception Handler called.\n### Exiting...\n", stderr);
|
||||||
|
@ -451,7 +451,7 @@ int _tmain(int argc, TCHAR** argv)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
EXCEPTION_NAMESPACE set_terminate(tw_terminate_handler);
|
||||||
#if __cplusplus < 201703L
|
#if USE_UNEXPECTED
|
||||||
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
EXCEPTION_NAMESPACE set_unexpected(tw_unexpected_handler);
|
||||||
#endif
|
#endif
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
|
|
|
@ -116,9 +116,9 @@ void TestWchar16()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
b.swapbytes();
|
tss::swapbytes(b);
|
||||||
TEST(memcmp(a.data(), STRING1, 4) == 0);
|
TEST(memcmp(a.data(), STRING1, 4) == 0);
|
||||||
b.swapbytes();
|
tss::swapbytes(b);
|
||||||
TEST(memcmp(b.data(), STRING1, 4) == 0);
|
TEST(memcmp(b.data(), STRING1, 4) == 0);
|
||||||
//#endif // IS_UNIX
|
//#endif // IS_UNIX
|
||||||
|
|
||||||
|
@ -129,3 +129,4 @@ void RegisterSuite_Wchar16()
|
||||||
{
|
{
|
||||||
RegisterTest("Wchar16", "Basic", TestWchar16);
|
RegisterTest("Wchar16", "Basic", TestWchar16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue