Skip to content

Commit

Permalink
Merge efaf6de into f6279f6
Browse files Browse the repository at this point in the history
  • Loading branch information
srz-zumix committed May 20, 2020
2 parents f6279f6 + efaf6de commit 523d3ea
Show file tree
Hide file tree
Showing 51 changed files with 1,120 additions and 688 deletions.
2 changes: 1 addition & 1 deletion .ci/azure_pipelines/template-make-nofeature-test.yml
Expand Up @@ -33,5 +33,5 @@ jobs:
steps:
- template: template-make-test-steps.yml
parameters:
options: ${{ parameters.options }} DEFS+=-D${NOFEATURE_CONFIG}
options: ${{ parameters.options }} DEFS+=-D${NOFEATURE_CONFIG} STDFLAG=-std=c++98
package_name: "${{ parameters.name }}-${NOFEATURE_CONFIG}"
38 changes: 19 additions & 19 deletions include/impl/iutest_charcode.ipp
Expand Up @@ -6,7 +6,7 @@
*
* @author t.shirayanagi
* @par copyright
* Copyright (C) 2011-2019, Takazumi Shirayanagi\n
* Copyright (C) 2011-2020, Takazumi Shirayanagi\n
* This software is released under the new BSD License,
* see LICENSE
*/
Expand Down Expand Up @@ -137,7 +137,7 @@ IUTEST_IPP_INLINE ::std::string IUTEST_ATTRIBUTE_UNUSED_ UTF8ToSJIS(const ::std:
}
#endif

IUTEST_IPP_INLINE ::std::string IUTEST_ATTRIBUTE_UNUSED_ WideStringToUTF8(const wchar_t* str, int num)
IUTEST_IPP_INLINE ::std::string IUTEST_ATTRIBUTE_UNUSED_ AnyStringToUTF8(const wchar_t* str, int num)
{
IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_BEGIN()
if(num == -1)
Expand Down Expand Up @@ -171,7 +171,7 @@ IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_BEGIN()
IUTEST_PRAGMA_CONSTEXPR_CALLED_AT_RUNTIME_WARN_DISABLE_END()
}

