From f5ab6fb5e8be7b73e6003d4145081d5e0c0ce287 Mon Sep 17 00:00:00 2001 From: Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> Date: Wed, 27 Dec 2023 00:32:01 +0000 Subject: Folder restructuring from primedev (#624) Copies of over the primedev folder structure for easier cherry-picking of further changes Co-authored-by: F1F7Y --- thirdparty/spdlog/fmt/bundled/ranges.h | 396 --------------------------------- 1 file changed, 396 deletions(-) delete mode 100644 thirdparty/spdlog/fmt/bundled/ranges.h (limited to 'thirdparty/spdlog/fmt/bundled/ranges.h') diff --git a/thirdparty/spdlog/fmt/bundled/ranges.h b/thirdparty/spdlog/fmt/bundled/ranges.h deleted file mode 100644 index 632f0494..00000000 --- a/thirdparty/spdlog/fmt/bundled/ranges.h +++ /dev/null @@ -1,396 +0,0 @@ -// Formatting library for C++ - experimental range support -// -// Copyright (c) 2012 - present, Victor Zverovich -// All rights reserved. -// -// For the license information refer to format.h. -// -// Copyright (c) 2018 - present, Remotion (Igor Schulz) -// All Rights Reserved -// {fmt} support for ranges, containers and types tuple interface. - -#ifndef FMT_RANGES_H_ -#define FMT_RANGES_H_ - -#include -#include - -#include "format.h" - -// output only up to N items from the range. -#ifndef FMT_RANGE_OUTPUT_LENGTH_LIMIT -# define FMT_RANGE_OUTPUT_LENGTH_LIMIT 256 -#endif - -FMT_BEGIN_NAMESPACE - -template struct formatting_base { - template - FMT_CONSTEXPR auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { - return ctx.begin(); - } -}; - -template -struct formatting_range : formatting_base { - static FMT_CONSTEXPR_DECL const size_t range_length_limit = - FMT_RANGE_OUTPUT_LENGTH_LIMIT; // output only up to N items from the - // range. - Char prefix; - Char delimiter; - Char postfix; - formatting_range() : prefix('{'), delimiter(','), postfix('}') {} - static FMT_CONSTEXPR_DECL const bool add_delimiter_spaces = true; - static FMT_CONSTEXPR_DECL const bool add_prepostfix_space = false; -}; - -template -struct formatting_tuple : formatting_base { - Char prefix; - Char delimiter; - Char postfix; - formatting_tuple() : prefix('('), delimiter(','), postfix(')') {} - static FMT_CONSTEXPR_DECL const bool add_delimiter_spaces = true; - static FMT_CONSTEXPR_DECL const bool add_prepostfix_space = false; -}; - -namespace detail { - -template -OutputIterator copy(const RangeT& range, OutputIterator out) { - for (auto it = range.begin(), end = range.end(); it != end; ++it) - *out++ = *it; - return out; -} - -template -OutputIterator copy(const char* str, OutputIterator out) { - while (*str) *out++ = *str++; - return out; -} - -template -OutputIterator copy(char ch, OutputIterator out) { - *out++ = ch; - return out; -} - -/// Return true value if T has std::string interface, like std::string_view. -template class is_like_std_string { - template - static auto check(U* p) - -> decltype((void)p->find('a'), p->length(), (void)p->data(), int()); - template static void check(...); - - public: - static FMT_CONSTEXPR_DECL const bool value = - is_string::value || !std::is_void(nullptr))>::value; -}; - -template -struct is_like_std_string> : std::true_type {}; - -template struct conditional_helper {}; - -template struct is_range_ : std::false_type {}; - -#if !FMT_MSC_VER || FMT_MSC_VER > 1800 -template -struct is_range_< - T, conditional_t().begin()), - decltype(std::declval().end())>, - void>> : std::true_type {}; -#endif - -/// tuple_size and tuple_element check. -template class is_tuple_like_ { - template - static auto check(U* p) -> decltype(std::tuple_size::value, int()); - template static void check(...); - - public: - static FMT_CONSTEXPR_DECL const bool value = - !std::is_void(nullptr))>::value; -}; - -// Check for integer_sequence -#if defined(__cpp_lib_integer_sequence) || FMT_MSC_VER >= 1900 -template -using integer_sequence = std::integer_sequence; -template using index_sequence = std::index_sequence; -template using make_index_sequence = std::make_index_sequence; -#else -template struct integer_sequence { - using value_type = T; - - static FMT_CONSTEXPR size_t size() { return sizeof...(N); } -}; - -template using index_sequence = integer_sequence; - -template -struct make_integer_sequence : make_integer_sequence {}; -template -struct make_integer_sequence : integer_sequence {}; - -template -using make_index_sequence = make_integer_sequence; -#endif - -template -void for_each(index_sequence, Tuple&& tup, F&& f) FMT_NOEXCEPT { - using std::get; - // using free function get(T) now. - const int _[] = {0, ((void)f(get(tup)), 0)...}; - (void)_; // blocks warnings -} - -template -FMT_CONSTEXPR make_index_sequence::value> get_indexes( - T const&) { - return {}; -} - -template void for_each(Tuple&& tup, F&& f) { - const auto indexes = get_indexes(tup); - for_each(indexes, std::forward(tup), std::forward(f)); -} - -template -using value_type = remove_cvref_t().begin())>; - -template ::type>::value)> -FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const Arg&) { - return add_space ? " {}" : "{}"; -} - -template ::type>::value)> -FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const Arg&) { - return add_space ? " \"{}\"" : "\"{}\""; -} - -FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const char*) { - return add_space ? " \"{}\"" : "\"{}\""; -} -FMT_CONSTEXPR const wchar_t* format_str_quoted(bool add_space, const wchar_t*) { - return add_space ? L" \"{}\"" : L"\"{}\""; -} - -FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const char) { - return add_space ? " '{}'" : "'{}'"; -} -FMT_CONSTEXPR const wchar_t* format_str_quoted(bool add_space, const wchar_t) { - return add_space ? L" '{}'" : L"'{}'"; -} -} // namespace detail - -template struct is_tuple_like { - static FMT_CONSTEXPR_DECL const bool value = - detail::is_tuple_like_::value && !detail::is_range_::value; -}; - -template -struct formatter::value>> { - private: - // C++11 generic lambda for format() - template struct format_each { - template void operator()(const T& v) { - if (i > 0) { - if (formatting.add_prepostfix_space) { - *out++ = ' '; - } - out = detail::copy(formatting.delimiter, out); - } - out = format_to(out, - detail::format_str_quoted( - (formatting.add_delimiter_spaces && i > 0), v), - v); - ++i; - } - - formatting_tuple& formatting; - size_t& i; - typename std::add_lvalue_reference().out())>::type out; - }; - - public: - formatting_tuple formatting; - - template - FMT_CONSTEXPR auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { - return formatting.parse(ctx); - } - - template - auto format(const TupleT& values, FormatContext& ctx) -> decltype(ctx.out()) { - auto out = ctx.out(); - size_t i = 0; - detail::copy(formatting.prefix, out); - - detail::for_each(values, format_each{formatting, i, out}); - if (formatting.add_prepostfix_space) { - *out++ = ' '; - } - detail::copy(formatting.postfix, out); - - return ctx.out(); - } -}; - -template struct is_range { - static FMT_CONSTEXPR_DECL const bool value = - detail::is_range_::value && !detail::is_like_std_string::value && - !std::is_convertible>::value && - !std::is_constructible, T>::value; -}; - -template -struct formatter< - T, Char, - enable_if_t::value -// Workaround a bug in MSVC 2017 and earlier. -#if !FMT_MSC_VER || FMT_MSC_VER >= 1927 - && - (has_formatter, format_context>::value || - detail::has_fallback_formatter, - format_context>::value) -#endif - >> { - formatting_range formatting; - - template - FMT_CONSTEXPR auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { - return formatting.parse(ctx); - } - - template - typename FormatContext::iterator format(const T& values, FormatContext& ctx) { - auto out = detail::copy(formatting.prefix, ctx.out()); - size_t i = 0; - auto it = values.begin(); - auto end = values.end(); - for (; it != end; ++it) { - if (i > 0) { - if (formatting.add_prepostfix_space) *out++ = ' '; - out = detail::copy(formatting.delimiter, out); - } - out = format_to(out, - detail::format_str_quoted( - (formatting.add_delimiter_spaces && i > 0), *it), - *it); - if (++i > formatting.range_length_limit) { - out = format_to(out, " ... "); - break; - } - } - if (formatting.add_prepostfix_space) *out++ = ' '; - return detail::copy(formatting.postfix, out); - } -}; - -template struct tuple_arg_join : detail::view { - const std::tuple& tuple; - basic_string_view sep; - - tuple_arg_join(const std::tuple& t, basic_string_view s) - : tuple{t}, sep{s} {} -}; - -template -struct formatter, Char> { - template - FMT_CONSTEXPR auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { - return ctx.begin(); - } - - template - typename FormatContext::iterator format( - const tuple_arg_join& value, FormatContext& ctx) { - return format(value, ctx, detail::make_index_sequence{}); - } - - private: - template - typename FormatContext::iterator format( - const tuple_arg_join& value, FormatContext& ctx, - detail::index_sequence) { - return format_args(value, ctx, std::get(value.tuple)...); - } - - template - typename FormatContext::iterator format_args( - const tuple_arg_join&, FormatContext& ctx) { - // NOTE: for compilers that support C++17, this empty function instantiation - // can be replaced with a constexpr branch in the variadic overload. - return ctx.out(); - } - - template - typename FormatContext::iterator format_args( - const tuple_arg_join& value, FormatContext& ctx, - const Arg& arg, const Args&... args) { - using base = formatter::type, Char>; - auto out = ctx.out(); - out = base{}.format(arg, ctx); - if (sizeof...(Args) > 0) { - out = std::copy(value.sep.begin(), value.sep.end(), out); - ctx.advance_to(out); - return format_args(value, ctx, args...); - } - return out; - } -}; - -/** - \rst - Returns an object that formats `tuple` with elements separated by `sep`. - - **Example**:: - - std::tuple t = {1, 'a'}; - fmt::print("{}", fmt::join(t, ", ")); - // Output: "1, a" - \endrst - */ -template -FMT_CONSTEXPR tuple_arg_join join(const std::tuple& tuple, - string_view sep) { - return {tuple, sep}; -} - -template -FMT_CONSTEXPR tuple_arg_join join(const std::tuple& tuple, - wstring_view sep) { - return {tuple, sep}; -} - -/** - \rst - Returns an object that formats `initializer_list` with elements separated by - `sep`. - - **Example**:: - - fmt::print("{}", fmt::join({1, 2, 3}, ", ")); - // Output: "1, 2, 3" - \endrst - */ -template -arg_join join(std::initializer_list list, - string_view sep) { - return join(std::begin(list), std::end(list), sep); -} - -template -arg_join join(std::initializer_list list, - wstring_view sep) { - return join(std::begin(list), std::end(list), sep); -} - -FMT_END_NAMESPACE - -#endif // FMT_RANGES_H_ -- cgit v1.2.3