⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printf_traits.hpp

📁 新版本TR1的stl
💻 HPP
📖 第 1 页 / 共 2 页
字号:
    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 + -