📄 printf_traits.hpp
字号:
enum
{
size_min = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT8_MIN))
, size_max = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT8_MAX))
, size = (size_min < size_max) ? size_max : size_min
};
static ss_char_a_t const* format_a()
{
return "%u";
}
static ss_char_w_t const* format_w()
{
return L"%u";
}
};
/* s/uint16 */
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits_fixed<ss_sint16_t>
{
enum
{
size_min = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_SINT16_MIN))
, size_max = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_SINT16_MAX))
, size = (size_min < size_max) ? size_max : size_min
};
static ss_char_a_t const* format_a()
{
return "%d";
}
static ss_char_w_t const* format_w()
{
return L"%d";
}
};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits_fixed<ss_uint16_t>
{
enum
{
size_min = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT16_MIN))
, size_max = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT16_MAX))
, size = (size_min < size_max) ? size_max : size_min
};
static ss_char_a_t const* format_a()
{
return "%u";
}
static ss_char_w_t const* format_w()
{
return L"%u";
}
};
/* s/uint32 */
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits_fixed<ss_sint32_t>
{
enum
{
size_min = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_SINT32_MIN))
, size_max = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_SINT32_MAX))
, size = (size_min < size_max) ? size_max : size_min
};
static ss_char_a_t const* format_a()
{
return "%ld";
}
static ss_char_w_t const* format_w()
{
return L"%ld";
}
};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits_fixed<ss_uint32_t>
{
enum
{
size_min = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT32_MIN))
, size_max = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT32_MAX))
, size = (size_min < size_max) ? size_max : size_min
};
static ss_char_a_t const* format_a()
{
return "%lu";
}
static ss_char_w_t const* format_w()
{
return L"%lu";
}
};
#ifdef STLSOFT_CF_64BIT_INT_SUPPORT
/* s/uint64 */
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits_fixed<ss_sint64_t>
{
enum
{
size_min = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_SINT64_MIN))
, size_max = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_SINT64_MAX))
, size = (size_min < size_max) ? size_max : size_min
};
static ss_char_a_t const* format_a()
{
#if defined(STLSOFT_CF_64_BIT_PRINTF_USES_I64)
return "%I64d";
#elif defined(STLSOFT_CF_64_BIT_PRINTF_USES_LL)
return "%lld";
#else
# error Further compiler discrimination is required
#endif /* printf-64 */
}
static ss_char_w_t const* format_w()
{
#if defined(STLSOFT_CF_64_BIT_PRINTF_USES_I64)
return L"%I64d";
#elif defined(STLSOFT_CF_64_BIT_PRINTF_USES_LL)
return L"%lld";
#else
# error Further compiler discrimination is required
#endif /* printf-64 */
}
};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits_fixed<ss_uint64_t>
{
enum
{
size_min = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT64_MIN))
, size_max = sizeof(___stringise(STLSOFT_PRINTF_TRAITS_UINT64_MAX))
, size = (size_min < size_max) ? size_max : size_min
};
static ss_char_a_t const* format_a()
{
#if defined(STLSOFT_CF_64_BIT_PRINTF_USES_I64)
return "%I64u";
#elif defined(STLSOFT_CF_64_BIT_PRINTF_USES_LL)
return "%llu";
#else
# error Further compiler discrimination is required
#endif /* printf-64 */
}
static ss_char_w_t const* format_w()
{
#if defined(STLSOFT_CF_64_BIT_PRINTF_USES_I64)
return L"%I64u";
#elif defined(STLSOFT_CF_64_BIT_PRINTF_USES_LL)
return L"%llu";
#else
# error Further compiler discrimination is required
#endif /* printf-64 */
}
};
#endif /* STLSOFT_CF_64BIT_INT_SUPPORT */
# endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_sint8_t>
: printf_traits_fixed<ss_sint8_t>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_uint8_t>
: printf_traits_fixed<ss_uint8_t>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_sint16_t>
: printf_traits_fixed<ss_sint16_t>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_uint16_t>
: printf_traits_fixed<ss_uint16_t>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_sint32_t>
: printf_traits_fixed<ss_sint32_t>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_uint32_t>
: printf_traits_fixed<ss_uint32_t>
{};
#ifdef STLSOFT_CF_64BIT_INT_SUPPORT
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_sint64_t>
: printf_traits_fixed<ss_sint64_t>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<ss_uint64_t>
: printf_traits_fixed<ss_uint64_t>
{};
#endif /* STLSOFT_CF_64BIT_INT_SUPPORT */
#ifdef STLSOFT_CF_SHORT_DISTINCT_INT_TYPE
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<short>
: printf_traits_fixed<int_size_traits<sizeof(short)>::signed_type>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<unsigned short>
: printf_traits_fixed<int_size_traits<sizeof(unsigned short)>::unsigned_type>
{};
#endif // STLSOFT_CF_SHORT_DISTINCT_INT_TYPE
#ifdef STLSOFT_CF_INT_DISTINCT_INT_TYPE
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<int>
: printf_traits_fixed<int_size_traits<sizeof(int)>::signed_type>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<unsigned int>
: printf_traits_fixed<int_size_traits<sizeof(unsigned int)>::unsigned_type>
{};
#endif // STLSOFT_CF_INT_DISTINCT_INT_TYPE
#ifdef STLSOFT_CF_LONG_DISTINCT_INT_TYPE
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<long>
: printf_traits_fixed<int_size_traits<sizeof(long)>::signed_type>
{};
STLSOFT_TEMPLATE_SPECIALISATION
struct printf_traits<unsigned long>
: printf_traits_fixed<int_size_traits<sizeof(unsigned long)>::unsigned_type>
{};
#endif // STLSOFT_CF_LONG_DISTINCT_INT_TYPE
#endif /* !STLSOFT_DOCUMENTATION_SKIP_SECTION */
////////////////////////////////////////////////////////////////////////////
// Unit-testing
#ifdef STLSOFT_UNITTEST
# include "./unittest/printf_traits_unittest_.h"
#endif /* STLSOFT_UNITTEST */
/* ////////////////////////////////////////////////////////////////////// */
#ifndef _STLSOFT_NO_NAMESPACE
} // namespace stlsoft
#endif /* _STLSOFT_NO_NAMESPACE */
/* ////////////////////////////////////////////////////////////////////// */
#endif /* !STLSOFT_INCL_STLSOFT_UTIL_HPP_PRINTF_TRAITS */
/* ////////////////////////////////////////////////////////////////////// */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -