diff options
author | Abseil Team <absl-team@google.com> | 2017-12-13T20·02-0800 |
---|---|---|
committer | Titus Winters <titus@google.com> | 2017-12-14T14·04-0500 |
commit | 720c017e30339fd1786ce4aac68bc8559736e53f (patch) | |
tree | e1ee954f7311f39125b93c91303828e27fc5e4cf /absl | |
parent | 5fe41affbaab5b9ad4876a6295c78f21a86d862d (diff) |
Changes imported from Abseil "staging" branch:
- a42e9b454ca8be7d021789cdb9bcada07d3e2d3e Merge pull request #57. by Derek Mauro <dmauro@google.com> - b1e03838f059c034a6489501804d516326246042 Move the long ostream tests into a separate source file u... by Alex Strelnikov <strel@google.com> - 7c56b7dbb05faa7e8653632e00be470331d79cb9 Return reference from absl::InlinedVector::emplace_back(). by Abseil Team <absl-team@google.com> - 85b070822b62688ff348d9ad9cc9e230a851f617 Treat \u or \U followed by Unicode surrogate character as... by Abseil Team <absl-team@google.com> GitOrigin-RevId: a42e9b454ca8be7d021789cdb9bcada07d3e2d3e Change-Id: I7d8fb68ffd7eb4e9e737f21fbed6d56b71985f94
Diffstat (limited to 'absl')
-rw-r--r-- | absl/base/config.h | 2 | ||||
-rw-r--r-- | absl/container/inlined_vector.h | 19 | ||||
-rw-r--r-- | absl/container/inlined_vector_test.cc | 13 | ||||
-rw-r--r-- | absl/debugging/internal/stacktrace_config.h | 2 | ||||
-rw-r--r-- | absl/debugging/internal/stacktrace_powerpc-inl.inc | 2 | ||||
-rw-r--r-- | absl/numeric/BUILD.bazel | 2 | ||||
-rw-r--r-- | absl/numeric/int128_stream_test.cc | 666 | ||||
-rw-r--r-- | absl/numeric/int128_test.cc | 23 | ||||
-rw-r--r-- | absl/numeric/int128_test_unsigned_ostream_cases.inc | 880 | ||||
-rw-r--r-- | absl/strings/escaping.cc | 17 | ||||
-rw-r--r-- | absl/strings/escaping_test.cc | 13 |
11 files changed, 720 insertions, 919 deletions
diff --git a/absl/base/config.h b/absl/base/config.h index fc48be0b8fc1..5802b653baff 100644 --- a/absl/base/config.h +++ b/absl/base/config.h @@ -254,7 +254,7 @@ // POSIX.1-2001. #ifdef ABSL_HAVE_MMAP #error ABSL_HAVE_MMAP cannot be directly set -#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \ +#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \ defined(__ros__) || defined(__native_client__) || defined(__asmjs__) || \ defined(__Fuchsia__) #define ABSL_HAVE_MMAP 1 diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h index e0bb900cbb66..4bf9c18adec4 100644 --- a/absl/container/inlined_vector.h +++ b/absl/container/inlined_vector.h @@ -365,13 +365,14 @@ class InlinedVector { // InlinedVector::emplace_back() // // Constructs and appends an object to the inlined vector. + // + // Returns a reference to the inserted element. template <typename... Args> - void emplace_back(Args&&... args) { + value_type& emplace_back(Args&&... args) { size_type s = size(); assert(s <= capacity()); if (ABSL_PREDICT_FALSE(s == capacity())) { - GrowAndEmplaceBack(std::forward<Args>(args)...); - return; + return GrowAndEmplaceBack(std::forward<Args>(args)...); } assert(s < capacity()); @@ -383,7 +384,7 @@ class InlinedVector { tag().set_inline_size(s + 1); space = inlined_space(); } - Construct(space + s, std::forward<Args>(args)...); + return Construct(space + s, std::forward<Args>(args)...); } // InlinedVector::push_back() @@ -703,26 +704,30 @@ class InlinedVector { } template <typename... Args> - void GrowAndEmplaceBack(Args&&... args) { + value_type& GrowAndEmplaceBack(Args&&... args) { assert(size() == capacity()); const size_type s = size(); Allocation new_allocation(allocator(), 2 * capacity()); - Construct(new_allocation.buffer() + s, std::forward<Args>(args)...); + value_type& new_element = + Construct(new_allocation.buffer() + s, std::forward<Args>(args)...); UninitializedCopy(std::make_move_iterator(data()), std::make_move_iterator(data() + s), new_allocation.buffer()); ResetAllocation(new_allocation, s + 1); + + return new_element; } void InitAssign(size_type n); void InitAssign(size_type n, const value_type& t); template <typename... Args> - void Construct(pointer p, Args&&... args) { + value_type& Construct(pointer p, Args&&... args) { AllocatorTraits::construct(allocator(), p, std::forward<Args>(args)...); + return *p; } template <typename Iter> diff --git a/absl/container/inlined_vector_test.cc b/absl/container/inlined_vector_test.cc index 055bca983cac..8527ba1aa008 100644 --- a/absl/container/inlined_vector_test.cc +++ b/absl/container/inlined_vector_test.cc @@ -393,6 +393,19 @@ TEST(InlinedVectorTest, Noexcept) { absl::InlinedVector<MoveCanThrow, 2>>::value)); } +TEST(InlinedVectorTest, EmplaceBack) { + absl::InlinedVector<std::pair<std::string, int>, 1> v; + + auto& inlined_element = v.emplace_back("answer", 42); + EXPECT_EQ(&inlined_element, &v[0]); + EXPECT_EQ(inlined_element.first, "answer"); + EXPECT_EQ(inlined_element.second, 42); + + auto& allocated_element = v.emplace_back("taxicab", 1729); + EXPECT_EQ(&allocated_element, &v[1]); + EXPECT_EQ(allocated_element.first, "taxicab"); + EXPECT_EQ(allocated_element.second, 1729); +} TEST(IntVec, Insert) { for (int len = 0; len < 20; len++) { diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h index 9bd2a2ab9e72..ed82722b91a6 100644 --- a/absl/debugging/internal/stacktrace_config.h +++ b/absl/debugging/internal/stacktrace_config.h @@ -26,7 +26,7 @@ #error ABSL_STACKTRACE_INL_HEADER cannot be directly set #elif defined(__native_client__) || defined(__APPLE__) || \ defined(__FreeBSD__) || defined(__ANDROID__) || defined(__myriad2__) || \ - defined(asmjs__) || defined(__Fuchsia__) + defined(__asmjs__) || defined(__Fuchsia__) #define ABSL_STACKTRACE_INL_HEADER \ "absl/debugging/internal/stacktrace_unimplemented-inl.inc" diff --git a/absl/debugging/internal/stacktrace_powerpc-inl.inc b/absl/debugging/internal/stacktrace_powerpc-inl.inc index 60a889a9253b..9193e2dba60e 100644 --- a/absl/debugging/internal/stacktrace_powerpc-inl.inc +++ b/absl/debugging/internal/stacktrace_powerpc-inl.inc @@ -48,7 +48,7 @@ static inline void *StacktracePowerPCGetLR(void **sp) { #elif defined(_CALL_SYSV) return *(sp+1); #elif defined(__APPLE__) || defined(__FreeBSD__) || \ - (defined(__linux__) && defined(__PPC64__)) + (defined(__linux__) && defined(__PPC64__)) // This check is in case the compiler doesn't define _CALL_AIX/etc. return *(sp+2); #elif defined(__linux) diff --git a/absl/numeric/BUILD.bazel b/absl/numeric/BUILD.bazel index 26d04774a23c..4a24a879c0f6 100644 --- a/absl/numeric/BUILD.bazel +++ b/absl/numeric/BUILD.bazel @@ -27,8 +27,8 @@ cc_test( name = "int128_test", size = "small", srcs = [ + "int128_stream_test.cc", "int128_test.cc", - "int128_test_unsigned_ostream_cases.inc", ], copts = ABSL_TEST_COPTS, deps = [ diff --git a/absl/numeric/int128_stream_test.cc b/absl/numeric/int128_stream_test.cc new file mode 100644 index 000000000000..09efaad4e7fb --- /dev/null +++ b/absl/numeric/int128_stream_test.cc @@ -0,0 +1,666 @@ +// Copyright 2017 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "absl/numeric/int128.h" + +#include <sstream> +#include <string> + +#include "gtest/gtest.h" + +namespace { + +struct Uint128TestCase { + absl::uint128 value; + std::ios_base::fmtflags flags; + std::streamsize width; + const char* expected; +}; + +constexpr char kFill = '_'; + +std::string StreamFormatToString(std::ios_base::fmtflags flags, + std::streamsize width) { + std::vector<const char*> flagstr; + switch (flags & std::ios::basefield) { + case std::ios::dec: + flagstr.push_back("std::ios::dec"); + break; + case std::ios::oct: + flagstr.push_back("std::ios::oct"); + break; + case std::ios::hex: + flagstr.push_back("std::ios::hex"); + break; + default: // basefield not specified + break; + } + switch (flags & std::ios::adjustfield) { + case std::ios::left: + flagstr.push_back("std::ios::left"); + break; + case std::ios::internal: + flagstr.push_back("std::ios::internal"); + break; + case std::ios::right: + flagstr.push_back("std::ios::right"); + break; + default: // adjustfield not specified + break; + } + if (flags & std::ios::uppercase) flagstr.push_back("std::ios::uppercase"); + if (flags & std::ios::showbase) flagstr.push_back("std::ios::showbase"); + if (flags & std::ios::showpos) flagstr.push_back("std::ios::showpos"); + + std::ostringstream msg; + msg << "\n StreamFormatToString(test_case.flags, test_case.width)\n " + "flags: "; + if (!flagstr.empty()) { + for (size_t i = 0; i < flagstr.size() - 1; ++i) msg << flagstr[i] << " | "; + msg << flagstr.back(); + } else { + msg << "(default)"; + } + msg << "\n width: " << width << "\n fill: '" << kFill << "'"; + return msg.str(); +} + +void CheckUint128Case(const Uint128TestCase& test_case) { + std::ostringstream os; + os.flags(test_case.flags); + os.width(test_case.width); + os.fill(kFill); + os << test_case.value; + SCOPED_TRACE(StreamFormatToString(test_case.flags, test_case.width)); + EXPECT_EQ(test_case.expected, os.str()); +} + +constexpr std::ios::fmtflags kDec = std::ios::dec; +constexpr std::ios::fmtflags kOct = std::ios::oct; +constexpr std::ios::fmtflags kHex = std::ios::hex; +constexpr std::ios::fmtflags kLeft = std::ios::left; +constexpr std::ios::fmtflags kInt = std::ios::internal; +constexpr std::ios::fmtflags kRight = std::ios::right; +constexpr std::ios::fmtflags kUpper = std::ios::uppercase; +constexpr std::ios::fmtflags kBase = std::ios::showbase; +constexpr std::ios::fmtflags kPos = std::ios::showpos; + +TEST(Uint128, OStreamValueTest) { + CheckUint128Case({1, kDec, /*width = */ 0, "1"}); + CheckUint128Case({1, kOct, /*width = */ 0, "1"}); + CheckUint128Case({1, kHex, /*width = */ 0, "1"}); + CheckUint128Case({9, kDec, /*width = */ 0, "9"}); + CheckUint128Case({9, kOct, /*width = */ 0, "11"}); + CheckUint128Case({9, kHex, /*width = */ 0, "9"}); + CheckUint128Case({12345, kDec, /*width = */ 0, "12345"}); + CheckUint128Case({12345, kOct, /*width = */ 0, "30071"}); + CheckUint128Case({12345, kHex, /*width = */ 0, "3039"}); + CheckUint128Case( + {0x8000000000000000, kDec, /*width = */ 0, "9223372036854775808"}); + CheckUint128Case( + {0x8000000000000000, kOct, /*width = */ 0, "1000000000000000000000"}); + CheckUint128Case( + {0x8000000000000000, kHex, /*width = */ 0, "8000000000000000"}); + CheckUint128Case({std::numeric_limits<uint64_t>::max(), kDec, + /*width = */ 0, "18446744073709551615"}); + CheckUint128Case({std::numeric_limits<uint64_t>::max(), kOct, + /*width = */ 0, "1777777777777777777777"}); + CheckUint128Case({std::numeric_limits<uint64_t>::max(), kHex, + /*width = */ 0, "ffffffffffffffff"}); + CheckUint128Case( + {absl::MakeUint128(1, 0), kDec, /*width = */ 0, "18446744073709551616"}); + CheckUint128Case({absl::MakeUint128(1, 0), kOct, /*width = */ 0, + "2000000000000000000000"}); + CheckUint128Case( + {absl::MakeUint128(1, 0), kHex, /*width = */ 0, "10000000000000000"}); + CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kDec, + /*width = */ 0, "170141183460469231731687303715884105728"}); + CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kOct, + /*width = */ 0, + "2000000000000000000000000000000000000000000"}); + CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kHex, + /*width = */ 0, "80000000000000000000000000000000"}); + CheckUint128Case({absl::kuint128max, kDec, /*width = */ 0, + "340282366920938463463374607431768211455"}); + CheckUint128Case({absl::kuint128max, kOct, /*width = */ 0, + "3777777777777777777777777777777777777777777"}); + CheckUint128Case({absl::kuint128max, kHex, /*width = */ 0, + "ffffffffffffffffffffffffffffffff"}); +} + +std::vector<Uint128TestCase> GetUint128FormatCases(); + +TEST(Uint128, OStreamFormatTest) { + for (const Uint128TestCase& test_case : GetUint128FormatCases()) { + CheckUint128Case(test_case); + } +} + +std::vector<Uint128TestCase> GetUint128FormatCases() { + return { + {0, std::ios_base::fmtflags(), /*width = */ 0, "0"}, + {0, std::ios_base::fmtflags(), /*width = */ 6, "_____0"}, + {0, kPos, /*width = */ 0, "0"}, + {0, kPos, /*width = */ 6, "_____0"}, + {0, kBase, /*width = */ 0, "0"}, + {0, kBase, /*width = */ 6, "_____0"}, + {0, kBase | kPos, /*width = */ 0, "0"}, + {0, kBase | kPos, /*width = */ 6, "_____0"}, + {0, kUpper, /*width = */ 0, "0"}, + {0, kUpper, /*width = */ 6, "_____0"}, + {0, kUpper | kPos, /*width = */ 0, "0"}, + {0, kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kUpper | kBase, /*width = */ 0, "0"}, + {0, kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kLeft, /*width = */ 0, "0"}, + {0, kLeft, /*width = */ 6, "0_____"}, + {0, kLeft | kPos, /*width = */ 0, "0"}, + {0, kLeft | kPos, /*width = */ 6, "0_____"}, + {0, kLeft | kBase, /*width = */ 0, "0"}, + {0, kLeft | kBase, /*width = */ 6, "0_____"}, + {0, kLeft | kBase | kPos, /*width = */ 0, "0"}, + {0, kLeft | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kLeft | kUpper, /*width = */ 0, "0"}, + {0, kLeft | kUpper, /*width = */ 6, "0_____"}, + {0, kLeft | kUpper | kPos, /*width = */ 0, "0"}, + {0, kLeft | kUpper | kPos, /*width = */ 6, "0_____"}, + {0, kLeft | kUpper | kBase, /*width = */ 0, "0"}, + {0, kLeft | kUpper | kBase, /*width = */ 6, "0_____"}, + {0, kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kInt, /*width = */ 0, "0"}, + {0, kInt, /*width = */ 6, "_____0"}, + {0, kInt | kPos, /*width = */ 0, "0"}, + {0, kInt | kPos, /*width = */ 6, "_____0"}, + {0, kInt | kBase, /*width = */ 0, "0"}, + {0, kInt | kBase, /*width = */ 6, "_____0"}, + {0, kInt | kBase | kPos, /*width = */ 0, "0"}, + {0, kInt | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kInt | kUpper, /*width = */ 0, "0"}, + {0, kInt | kUpper, /*width = */ 6, "_____0"}, + {0, kInt | kUpper | kPos, /*width = */ 0, "0"}, + {0, kInt | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kInt | kUpper | kBase, /*width = */ 0, "0"}, + {0, kInt | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kInt | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kRight, /*width = */ 0, "0"}, + {0, kRight, /*width = */ 6, "_____0"}, + {0, kRight | kPos, /*width = */ 0, "0"}, + {0, kRight | kPos, /*width = */ 6, "_____0"}, + {0, kRight | kBase, /*width = */ 0, "0"}, + {0, kRight | kBase, /*width = */ 6, "_____0"}, + {0, kRight | kBase | kPos, /*width = */ 0, "0"}, + {0, kRight | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kRight | kUpper, /*width = */ 0, "0"}, + {0, kRight | kUpper, /*width = */ 6, "_____0"}, + {0, kRight | kUpper | kPos, /*width = */ 0, "0"}, + {0, kRight | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kRight | kUpper | kBase, /*width = */ 0, "0"}, + {0, kRight | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kRight | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kDec, /*width = */ 0, "0"}, + {0, kDec, /*width = */ 6, "_____0"}, + {0, kDec | kPos, /*width = */ 0, "0"}, + {0, kDec | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kBase, /*width = */ 0, "0"}, + {0, kDec | kBase, /*width = */ 6, "_____0"}, + {0, kDec | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kUpper, /*width = */ 0, "0"}, + {0, kDec | kUpper, /*width = */ 6, "_____0"}, + {0, kDec | kUpper | kPos, /*width = */ 0, "0"}, + {0, kDec | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kUpper | kBase, /*width = */ 0, "0"}, + {0, kDec | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kDec | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kLeft, /*width = */ 0, "0"}, + {0, kDec | kLeft, /*width = */ 6, "0_____"}, + {0, kDec | kLeft | kPos, /*width = */ 0, "0"}, + {0, kDec | kLeft | kPos, /*width = */ 6, "0_____"}, + {0, kDec | kLeft | kBase, /*width = */ 0, "0"}, + {0, kDec | kLeft | kBase, /*width = */ 6, "0_____"}, + {0, kDec | kLeft | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kLeft | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kDec | kLeft | kUpper, /*width = */ 0, "0"}, + {0, kDec | kLeft | kUpper, /*width = */ 6, "0_____"}, + {0, kDec | kLeft | kUpper | kPos, /*width = */ 0, "0"}, + {0, kDec | kLeft | kUpper | kPos, /*width = */ 6, "0_____"}, + {0, kDec | kLeft | kUpper | kBase, /*width = */ 0, "0"}, + {0, kDec | kLeft | kUpper | kBase, /*width = */ 6, "0_____"}, + {0, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kDec | kInt, /*width = */ 0, "0"}, + {0, kDec | kInt, /*width = */ 6, "_____0"}, + {0, kDec | kInt | kPos, /*width = */ 0, "0"}, + {0, kDec | kInt | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kInt | kBase, /*width = */ 0, "0"}, + {0, kDec | kInt | kBase, /*width = */ 6, "_____0"}, + {0, kDec | kInt | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kInt | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kInt | kUpper, /*width = */ 0, "0"}, + {0, kDec | kInt | kUpper, /*width = */ 6, "_____0"}, + {0, kDec | kInt | kUpper | kPos, /*width = */ 0, "0"}, + {0, kDec | kInt | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kInt | kUpper | kBase, /*width = */ 0, "0"}, + {0, kDec | kInt | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kDec | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kRight, /*width = */ 0, "0"}, + {0, kDec | kRight, /*width = */ 6, "_____0"}, + {0, kDec | kRight | kPos, /*width = */ 0, "0"}, + {0, kDec | kRight | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kRight | kBase, /*width = */ 0, "0"}, + {0, kDec | kRight | kBase, /*width = */ 6, "_____0"}, + {0, kDec | kRight | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kRight | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kRight | kUpper, /*width = */ 0, "0"}, + {0, kDec | kRight | kUpper, /*width = */ 6, "_____0"}, + {0, kDec | kRight | kUpper | kPos, /*width = */ 0, "0"}, + {0, kDec | kRight | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kDec | kRight | kUpper | kBase, /*width = */ 0, "0"}, + {0, kDec | kRight | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kDec | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kDec | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kOct, /*width = */ 0, "0"}, + {0, kOct, /*width = */ 6, "_____0"}, + {0, kOct | kPos, /*width = */ 0, "0"}, + {0, kOct | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kBase, /*width = */ 0, "0"}, + {0, kOct | kBase, /*width = */ 6, "_____0"}, + {0, kOct | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kUpper, /*width = */ 0, "0"}, + {0, kOct | kUpper, /*width = */ 6, "_____0"}, + {0, kOct | kUpper | kPos, /*width = */ 0, "0"}, + {0, kOct | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kUpper | kBase, /*width = */ 0, "0"}, + {0, kOct | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kOct | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kLeft, /*width = */ 0, "0"}, + {0, kOct | kLeft, /*width = */ 6, "0_____"}, + {0, kOct | kLeft | kPos, /*width = */ 0, "0"}, + {0, kOct | kLeft | kPos, /*width = */ 6, "0_____"}, + {0, kOct | kLeft | kBase, /*width = */ 0, "0"}, + {0, kOct | kLeft | kBase, /*width = */ 6, "0_____"}, + {0, kOct | kLeft | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kLeft | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kOct | kLeft | kUpper, /*width = */ 0, "0"}, + {0, kOct | kLeft | kUpper, /*width = */ 6, "0_____"}, + {0, kOct | kLeft | kUpper | kPos, /*width = */ 0, "0"}, + {0, kOct | kLeft | kUpper | kPos, /*width = */ 6, "0_____"}, + {0, kOct | kLeft | kUpper | kBase, /*width = */ 0, "0"}, + {0, kOct | kLeft | kUpper | kBase, /*width = */ 6, "0_____"}, + {0, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kOct | kInt, /*width = */ 0, "0"}, + {0, kOct | kInt, /*width = */ 6, "_____0"}, + {0, kOct | kInt | kPos, /*width = */ 0, "0"}, + {0, kOct | kInt | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kInt | kBase, /*width = */ 0, "0"}, + {0, kOct | kInt | kBase, /*width = */ 6, "_____0"}, + {0, kOct | kInt | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kInt | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kInt | kUpper, /*width = */ 0, "0"}, + {0, kOct | kInt | kUpper, /*width = */ 6, "_____0"}, + {0, kOct | kInt | kUpper | kPos, /*width = */ 0, "0"}, + {0, kOct | kInt | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kInt | kUpper | kBase, /*width = */ 0, "0"}, + {0, kOct | kInt | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kOct | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kRight, /*width = */ 0, "0"}, + {0, kOct | kRight, /*width = */ 6, "_____0"}, + {0, kOct | kRight | kPos, /*width = */ 0, "0"}, + {0, kOct | kRight | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kRight | kBase, /*width = */ 0, "0"}, + {0, kOct | kRight | kBase, /*width = */ 6, "_____0"}, + {0, kOct | kRight | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kRight | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kRight | kUpper, /*width = */ 0, "0"}, + {0, kOct | kRight | kUpper, /*width = */ 6, "_____0"}, + {0, kOct | kRight | kUpper | kPos, /*width = */ 0, "0"}, + {0, kOct | kRight | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kOct | kRight | kUpper | kBase, /*width = */ 0, "0"}, + {0, kOct | kRight | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kOct | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kOct | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kHex, /*width = */ 0, "0"}, + {0, kHex, /*width = */ 6, "_____0"}, + {0, kHex | kPos, /*width = */ 0, "0"}, + {0, kHex | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kBase, /*width = */ 0, "0"}, + {0, kHex | kBase, /*width = */ 6, "_____0"}, + {0, kHex | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kUpper, /*width = */ 0, "0"}, + {0, kHex | kUpper, /*width = */ 6, "_____0"}, + {0, kHex | kUpper | kPos, /*width = */ 0, "0"}, + {0, kHex | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kUpper | kBase, /*width = */ 0, "0"}, + {0, kHex | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kHex | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kLeft, /*width = */ 0, "0"}, + {0, kHex | kLeft, /*width = */ 6, "0_____"}, + {0, kHex | kLeft | kPos, /*width = */ 0, "0"}, + {0, kHex | kLeft | kPos, /*width = */ 6, "0_____"}, + {0, kHex | kLeft | kBase, /*width = */ 0, "0"}, + {0, kHex | kLeft | kBase, /*width = */ 6, "0_____"}, + {0, kHex | kLeft | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kLeft | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kHex | kLeft | kUpper, /*width = */ 0, "0"}, + {0, kHex | kLeft | kUpper, /*width = */ 6, "0_____"}, + {0, kHex | kLeft | kUpper | kPos, /*width = */ 0, "0"}, + {0, kHex | kLeft | kUpper | kPos, /*width = */ 6, "0_____"}, + {0, kHex | kLeft | kUpper | kBase, /*width = */ 0, "0"}, + {0, kHex | kLeft | kUpper | kBase, /*width = */ 6, "0_____"}, + {0, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"}, + {0, kHex | kInt, /*width = */ 0, "0"}, + {0, kHex | kInt, /*width = */ 6, "_____0"}, + {0, kHex | kInt | kPos, /*width = */ 0, "0"}, + {0, kHex | kInt | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kInt | kBase, /*width = */ 0, "0"}, + {0, kHex | kInt | kBase, /*width = */ 6, "_____0"}, + {0, kHex | kInt | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kInt | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kInt | kUpper, /*width = */ 0, "0"}, + {0, kHex | kInt | kUpper, /*width = */ 6, "_____0"}, + {0, kHex | kInt | kUpper | kPos, /*width = */ 0, "0"}, + {0, kHex | kInt | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kInt | kUpper | kBase, /*width = */ 0, "0"}, + {0, kHex | kInt | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kHex | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kRight, /*width = */ 0, "0"}, + {0, kHex | kRight, /*width = */ 6, "_____0"}, + {0, kHex | kRight | kPos, /*width = */ 0, "0"}, + {0, kHex | kRight | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kRight | kBase, /*width = */ 0, "0"}, + {0, kHex | kRight | kBase, /*width = */ 6, "_____0"}, + {0, kHex | kRight | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kRight | kBase | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kRight | kUpper, /*width = */ 0, "0"}, + {0, kHex | kRight | kUpper, /*width = */ 6, "_____0"}, + {0, kHex | kRight | kUpper | kPos, /*width = */ 0, "0"}, + {0, kHex | kRight | kUpper | kPos, /*width = */ 6, "_____0"}, + {0, kHex | kRight | kUpper | kBase, /*width = */ 0, "0"}, + {0, kHex | kRight | kUpper | kBase, /*width = */ 6, "_____0"}, + {0, kHex | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"}, + {0, kHex | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"}, + {37, std::ios_base::fmtflags(), /*width = */ 0, "37"}, + {37, std::ios_base::fmtflags(), /*width = */ 6, "____37"}, + {37, kPos, /*width = */ 0, "37"}, + {37, kPos, /*width = */ 6, "____37"}, + {37, kBase, /*width = */ 0, "37"}, + {37, kBase, /*width = */ 6, "____37"}, + {37, kBase | kPos, /*width = */ 0, "37"}, + {37, kBase | kPos, /*width = */ 6, "____37"}, + {37, kUpper, /*width = */ 0, "37"}, + {37, kUpper, /*width = */ 6, "____37"}, + {37, kUpper | kPos, /*width = */ 0, "37"}, + {37, kUpper | kPos, /*width = */ 6, "____37"}, + {37, kUpper | kBase, /*width = */ 0, "37"}, + {37, kUpper | kBase, /*width = */ 6, "____37"}, + {37, kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kUpper | kBase | kPos, /*width = */ 6, "____37"}, + {37, kLeft, /*width = */ 0, "37"}, + {37, kLeft, /*width = */ 6, "37____"}, + {37, kLeft | kPos, /*width = */ 0, "37"}, + {37, kLeft | kPos, /*width = */ 6, "37____"}, + {37, kLeft | kBase, /*width = */ 0, "37"}, + {37, kLeft | kBase, /*width = */ 6, "37____"}, + {37, kLeft | kBase | kPos, /*width = */ 0, "37"}, + {37, kLeft | kBase | kPos, /*width = */ 6, "37____"}, + {37, kLeft | kUpper, /*width = */ 0, "37"}, + {37, kLeft | kUpper, /*width = */ 6, "37____"}, + {37, kLeft | kUpper | kPos, /*width = */ 0, "37"}, + {37, kLeft | kUpper | kPos, /*width = */ 6, "37____"}, + {37, kLeft | kUpper | kBase, /*width = */ 0, "37"}, + {37, kLeft | kUpper | kBase, /*width = */ 6, "37____"}, + {37, kLeft | kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kLeft | kUpper | kBase | kPos, /*width = */ 6, "37____"}, + {37, kInt, /*width = */ 0, "37"}, + {37, kInt, /*width = */ 6, "____37"}, + {37, kInt | kPos, /*width = */ 0, "37"}, + {37, kInt | kPos, /*width = */ 6, "____37"}, + {37, kInt | kBase, /*width = */ 0, "37"}, + {37, kInt | kBase, /*width = */ 6, "____37"}, + {37, kInt | kBase | kPos, /*width = */ 0, "37"}, + {37, kInt | kBase | kPos, /*width = */ 6, "____37"}, + {37, kInt | kUpper, /*width = */ 0, "37"}, + {37, kInt | kUpper, /*width = */ 6, "____37"}, + {37, kInt | kUpper | kPos, /*width = */ 0, "37"}, + {37, kInt | kUpper | kPos, /*width = */ 6, "____37"}, + {37, kInt | kUpper | kBase, /*width = */ 0, "37"}, + {37, kInt | kUpper | kBase, /*width = */ 6, "____37"}, + {37, kInt | kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kInt | kUpper | kBase | kPos, /*width = */ 6, "____37"}, + {37, kRight, /*width = */ 0, "37"}, + {37, kRight, /*width = */ 6, "____37"}, + {37, kRight | kPos, /*width = */ 0, "37"}, + {37, kRight | kPos, /*width = */ 6, "____37"}, + {37, kRight | kBase, /*width = */ 0, "37"}, + {37, kRight | kBase, /*width = */ 6, "____37"}, + {37, kRight | kBase | kPos, /*width = */ 0, "37"}, + {37, kRight | kBase | kPos, /*width = */ 6, "____37"}, + {37, kRight | kUpper, /*width = */ 0, "37"}, + {37, kRight | kUpper, /*width = */ 6, "____37"}, + {37, kRight | kUpper | kPos, /*width = */ 0, "37"}, + {37, kRight | kUpper | kPos, /*width = */ 6, "____37"}, + {37, kRight | kUpper | kBase, /*width = */ 0, "37"}, + {37, kRight | kUpper | kBase, /*width = */ 6, "____37"}, + {37, kRight | kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kRight | kUpper | kBase | kPos, /*width = */ 6, "____37"}, + {37, kDec, /*width = */ 0, "37"}, + {37, kDec, /*width = */ 6, "____37"}, + {37, kDec | kPos, /*width = */ 0, "37"}, + {37, kDec | kPos, /*width = */ 6, "____37"}, + {37, kDec | kBase, /*width = */ 0, "37"}, + {37, kDec | kBase, /*width = */ 6, "____37"}, + {37, kDec | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kBase | kPos, /*width = */ 6, "____37"}, + {37, kDec | kUpper, /*width = */ 0, "37"}, + {37, kDec | kUpper, /*width = */ 6, "____37"}, + {37, kDec | kUpper | kPos, /*width = */ 0, "37"}, + {37, kDec | kUpper | kPos, /*width = */ 6, "____37"}, + {37, kDec | kUpper | kBase, /*width = */ 0, "37"}, + {37, kDec | kUpper | kBase, /*width = */ 6, "____37"}, + {37, kDec | kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kUpper | kBase | kPos, /*width = */ 6, "____37"}, + {37, kDec | kLeft, /*width = */ 0, "37"}, + {37, kDec | kLeft, /*width = */ 6, "37____"}, + {37, kDec | kLeft | kPos, /*width = */ 0, "37"}, + {37, kDec | kLeft | kPos, /*width = */ 6, "37____"}, + {37, kDec | kLeft | kBase, /*width = */ 0, "37"}, + {37, kDec | kLeft | kBase, /*width = */ 6, "37____"}, + {37, kDec | kLeft | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kLeft | kBase | kPos, /*width = */ 6, "37____"}, + {37, kDec | kLeft | kUpper, /*width = */ 0, "37"}, + {37, kDec | kLeft | kUpper, /*width = */ 6, "37____"}, + {37, kDec | kLeft | kUpper | kPos, /*width = */ 0, "37"}, + {37, kDec | kLeft | kUpper | kPos, /*width = */ 6, "37____"}, + {37, kDec | kLeft | kUpper | kBase, /*width = */ 0, "37"}, + {37, kDec | kLeft | kUpper | kBase, /*width = */ 6, "37____"}, + {37, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 6, "37____"}, + {37, kDec | kInt, /*width = */ 0, "37"}, + {37, kDec | kInt, /*width = */ 6, "____37"}, + {37, kDec | kInt | kPos, /*width = */ 0, "37"}, + {37, kDec | kInt | kPos, /*width = */ 6, "____37"}, + {37, kDec | kInt | kBase, /*width = */ 0, "37"}, + {37, kDec | kInt | kBase, /*width = */ 6, "____37"}, + {37, kDec | kInt | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kInt | kBase | kPos, /*width = */ 6, "____37"}, + {37, kDec | kInt | kUpper, /*width = */ 0, "37"}, + {37, kDec | kInt | kUpper, /*width = */ 6, "____37"}, + {37, kDec | kInt | kUpper | kPos, /*width = */ 0, "37"}, + {37, kDec | kInt | kUpper | kPos, /*width = */ 6, "____37"}, + {37, kDec | kInt | kUpper | kBase, /*width = */ 0, "37"}, + {37, kDec | kInt | kUpper | kBase, /*width = */ 6, "____37"}, + {37, kDec | kInt | kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kInt | kUpper | kBase | kPos, /*width = */ 6, "____37"}, + {37, kDec | kRight, /*width = */ 0, "37"}, + {37, kDec | kRight, /*width = */ 6, "____37"}, + {37, kDec | kRight | kPos, /*width = */ 0, "37"}, + {37, kDec | kRight | kPos, /*width = */ 6, "____37"}, + {37, kDec | kRight | kBase, /*width = */ 0, "37"}, + {37, kDec | kRight | kBase, /*width = */ 6, "____37"}, + {37, kDec | kRight | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kRight | kBase | kPos, /*width = */ 6, "____37"}, + {37, kDec | kRight | kUpper, /*width = */ 0, "37"}, + {37, kDec | kRight | kUpper, /*width = */ 6, "____37"}, + {37, kDec | kRight | kUpper | kPos, /*width = */ 0, "37"}, + {37, kDec | kRight | kUpper | kPos, /*width = */ 6, "____37"}, + {37, kDec | kRight | kUpper | kBase, /*width = */ 0, "37"}, + {37, kDec | kRight | kUpper | kBase, /*width = */ 6, "____37"}, + {37, kDec | kRight | kUpper | kBase | kPos, /*width = */ 0, "37"}, + {37, kDec | kRight | kUpper | kBase | kPos, /*width = */ 6, "____37"}, + {37, kOct, /*width = */ 0, "45"}, + {37, kOct, /*width = */ 6, "____45"}, + {37, kOct | kPos, /*width = */ 0, "45"}, + {37, kOct | kPos, /*width = */ 6, "____45"}, + {37, kOct | kBase, /*width = */ 0, "045"}, + {37, kOct | kBase, /*width = */ 6, "___045"}, + {37, kOct | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kBase | kPos, /*width = */ 6, "___045"}, + {37, kOct | kUpper, /*width = */ 0, "45"}, + {37, kOct | kUpper, /*width = */ 6, "____45"}, + {37, kOct | kUpper | kPos, /*width = */ 0, "45"}, + {37, kOct | kUpper | kPos, /*width = */ 6, "____45"}, + {37, kOct | kUpper | kBase, /*width = */ 0, "045"}, + {37, kOct | kUpper | kBase, /*width = */ 6, "___045"}, + {37, kOct | kUpper | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kUpper | kBase | kPos, /*width = */ 6, "___045"}, + {37, kOct | kLeft, /*width = */ 0, "45"}, + {37, kOct | kLeft, /*width = */ 6, "45____"}, + {37, kOct | kLeft | kPos, /*width = */ 0, "45"}, + {37, kOct | kLeft | kPos, /*width = */ 6, "45____"}, + {37, kOct | kLeft | kBase, /*width = */ 0, "045"}, + {37, kOct | kLeft | kBase, /*width = */ 6, "045___"}, + {37, kOct | kLeft | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kLeft | kBase | kPos, /*width = */ 6, "045___"}, + {37, kOct | kLeft | kUpper, /*width = */ 0, "45"}, + {37, kOct | kLeft | kUpper, /*width = */ 6, "45____"}, + {37, kOct | kLeft | kUpper | kPos, /*width = */ 0, "45"}, + {37, kOct | kLeft | kUpper | kPos, /*width = */ 6, "45____"}, + {37, kOct | kLeft | kUpper | kBase, /*width = */ 0, "045"}, + {37, kOct | kLeft | kUpper | kBase, /*width = */ 6, "045___"}, + {37, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 6, "045___"}, + {37, kOct | kInt, /*width = */ 0, "45"}, + {37, kOct | kInt, /*width = */ 6, "____45"}, + {37, kOct | kInt | kPos, /*width = */ 0, "45"}, + {37, kOct | kInt | kPos, /*width = */ 6, "____45"}, + {37, kOct | kInt | kBase, /*width = */ 0, "045"}, + {37, kOct | kInt | kBase, /*width = */ 6, "___045"}, + {37, kOct | kInt | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kInt | kBase | kPos, /*width = */ 6, "___045"}, + {37, kOct | kInt | kUpper, /*width = */ 0, "45"}, + {37, kOct | kInt | kUpper, /*width = */ 6, "____45"}, + {37, kOct | kInt | kUpper | kPos, /*width = */ 0, "45"}, + {37, kOct | kInt | kUpper | kPos, /*width = */ 6, "____45"}, + {37, kOct | kInt | kUpper | kBase, /*width = */ 0, "045"}, + {37, kOct | kInt | kUpper | kBase, /*width = */ 6, "___045"}, + {37, kOct | kInt | kUpper | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kInt | kUpper | kBase | kPos, /*width = */ 6, "___045"}, + {37, kOct | kRight, /*width = */ 0, "45"}, + {37, kOct | kRight, /*width = */ 6, "____45"}, + {37, kOct | kRight | kPos, /*width = */ 0, "45"}, + {37, kOct | kRight | kPos, /*width = */ 6, "____45"}, + {37, kOct | kRight | kBase, /*width = */ 0, "045"}, + {37, kOct | kRight | kBase, /*width = */ 6, "___045"}, + {37, kOct | kRight | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kRight | kBase | kPos, /*width = */ 6, "___045"}, + {37, kOct | kRight | kUpper, /*width = */ 0, "45"}, + {37, kOct | kRight | kUpper, /*width = */ 6, "____45"}, + {37, kOct | kRight | kUpper | kPos, /*width = */ 0, "45"}, + {37, kOct | kRight | kUpper | kPos, /*width = */ 6, "____45"}, + {37, kOct | kRight | kUpper | kBase, /*width = */ 0, "045"}, + {37, kOct | kRight | kUpper | kBase, /*width = */ 6, "___045"}, + {37, kOct | kRight | kUpper | kBase | kPos, /*width = */ 0, "045"}, + {37, kOct | kRight | kUpper | kBase | kPos, /*width = */ 6, "___045"}, + {37, kHex, /*width = */ 0, "25"}, + {37, kHex, /*width = */ 6, "____25"}, + {37, kHex | kPos, /*width = */ 0, "25"}, + {37, kHex | kPos, /*width = */ 6, "____25"}, + {37, kHex | kBase, /*width = */ 0, "0x25"}, + {37, kHex | kBase, /*width = */ 6, "__0x25"}, + {37, kHex | kBase | kPos, /*width = */ 0, "0x25"}, + {37, kHex | kBase | kPos, /*width = */ 6, "__0x25"}, + {37, kHex | kUpper, /*width = */ 0, "25"}, + {37, kHex | kUpper, /*width = */ 6, "____25"}, + {37, kHex | kUpper | kPos, /*width = */ 0, "25"}, + {37, kHex | kUpper | kPos, /*width = */ 6, "____25"}, + {37, kHex | kUpper | kBase, /*width = */ 0, "0X25"}, + {37, kHex | kUpper | kBase, /*width = */ 6, "__0X25"}, + {37, kHex | kUpper | kBase | kPos, /*width = */ 0, "0X25"}, + {37, kHex | kUpper | kBase | kPos, /*width = */ 6, "__0X25"}, + {37, kHex | kLeft, /*width = */ 0, "25"}, + {37, kHex | kLeft, /*width = */ 6, "25____"}, + {37, kHex | kLeft | kPos, /*width = */ 0, "25"}, + {37, kHex | kLeft | kPos, /*width = */ 6, "25____"}, + {37, kHex | kLeft | kBase, /*width = */ 0, "0x25"}, + {37, kHex | kLeft | kBase, /*width = */ 6, "0x25__"}, + {37, kHex | kLeft | kBase | kPos, /*width = */ 0, "0x25"}, + {37, kHex | kLeft | kBase | kPos, /*width = */ 6, "0x25__"}, + {37, kHex | kLeft | kUpper, /*width = */ 0, "25"}, + {37, kHex | kLeft | kUpper, /*width = */ 6, "25____"}, + {37, kHex | kLeft | kUpper | kPos, /*width = */ 0, "25"}, + {37, kHex | kLeft | kUpper | kPos, /*width = */ 6, "25____"}, + {37, kHex | kLeft | kUpper | kBase, /*width = */ 0, "0X25"}, + {37, kHex | kLeft | kUpper | kBase, /*width = */ 6, "0X25__"}, + {37, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0X25"}, + {37, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0X25__"}, + {37, kHex | kInt, /*width = */ 0, "25"}, + {37, kHex | kInt, /*width = */ 6, "____25"}, + {37, kHex | kInt | kPos, /*width = */ 0, "25"}, + {37, kHex | kInt | kPos, /*width = */ 6, "____25"}, + {37, kHex | kInt | kBase, /*width = */ 0, "0x25"}, + {37, kHex | kInt | kBase, /*width = */ 6, "0x__25"}, + {37, kHex | kInt | kBase | kPos, /*width = */ 0, "0x25"}, + {37, kHex | kInt | kBase | kPos, /*width = */ 6, "0x__25"}, + {37, kHex | kInt | kUpper, /*width = */ 0, "25"}, + {37, kHex | kInt | kUpper, /*width = */ 6, "____25"}, + {37, kHex | kInt | kUpper | kPos, /*width = */ 0, "25"}, + {37, kHex | kInt | kUpper | kPos, /*width = */ 6, "____25"}, + {37, kHex | kInt | kUpper | kBase, /*width = */ 0, "0X25"}, + {37, kHex | kInt | kUpper | kBase, /*width = */ 6, "0X__25"}, + {37, kHex | kInt | kUpper | kBase | kPos, /*width = */ 0, "0X25"}, + {37, kHex | kInt | kUpper | kBase | kPos, /*width = */ 6, "0X__25"}, + {37, kHex | kRight, /*width = */ 0, "25"}, + {37, kHex | kRight, /*width = */ 6, "____25"}, + {37, kHex | kRight | kPos, /*width = */ 0, "25"}, + {37, kHex | kRight | kPos, /*width = */ 6, "____25"}, + {37, kHex | kRight | kBase, /*width = */ 0, "0x25"}, + {37, kHex | kRight | kBase, /*width = */ 6, "__0x25"}, + {37, kHex | kRight | kBase | kPos, /*width = */ 0, "0x25"}, + {37, kHex | kRight | kBase | kPos, /*width = */ 6, "__0x25"}, + {37, kHex | kRight | kUpper, /*width = */ 0, "25"}, + {37, kHex | kRight | kUpper, /*width = */ 6, "____25"}, + {37, kHex | kRight | kUpper | kPos, /*width = */ 0, "25"}, + {37, kHex | kRight | kUpper | kPos, /*width = */ 6, "____25"}, + {37, kHex | kRight | kUpper | kBase, /*width = */ 0, "0X25"}, + {37, kHex | kRight | kUpper | kBase, /*width = */ 6, "__0X25"}, + {37, kHex | kRight | kUpper | kBase | kPos, /*width = */ 0, "0X25"}, + {37, kHex | kRight | kUpper | kBase | kPos, /*width = */ 6, "__0X25"}}; +} + +} // namespace diff --git a/absl/numeric/int128_test.cc b/absl/numeric/int128_test.cc index ce44cd4b93c1..75fd6371040a 100644 --- a/absl/numeric/int128_test.cc +++ b/absl/numeric/int128_test.cc @@ -17,7 +17,6 @@ #include <algorithm> #include <limits> #include <random> -#include <sstream> #include <type_traits> #include <utility> #include <vector> @@ -427,26 +426,4 @@ TEST(Uint128, ConstexprTest) { EXPECT_EQ(minus_two, absl::MakeUint128(-1, -2)); } -TEST(Uint128, OStream) { - struct StreamCase { - absl::uint128 val; - std::ios_base::fmtflags flags; - std::streamsize width; - char fill; - const char* rep; - }; - - std::vector<StreamCase> cases = { -#include "absl/numeric/int128_test_unsigned_ostream_cases.inc" - }; - for (const StreamCase& test_case : cases) { - std::ostringstream os; - os.flags(test_case.flags); - os.width(test_case.width); - os.fill(test_case.fill); - os << test_case.val; - EXPECT_EQ(test_case.rep, os.str()); - } -} - } // namespace diff --git a/absl/numeric/int128_test_unsigned_ostream_cases.inc b/absl/numeric/int128_test_unsigned_ostream_cases.inc deleted file mode 100644 index 7d2fc77f1a91..000000000000 --- a/absl/numeric/int128_test_unsigned_ostream_cases.inc +++ /dev/null @@ -1,880 +0,0 @@ -// A small set of cases created manually for values greater than 2^64. - -{absl::MakeUint128(1, 0), std::ios::dec, 0, '_', "18446744073709551616"}, -{absl::MakeUint128(1, 0), std::ios::oct, 0, '_', "2000000000000000000000"}, -{absl::MakeUint128(1, 0), std::ios::hex, 0, '_', "10000000000000000"}, -{absl::MakeUint128(0x8000000000000000, 0), std::ios::dec, 0, '_', "170141183460469231731687303715884105728"}, -{absl::MakeUint128(0x8000000000000000, 0), std::ios::oct, 0, '_', "2000000000000000000000000000000000000000000"}, -{absl::MakeUint128(0x8000000000000000, 0), std::ios::hex, 0, '_', "80000000000000000000000000000000"}, -{absl::MakeUint128(-1, -1), std::ios::dec, 0, '_', "340282366920938463463374607431768211455"}, -{absl::MakeUint128(-1, -1), std::ios::oct, 0, '_', "3777777777777777777777777777777777777777777"}, -{absl::MakeUint128(-1, -1), std::ios::hex, 0, '_', "ffffffffffffffffffffffffffffffff"}, - -// An exhaustive set of formatting cases generated with select values that fit -// into a uint64_t so they can be compared to what was output by the standard -// implementation. - -{0, std::ios::dec | std::ios::left, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::dec | std::ios::internal, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::left, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::oct | std::ios::internal, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::left, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"}, -{0, std::ios::hex | std::ios::internal, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"}, -{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"}, -{8, std::ios::dec | std::ios::left, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "8_________"}, -{8, std::ios::dec | std::ios::internal, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::oct | std::ios::left, 0, '_', "10"}, -{8, std::ios::oct | std::ios::left, 10, '_', "10________"}, -{8, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "10"}, -{8, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "10________"}, -{8, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "010"}, -{8, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "010_______"}, -{8, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "010"}, -{8, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "010_______"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "10"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "10________"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "10"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "10________"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "010"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "010_______"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "010"}, -{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "010_______"}, -{8, std::ios::oct | std::ios::internal, 0, '_', "10"}, -{8, std::ios::oct | std::ios::internal, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "10"}, -{8, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "010"}, -{8, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "_______010"}, -{8, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "010"}, -{8, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "10"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "10"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "010"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_______010"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "010"}, -{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"}, -{8, std::ios::oct | std::ios::right, 0, '_', "10"}, -{8, std::ios::oct | std::ios::right, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "10"}, -{8, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "010"}, -{8, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "_______010"}, -{8, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "010"}, -{8, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "10"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "10"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________10"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "010"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_______010"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "010"}, -{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"}, -{8, std::ios::hex | std::ios::left, 0, '_', "8"}, -{8, std::ios::hex | std::ios::left, 10, '_', "8_________"}, -{8, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "8_________"}, -{8, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x8"}, -{8, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x8_______"}, -{8, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x8"}, -{8, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x8_______"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "8"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "8_________"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "8_________"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8_______"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8"}, -{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8_______"}, -{8, std::ios::hex | std::ios::internal, 0, '_', "8"}, -{8, std::ios::hex | std::ios::internal, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x8"}, -{8, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x_______8"}, -{8, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x8"}, -{8, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x_______8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X_______8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8"}, -{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X_______8"}, -{8, std::ios::hex | std::ios::right, 0, '_', "8"}, -{8, std::ios::hex | std::ios::right, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x8"}, -{8, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "_______0x8"}, -{8, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x8"}, -{8, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_______0x8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_______0X8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8"}, -{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______0X8"}, -{31, std::ios::dec | std::ios::left, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "31________"}, -{31, std::ios::dec | std::ios::internal, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "________31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "31"}, -{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "________31"}, -{31, std::ios::oct | std::ios::left, 0, '_', "37"}, -{31, std::ios::oct | std::ios::left, 10, '_', "37________"}, -{31, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "37"}, -{31, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "37________"}, -{31, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "037"}, -{31, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "037_______"}, -{31, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "037"}, -{31, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "037_______"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "37"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "37________"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "37"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "37________"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "037"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "037_______"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "037"}, -{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "037_______"}, -{31, std::ios::oct | std::ios::internal, 0, '_', "37"}, -{31, std::ios::oct | std::ios::internal, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "37"}, -{31, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "037"}, -{31, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "_______037"}, -{31, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "037"}, -{31, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "37"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "37"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "037"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_______037"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "037"}, -{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"}, -{31, std::ios::oct | std::ios::right, 0, '_', "37"}, -{31, std::ios::oct | std::ios::right, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "37"}, -{31, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "037"}, -{31, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "_______037"}, -{31, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "037"}, -{31, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "37"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "37"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________37"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "037"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_______037"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "037"}, -{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"}, -{31, std::ios::hex | std::ios::left, 0, '_', "1f"}, -{31, std::ios::hex | std::ios::left, 10, '_', "1f________"}, -{31, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "1f"}, -{31, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "1f________"}, -{31, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x1f"}, -{31, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x1f______"}, -{31, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x1f"}, -{31, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x1f______"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "1F"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "1F________"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "1F"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "1F________"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X1F"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X1F______"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X1F"}, -{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X1F______"}, -{31, std::ios::hex | std::ios::internal, 0, '_', "1f"}, -{31, std::ios::hex | std::ios::internal, 10, '_', "________1f"}, -{31, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "1f"}, -{31, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "________1f"}, -{31, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x1f"}, -{31, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x______1f"}, -{31, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x1f"}, -{31, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x______1f"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "1F"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "________1F"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "1F"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________1F"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X1F"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X______1F"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X1F"}, -{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X______1F"}, -{31, std::ios::hex | std::ios::right, 0, '_', "1f"}, -{31, std::ios::hex | std::ios::right, 10, '_', "________1f"}, -{31, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "1f"}, -{31, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "________1f"}, -{31, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x1f"}, -{31, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "______0x1f"}, -{31, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x1f"}, -{31, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "______0x1f"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "1F"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "________1F"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "1F"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________1F"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X1F"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "______0X1F"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X1F"}, -{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "______0X1F"}, -{12345, std::ios::dec | std::ios::left, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "12345_____"}, -{12345, std::ios::dec | std::ios::internal, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_____12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "12345"}, -{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"}, -{12345, std::ios::oct | std::ios::left, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::left, 10, '_', "30071_____"}, -{12345, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "30071_____"}, -{12345, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "030071____"}, -{12345, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "030071____"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "30071_____"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "30071_____"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "030071____"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "030071____"}, -{12345, std::ios::oct | std::ios::internal, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::internal, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "____030071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "____030071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"}, -{12345, std::ios::oct | std::ios::right, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::right, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "____030071"}, -{12345, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "30071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_____30071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "____030071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "030071"}, -{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"}, -{12345, std::ios::hex | std::ios::left, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::left, 10, '_', "3039______"}, -{12345, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "3039______"}, -{12345, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x3039"}, -{12345, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x3039____"}, -{12345, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x3039"}, -{12345, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x3039____"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "3039______"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "3039______"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X3039"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X3039____"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X3039"}, -{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X3039____"}, -{12345, std::ios::hex | std::ios::internal, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::internal, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x____3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x____3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X____3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X3039"}, -{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X____3039"}, -{12345, std::ios::hex | std::ios::right, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::right, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "____0x3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "____0x3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "______3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "____0X3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X3039"}, -{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "____0X3039"}, -{0x8000000000000000, std::ios::dec | std::ios::left, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"}, -{0x8000000000000000, std::ios::oct | std::ios::left, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "1000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "0x8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8000000000000000"}, -{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8000000000000000"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "1777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left, 0, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left, 10, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal, 0, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal, 10, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right, 0, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right, 10, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "ffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "0xffffffffffffffff"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "FFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0XFFFFFFFFFFFFFFFF"}, -{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0XFFFFFFFFFFFFFFFF"}, diff --git a/absl/strings/escaping.cc b/absl/strings/escaping.cc index 7d688ac3fac7..abe9e0aaacd9 100644 --- a/absl/strings/escaping.cc +++ b/absl/strings/escaping.cc @@ -72,6 +72,17 @@ inline int hex_digit_to_int(char c) { return x & 0xf; } +inline bool IsSurrogate(char32_t c, absl::string_view src, std::string* error) { + if (c >= 0xD800 && c <= 0xDFFF) { + if (error) { + *error = absl::StrCat("invalid surrogate character (0xD800-DFFF): \\", + src); + } + return true; + } + return false; +} + // ---------------------------------------------------------------------- // CUnescapeInternal() // Implements both CUnescape() and CUnescapeForNullTerminatedString(). @@ -214,6 +225,9 @@ bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped, d += 5; break; } + if (IsSurrogate(rune, absl::string_view(hex_start, 5), error)) { + return false; + } d += strings_internal::EncodeUTF8Char(d, rune); break; } @@ -259,6 +273,9 @@ bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped, d += 9; break; } + if (IsSurrogate(rune, absl::string_view(hex_start, 9), error)) { + return false; + } d += strings_internal::EncodeUTF8Char(d, rune); break; } diff --git a/absl/strings/escaping_test.cc b/absl/strings/escaping_test.cc index ecac9ca8c588..982989b8b4a4 100644 --- a/absl/strings/escaping_test.cc +++ b/absl/strings/escaping_test.cc @@ -160,11 +160,14 @@ TEST(Unescape, BasicFunction) { EXPECT_EQ(out, val.unescaped); } std::string bad[] = - {"\\u1", // too short - "\\U1", // too short - "\\Uffffff", - "\\777", // exceeds 0xff - "\\xABCD"}; // exceeds 0xff + {"\\u1", // too short + "\\U1", // too short + "\\Uffffff", // exceeds 0x10ffff (largest Unicode) + "\\U00110000", // exceeds 0x10ffff (largest Unicode) + "\\uD835", // surrogate character (D800-DFFF) + "\\U0000DD04", // surrogate character (D800-DFFF) + "\\777", // exceeds 0xff + "\\xABCD"}; // exceeds 0xff for (const std::string& e : bad) { std::string error; std::string out; |