IUTEST_IPP_INLINE ::std::string IUTEST_ATTRIBUTE_UNUSED_ WideStringToMultiByteString(const wchar_t* str, int num)
IUTEST_IPP_INLINE ::std::string IUTEST_ATTRIBUTE_UNUSED_ AnyStringToMultiByteString(const wchar_t* str, int num)
{
IUTEST_UNUSED_VAR(num);
#if defined(IUTEST_OS_WINDOWS) && IUTEST_MBS_CODE == IUTEST_MBS_CODE_WINDOWS31J
Expand All @@ -180,12 +180,14 @@ IUTEST_IPP_INLINE ::std::string IUTEST_ATTRIBUTE_UNUSED_ WideStringToMultiByteSt
const size_t length = wcslen(str) * MB_CUR_MAX + 1;
char* mbs = new char [length];
IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN()
if( wcstombs(mbs, str, length) == static_cast<size_t>(-1))
const size_t written = wcstombs(mbs, str, length - 1);
if( written == static_cast<size_t>(-1))
{
delete [] mbs;
return "(convert error)";
return ToHexString(str, num);
}
IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END()
mbs[written] = '\0';
::std::string ret = mbs;
delete [] mbs;
return ret;
Expand All @@ -194,7 +196,7 @@ IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END()

#if IUTEST_HAS_CHAR16_T

IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ WideStringToUTF8(const char16_t* str, int num)
IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ AnyStringToUTF8(const char16_t* str, int num)
{
#if IUTEST_HAS_CXX_HDR_CUCHAR
IUTEST_UNUSED_VAR(num);
Expand Down Expand Up @@ -233,15 +235,15 @@ IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END()
#else
IUTEST_PRAGMA_WARN_PUSH()
IUTEST_PRAGMA_WARN_CAST_ALIGN()
return WideStringToUTF8(reinterpret_cast<const wchar_t*>(str), num);
return AnyStringToUTF8(reinterpret_cast<const wchar_t*>(str), num);
IUTEST_PRAGMA_WARN_POP()
#endif
}

IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ WideStringToMultiByteString(const char16_t* str, int num)
IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ AnyStringToMultiByteString(const char16_t* str, int num)
{
#if defined(_MSC_VER)
return UTF8ToSJIS(WideStringToUTF8(str, num));
return UTF8ToSJIS(AnyStringToUTF8(str, num));
#elif IUTEST_HAS_CXX_HDR_CODECVT
IUTEST_UNUSED_VAR(num);
return CodeConvert<char16_t, char, ::std::mbstate_t>(str);
Expand Down Expand Up @@ -280,19 +282,18 @@ IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN()
IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END()
return ret;
#else
return WideStringToMultiByteString(reinterpret_cast<const wchar_t*>(str), num);
return AnyStringToMultiByteString(reinterpret_cast<const wchar_t*>(str), num);
#endif
}

#endif

#if IUTEST_HAS_CHAR32_T

IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ WideStringToUTF8(const char32_t* str, int num)
IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ AnyStringToUTF8(const char32_t* str, int num)
{
IUTEST_UNUSED_VAR(num);
#if IUTEST_HAS_CXX_HDR_CUCHAR
const size_t length = ::std::char_traits<char32_t>::length(str);
const size_t length = num < 0 ? ::std::char_traits<char32_t>::length(str) : num;
char mbs[6];
mbstate_t state = {};
IUTEST_CHECK_(mbsinit(&state) != 0);
Expand All @@ -311,20 +312,19 @@ IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_BEGIN()
IUTEST_PRAGMA_CRT_SECURE_WARN_DISABLE_END()
return ret;
#else
IUTEST_UNUSED_VAR(str);
return "(convert error)";
return ToHexString(str, num);
#endif
}

IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ WideStringToMultiByteString(const char32_t* str, int num)
IUTEST_IPP_INLINE::std::string IUTEST_ATTRIBUTE_UNUSED_ AnyStringToMultiByteString(const char32_t* str, int num)
{
#if defined(_MSC_VER)
return UTF8ToSJIS(WideStringToUTF8(str, num));
return UTF8ToSJIS(AnyStringToUTF8(str, num));
#elif IUTEST_HAS_CXX_HDR_CODECVT
IUTEST_UNUSED_VAR(num);
return CodeConvert<char32_t, char, ::std::mbstate_t>(str);
#else
return WideStringToUTF8(str, num);
return AnyStringToUTF8(str, num);
#endif
}

Expand Down Expand Up @@ -366,7 +366,7 @@ IUTEST_IPP_INLINE ::std::string IUTEST_ATTRIBUTE_UNUSED_ MultiByteStringToUTF8(c
const int len = iu_mbtowc(&wc, p, MB_CUR_MAX);
if( len > 1 )
{
str += WideStringToUTF8(&wc, 1);
str += AnyStringToUTF8(&wc, 1);
p += len;
}
else
Expand Down
2 changes: 1 addition & 1 deletion include/impl/iutest_default_xml_generator.ipp
Expand Up @@ -361,7 +361,7 @@ IUTEST_IPP_INLINE ::std::string DefaultXmlGeneratorListener::EscapeXml(const cha
const int len = detail::iu_mbtowc(&wc, src, MB_CUR_MAX);
if( len > 1 )
{
msg += detail::WideStringToUTF8(&wc, 1);
msg += detail::AnyStringToUTF8(&wc, 1);
src += len-1;
}
else if( IsValidXmlCharacter(s) )
Expand Down
36 changes: 24 additions & 12 deletions include/internal/iutest_charcode.hpp
Expand Up @@ -6,7 +6,7 @@
*
* @author t.shirayanagi
* @par copyright
* Copyright (C) 2011-2017, Takazumi Shirayanagi\n
* Copyright (C) 2011-2020, Takazumi Shirayanagi\n
* This software is released under the new BSD License,
* see LICENSE
*/
Expand All @@ -33,21 +33,33 @@ namespace detail

//======================================================================
// declare

/**
* @brief マルチバイト文字列をそのまま返す
* @param [in] str = 入力
* @param [in] num = 入力バッファサイズ
* @return マルチバイト文字列
*/
inline ::std::string AnyStringToMultiByteString(const char* str, int num = -1)
{
return num < 0 ? str : ::std::string(str, num);
}

/**
* @brief ワイド文字列からUTF8へ変換
* @param [in] str = 入力
* @param [in] num = 入力バッファサイズ
* @return UTF8 文字列
*/
::std::string WideStringToUTF8(const wchar_t* str, int num=-1);
::std::string AnyStringToUTF8(const wchar_t* str, int num=-1);

/**
* @brief ワイド文字列からマルチバイトへ変換
* @param [in] str = 入力
* @param [in] num = 入力バッファサイズ
* @return マルチバイト文字列
*/
::std::string WideStringToMultiByteString(const wchar_t* str, int num=-1);
::std::string AnyStringToMultiByteString(const wchar_t* str, int num=-1);

#if IUTEST_HAS_CHAR16_T

Expand All @@ -57,15 +69,15 @@ ::std::string WideStringToMultiByteString(const wchar_t* str, int num=-1);
* @param [in] num = 入力バッファサイズ
* @return マルチバイト文字列
*/
::std::string WideStringToUTF8(const char16_t* str, int num=-1);
::std::string AnyStringToUTF8(const char16_t* str, int num=-1);

/**
* @brief ワイド文字列からマルチバイトへ変換
* @param [in] str = 入力
* @param [in] num = 入力バッファサイズ
* @return マルチバイト文字列
*/
::std::string WideStringToMultiByteString(const char16_t* str, int num=-1);
::std::string AnyStringToMultiByteString(const char16_t* str, int num=-1);

#endif

Expand All @@ -77,15 +89,15 @@ ::std::string WideStringToMultiByteString(const char16_t* str, int num=-1);
* @param [in] num = 入力バッファサイズ
* @return マルチバイト文字列
*/
::std::string WideStringToUTF8(const char32_t* str, int num = -1);
::std::string AnyStringToUTF8(const char32_t* str, int num = -1);

/**
* @brief ワイド文字列からマルチバイトへ変換
* @param [in] str = 入力
* @param [in] num = 入力バッファサイズ
* @return マルチバイト文字列
*/
::std::string WideStringToMultiByteString(const char32_t* str, int num = -1);
::std::string AnyStringToMultiByteString(const char32_t* str, int num = -1);

#endif

Expand All @@ -106,17 +118,17 @@ ::std::string MultiByteStringToUTF8(const char* src, int num=-1);

/**
* @brief ワイド文字列から ::std::string へ変換
* @param [in] wide_c_str = 入力
* @param [in] any_c_str = 入力
* @return string
*/
template<typename CharType>
::std::string ShowWideCString(const CharType* wide_c_str)
::std::string ShowAnyCString(const CharType* any_c_str)
{
if( wide_c_str == NULL )
if( any_c_str == NULL )
{
return kStrings::Null;
}
return WideStringToMultiByteString(wide_c_str);
return AnyStringToMultiByteString(any_c_str);
}

#if IUTEST_HAS_CXX_HDR_CODECVT
Expand Down Expand Up @@ -163,7 +175,7 @@ struct wcs_to_mbs_ptr
::std::string m_arg;
const char* ptr(const wchar_t* arg)
{
m_arg = ShowWideCString(arg);
m_arg = ShowAnyCString(arg);
return m_arg.c_str();
}
};
Expand Down
2 changes: 1 addition & 1 deletion include/internal/iutest_internal_defs.hpp
Expand Up @@ -18,7 +18,7 @@
//======================================================================
// include
#include "../iutest_defs.hpp"
#include "iutest_string.hpp"
#include "iutest_string_stream.hpp"
#include "iutest_string_view.hpp"
#include "iutest_type_traits.hpp"
#include "iutest_compatible_defs.hpp"
Expand Down
52 changes: 14 additions & 38 deletions include/internal/iutest_message.hpp
Expand Up @@ -6,7 +6,7 @@
*
* @author t.shirayanagi
* @par copyright
* Copyright (C) 2011-2019, Takazumi Shirayanagi\n
* Copyright (C) 2011-2020, Takazumi Shirayanagi\n
* This software is released under the new BSD License,
* see LICENSE
*/
Expand All @@ -18,6 +18,7 @@
//======================================================================
// include
#include "../iutest_env.hpp"
#include "../iutest_printers.hpp"

namespace iutest {
namespace detail
Expand Down Expand Up @@ -52,54 +53,29 @@ class iuStreamMessage
template<typename T>
iuStreamMessage& operator << (const T& value)
{
#if !defined(IUTEST_NO_ARGUMENT_DEPENDENT_LOOKUP)
m_stream << PrintToString(value);
#else
m_stream << value;
#endif
return *this;
}
#if !defined(IUTEST_NO_FUNCTION_TEMPLATE_ORDERING)
template<typename T>
iuStreamMessage& operator << (T* const& value)

#if !defined(IUTEST_NO_ARGUMENT_DEPENDENT_LOOKUP)
template<typename T, size_t SIZE>
iuStreamMessage& operator << (const T(&value)[SIZE])
{
if( value == NULL )
{
m_stream << kStrings::Null;
}
else
{
m_stream << value;
}
m_stream << PrintToString(value);
return *this;
}
#endif
#else
iuStreamMessage& operator << (bool b)
{
m_stream << (b ? "true" : "false");
return *this;
}
iuStreamMessage& operator << (char* str)
{
append(str);
return *this;
}
iuStreamMessage& operator << (const char* str)
{
append(str);
return *this;
}
iuStreamMessage& operator << (wchar_t* str)
{
m_stream << ShowWideCString(str);
return *this;
}
iuStreamMessage& operator << (const wchar_t* str)
{
m_stream << ShowWideCString(str);
return *this;
}
iuStreamMessage& operator << (const iuStreamMessage& message)
{
m_stream << message.GetString();
return *this;
}
#endif

#if IUTEST_HAS_IOMANIP
iuStreamMessage& operator << (iu_basic_iomanip val)
{
Expand Down
2 changes: 2 additions & 0 deletions include/internal/iutest_option_message.hpp
Expand Up @@ -181,7 +181,9 @@ inline void iuOptionMessage::ShowSpec()
IIUT_SHOW_MACRO(IUTEST_HAS_AUTO);
IIUT_SHOW_MACRO(IUTEST_HAS_CATCH_SEH_EXCEPTION_ASSERTION);
IIUT_SHOW_MACRO(IUTEST_HAS_CHAR16_T);
IIUT_SHOW_MACRO(IUTEST_HAS_CHAR16_T_PRINTABLE);
IIUT_SHOW_MACRO(IUTEST_HAS_CHAR32_T);
IIUT_SHOW_MACRO(IUTEST_HAS_CHAR32_T_PRINTABLE);
IIUT_SHOW_MACRO(IUTEST_HAS_CLOCK);
IIUT_SHOW_MACRO(IUTEST_HAS_CONCEPTS);
IIUT_SHOW_MACRO(IUTEST_HAS_CONSTEXPR);
Expand Down
1 change: 1 addition & 0 deletions include/internal/iutest_stdlib.hpp
Expand Up @@ -31,6 +31,7 @@
# include <stdint.h>
#endif
#include <cstdlib>
#include <cstddef>
#include <limits>

// <version> header
Expand Down

0 comments on commit 523d3ea

Please sign in to comment.