/* * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "StringFormat.h" #include namespace Trinity::Impl { std::string StringVFormat(FormatStringView fmt, FormatArgs args) noexcept try { return fmt::vformat(fmt, args); } catch (std::exception const& formatError) { return fmt::format(R"(An error occurred formatting string "{}" : {})", fmt, formatError.what()); } void StringVFormatToImpl(fmt::detail::buffer& buffer, FormatStringView fmt, FormatArgs args) noexcept try { fmt::detail::vformat_to(buffer, fmt, args, {}); } catch (std::exception const& formatError) { fmt::detail::vformat_to(buffer, FormatStringView(R"(An error occurred formatting string "{}" : {})"), MakeFormatArgs(fmt, formatError.what()), {}); } } // explicit template instantiations template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter; template struct TC_COMMON_API fmt::formatter>; template TC_COMMON_API fmt::appender fmt::formatter::format(int const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(unsigned const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(long long const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(unsigned long long const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(bool const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(char const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(float const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(double const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(long double const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(char const* const&, format_context&) const; template TC_COMMON_API fmt::appender fmt::formatter::format(void const* const&, format_context &) const; template TC_COMMON_API fmt::appender fmt::formatter::format(string_view const&, format_context &) const;