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
This commit is contained in:
Abseil Team 2017-12-13 12:02:15 -08:00 committed by Titus Winters
parent 5fe41affba
commit 720c017e30
11 changed files with 720 additions and 919 deletions

View file

@ -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

View file

@ -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>

View file

@ -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++) {

View file

@ -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"

View file

@ -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)

View file

@ -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 = [

View file

@ -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

View file

@ -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

View file

@ -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"},

View file

@ -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;
}

View file

@ -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;