You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ja...@apache.org on 2018/06/18 18:35:52 UTC
[33/62] [abbrv] [partial] marmotta git commit: * Replace gtest with
upstream version,
including LICENSE header. * Include absl library for faster and safer string
operations. * Update license headers where needed. * Removed custom code
replaced by absl.
http://git-wip-us.apache.org/repos/asf/marmotta/blob/0eb556da/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_stream_test.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_stream_test.cc b/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_stream_test.cc
new file mode 100644
index 0000000..09efaad
--- /dev/null
+++ b/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_stream_test.cc
@@ -0,0 +1,666 @@
+// Copyright 2017 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "absl/numeric/int128.h"
+
+#include <sstream>
+#include <string>
+
+#include "gtest/gtest.h"
+
+namespace {
+
+struct Uint128TestCase {
+ absl::uint128 value;
+ std::ios_base::fmtflags flags;
+ std::streamsize width;
+ const char* expected;
+};
+
+constexpr char kFill = '_';
+
+std::string StreamFormatToString(std::ios_base::fmtflags flags,
+ std::streamsize width) {
+ std::vector<const char*> flagstr;
+ switch (flags & std::ios::basefield) {
+ case std::ios::dec:
+ flagstr.push_back("std::ios::dec");
+ break;
+ case std::ios::oct:
+ flagstr.push_back("std::ios::oct");
+ break;
+ case std::ios::hex:
+ flagstr.push_back("std::ios::hex");
+ break;
+ default: // basefield not specified
+ break;
+ }
+ switch (flags & std::ios::adjustfield) {
+ case std::ios::left:
+ flagstr.push_back("std::ios::left");
+ break;
+ case std::ios::internal:
+ flagstr.push_back("std::ios::internal");
+ break;
+ case std::ios::right:
+ flagstr.push_back("std::ios::right");
+ break;
+ default: // adjustfield not specified
+ break;
+ }
+ if (flags & std::ios::uppercase) flagstr.push_back("std::ios::uppercase");
+ if (flags & std::ios::showbase) flagstr.push_back("std::ios::showbase");
+ if (flags & std::ios::showpos) flagstr.push_back("std::ios::showpos");
+
+ std::ostringstream msg;
+ msg << "\n StreamFormatToString(test_case.flags, test_case.width)\n "
+ "flags: ";
+ if (!flagstr.empty()) {
+ for (size_t i = 0; i < flagstr.size() - 1; ++i) msg << flagstr[i] << " | ";
+ msg << flagstr.back();
+ } else {
+ msg << "(default)";
+ }
+ msg << "\n width: " << width << "\n fill: '" << kFill << "'";
+ return msg.str();
+}
+
+void CheckUint128Case(const Uint128TestCase& test_case) {
+ std::ostringstream os;
+ os.flags(test_case.flags);
+ os.width(test_case.width);
+ os.fill(kFill);
+ os << test_case.value;
+ SCOPED_TRACE(StreamFormatToString(test_case.flags, test_case.width));
+ EXPECT_EQ(test_case.expected, os.str());
+}
+
+constexpr std::ios::fmtflags kDec = std::ios::dec;
+constexpr std::ios::fmtflags kOct = std::ios::oct;
+constexpr std::ios::fmtflags kHex = std::ios::hex;
+constexpr std::ios::fmtflags kLeft = std::ios::left;
+constexpr std::ios::fmtflags kInt = std::ios::internal;
+constexpr std::ios::fmtflags kRight = std::ios::right;
+constexpr std::ios::fmtflags kUpper = std::ios::uppercase;
+constexpr std::ios::fmtflags kBase = std::ios::showbase;
+constexpr std::ios::fmtflags kPos = std::ios::showpos;
+
+TEST(Uint128, OStreamValueTest) {
+ CheckUint128Case({1, kDec, /*width = */ 0, "1"});
+ CheckUint128Case({1, kOct, /*width = */ 0, "1"});
+ CheckUint128Case({1, kHex, /*width = */ 0, "1"});
+ CheckUint128Case({9, kDec, /*width = */ 0, "9"});
+ CheckUint128Case({9, kOct, /*width = */ 0, "11"});
+ CheckUint128Case({9, kHex, /*width = */ 0, "9"});
+ CheckUint128Case({12345, kDec, /*width = */ 0, "12345"});
+ CheckUint128Case({12345, kOct, /*width = */ 0, "30071"});
+ CheckUint128Case({12345, kHex, /*width = */ 0, "3039"});
+ CheckUint128Case(
+ {0x8000000000000000, kDec, /*width = */ 0, "9223372036854775808"});
+ CheckUint128Case(
+ {0x8000000000000000, kOct, /*width = */ 0, "1000000000000000000000"});
+ CheckUint128Case(
+ {0x8000000000000000, kHex, /*width = */ 0, "8000000000000000"});
+ CheckUint128Case({std::numeric_limits<uint64_t>::max(), kDec,
+ /*width = */ 0, "18446744073709551615"});
+ CheckUint128Case({std::numeric_limits<uint64_t>::max(), kOct,
+ /*width = */ 0, "1777777777777777777777"});
+ CheckUint128Case({std::numeric_limits<uint64_t>::max(), kHex,
+ /*width = */ 0, "ffffffffffffffff"});
+ CheckUint128Case(
+ {absl::MakeUint128(1, 0), kDec, /*width = */ 0, "18446744073709551616"});
+ CheckUint128Case({absl::MakeUint128(1, 0), kOct, /*width = */ 0,
+ "2000000000000000000000"});
+ CheckUint128Case(
+ {absl::MakeUint128(1, 0), kHex, /*width = */ 0, "10000000000000000"});
+ CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kDec,
+ /*width = */ 0, "170141183460469231731687303715884105728"});
+ CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kOct,
+ /*width = */ 0,
+ "2000000000000000000000000000000000000000000"});
+ CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kHex,
+ /*width = */ 0, "80000000000000000000000000000000"});
+ CheckUint128Case({absl::kuint128max, kDec, /*width = */ 0,
+ "340282366920938463463374607431768211455"});
+ CheckUint128Case({absl::kuint128max, kOct, /*width = */ 0,
+ "3777777777777777777777777777777777777777777"});
+ CheckUint128Case({absl::kuint128max, kHex, /*width = */ 0,
+ "ffffffffffffffffffffffffffffffff"});
+}
+
+std::vector<Uint128TestCase> GetUint128FormatCases();
+
+TEST(Uint128, OStreamFormatTest) {
+ for (const Uint128TestCase& test_case : GetUint128FormatCases()) {
+ CheckUint128Case(test_case);
+ }
+}
+
+std::vector<Uint128TestCase> GetUint128FormatCases() {
+ return {
+ {0, std::ios_base::fmtflags(), /*width = */ 0, "0"},
+ {0, std::ios_base::fmtflags(), /*width = */ 6, "_____0"},
+ {0, kPos, /*width = */ 0, "0"},
+ {0, kPos, /*width = */ 6, "_____0"},
+ {0, kBase, /*width = */ 0, "0"},
+ {0, kBase, /*width = */ 6, "_____0"},
+ {0, kBase | kPos, /*width = */ 0, "0"},
+ {0, kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kUpper, /*width = */ 0, "0"},
+ {0, kUpper, /*width = */ 6, "_____0"},
+ {0, kUpper | kPos, /*width = */ 0, "0"},
+ {0, kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kUpper | kBase, /*width = */ 0, "0"},
+ {0, kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kLeft, /*width = */ 0, "0"},
+ {0, kLeft, /*width = */ 6, "0_____"},
+ {0, kLeft | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kLeft | kBase, /*width = */ 0, "0"},
+ {0, kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kInt, /*width = */ 0, "0"},
+ {0, kInt, /*width = */ 6, "_____0"},
+ {0, kInt | kPos, /*width = */ 0, "0"},
+ {0, kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kInt | kBase, /*width = */ 0, "0"},
+ {0, kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper, /*width = */ 0, "0"},
+ {0, kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kRight, /*width = */ 0, "0"},
+ {0, kRight, /*width = */ 6, "_____0"},
+ {0, kRight | kPos, /*width = */ 0, "0"},
+ {0, kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kRight | kBase, /*width = */ 0, "0"},
+ {0, kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper, /*width = */ 0, "0"},
+ {0, kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec, /*width = */ 0, "0"},
+ {0, kDec, /*width = */ 6, "_____0"},
+ {0, kDec | kPos, /*width = */ 0, "0"},
+ {0, kDec | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kBase, /*width = */ 0, "0"},
+ {0, kDec | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kUpper, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kLeft, /*width = */ 0, "0"},
+ {0, kDec | kLeft, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kBase, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kInt, /*width = */ 0, "0"},
+ {0, kDec | kInt, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kBase, /*width = */ 0, "0"},
+ {0, kDec | kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight, /*width = */ 0, "0"},
+ {0, kDec | kRight, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kBase, /*width = */ 0, "0"},
+ {0, kDec | kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct, /*width = */ 0, "0"},
+ {0, kOct, /*width = */ 6, "_____0"},
+ {0, kOct | kPos, /*width = */ 0, "0"},
+ {0, kOct | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kBase, /*width = */ 0, "0"},
+ {0, kOct | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kUpper, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kLeft, /*width = */ 0, "0"},
+ {0, kOct | kLeft, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kBase, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kInt, /*width = */ 0, "0"},
+ {0, kOct | kInt, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kBase, /*width = */ 0, "0"},
+ {0, kOct | kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight, /*width = */ 0, "0"},
+ {0, kOct | kRight, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kBase, /*width = */ 0, "0"},
+ {0, kOct | kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex, /*width = */ 0, "0"},
+ {0, kHex, /*width = */ 6, "_____0"},
+ {0, kHex | kPos, /*width = */ 0, "0"},
+ {0, kHex | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kBase, /*width = */ 0, "0"},
+ {0, kHex | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kUpper, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kLeft, /*width = */ 0, "0"},
+ {0, kHex | kLeft, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kBase, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kInt, /*width = */ 0, "0"},
+ {0, kHex | kInt, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kBase, /*width = */ 0, "0"},
+ {0, kHex | kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight, /*width = */ 0, "0"},
+ {0, kHex | kRight, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kBase, /*width = */ 0, "0"},
+ {0, kHex | kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {37, std::ios_base::fmtflags(), /*width = */ 0, "37"},
+ {37, std::ios_base::fmtflags(), /*width = */ 6, "____37"},
+ {37, kPos, /*width = */ 0, "37"},
+ {37, kPos, /*width = */ 6, "____37"},
+ {37, kBase, /*width = */ 0, "37"},
+ {37, kBase, /*width = */ 6, "____37"},
+ {37, kBase | kPos, /*width = */ 0, "37"},
+ {37, kBase | kPos, /*width = */ 6, "____37"},
+ {37, kUpper, /*width = */ 0, "37"},
+ {37, kUpper, /*width = */ 6, "____37"},
+ {37, kUpper | kPos, /*width = */ 0, "37"},
+ {37, kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kUpper | kBase, /*width = */ 0, "37"},
+ {37, kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kLeft, /*width = */ 0, "37"},
+ {37, kLeft, /*width = */ 6, "37____"},
+ {37, kLeft | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kPos, /*width = */ 6, "37____"},
+ {37, kLeft | kBase, /*width = */ 0, "37"},
+ {37, kLeft | kBase, /*width = */ 6, "37____"},
+ {37, kLeft | kBase | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper, /*width = */ 0, "37"},
+ {37, kLeft | kUpper, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kUpper | kPos, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kLeft | kUpper | kBase, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kUpper | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kInt, /*width = */ 0, "37"},
+ {37, kInt, /*width = */ 6, "____37"},
+ {37, kInt | kPos, /*width = */ 0, "37"},
+ {37, kInt | kPos, /*width = */ 6, "____37"},
+ {37, kInt | kBase, /*width = */ 0, "37"},
+ {37, kInt | kBase, /*width = */ 6, "____37"},
+ {37, kInt | kBase | kPos, /*width = */ 0, "37"},
+ {37, kInt | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kInt | kUpper, /*width = */ 0, "37"},
+ {37, kInt | kUpper, /*width = */ 6, "____37"},
+ {37, kInt | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kInt | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kInt | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kInt | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kInt | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kInt | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kRight, /*width = */ 0, "37"},
+ {37, kRight, /*width = */ 6, "____37"},
+ {37, kRight | kPos, /*width = */ 0, "37"},
+ {37, kRight | kPos, /*width = */ 6, "____37"},
+ {37, kRight | kBase, /*width = */ 0, "37"},
+ {37, kRight | kBase, /*width = */ 6, "____37"},
+ {37, kRight | kBase | kPos, /*width = */ 0, "37"},
+ {37, kRight | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kRight | kUpper, /*width = */ 0, "37"},
+ {37, kRight | kUpper, /*width = */ 6, "____37"},
+ {37, kRight | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kRight | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kRight | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kRight | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kRight | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kRight | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec, /*width = */ 0, "37"},
+ {37, kDec, /*width = */ 6, "____37"},
+ {37, kDec | kPos, /*width = */ 0, "37"},
+ {37, kDec | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kBase, /*width = */ 0, "37"},
+ {37, kDec | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kUpper, /*width = */ 6, "____37"},
+ {37, kDec | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kLeft, /*width = */ 0, "37"},
+ {37, kDec | kLeft, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kBase, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kBase, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper | kBase, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kInt, /*width = */ 0, "37"},
+ {37, kDec | kInt, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kBase, /*width = */ 0, "37"},
+ {37, kDec | kInt | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight, /*width = */ 0, "37"},
+ {37, kDec | kRight, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kBase, /*width = */ 0, "37"},
+ {37, kDec | kRight | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kOct, /*width = */ 0, "45"},
+ {37, kOct, /*width = */ 6, "____45"},
+ {37, kOct | kPos, /*width = */ 0, "45"},
+ {37, kOct | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kBase, /*width = */ 0, "045"},
+ {37, kOct | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kUpper, /*width = */ 6, "____45"},
+ {37, kOct | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kUpper | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kUpper | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kUpper | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kLeft, /*width = */ 0, "45"},
+ {37, kOct | kLeft, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kPos, /*width = */ 0, "45"},
+ {37, kOct | kLeft | kPos, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kBase, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kBase, /*width = */ 6, "045___"},
+ {37, kOct | kLeft | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kBase | kPos, /*width = */ 6, "045___"},
+ {37, kOct | kLeft | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kLeft | kUpper, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kLeft | kUpper | kPos, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kUpper | kBase, /*width = */ 6, "045___"},
+ {37, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 6, "045___"},
+ {37, kOct | kInt, /*width = */ 0, "45"},
+ {37, kOct | kInt, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kPos, /*width = */ 0, "45"},
+ {37, kOct | kInt | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kBase, /*width = */ 0, "045"},
+ {37, kOct | kInt | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kInt | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kInt | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kInt | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kInt | kUpper, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kInt | kUpper | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kInt | kUpper | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kInt | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kInt | kUpper | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kRight, /*width = */ 0, "45"},
+ {37, kOct | kRight, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kPos, /*width = */ 0, "45"},
+ {37, kOct | kRight | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kBase, /*width = */ 0, "045"},
+ {37, kOct | kRight | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kRight | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kRight | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kRight | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kRight | kUpper, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kRight | kUpper | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kRight | kUpper | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kRight | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kRight | kUpper | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kHex, /*width = */ 0, "25"},
+ {37, kHex, /*width = */ 6, "____25"},
+ {37, kHex | kPos, /*width = */ 0, "25"},
+ {37, kHex | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kBase, /*width = */ 6, "__0x25"},
+ {37, kHex | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kBase | kPos, /*width = */ 6, "__0x25"},
+ {37, kHex | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kUpper, /*width = */ 6, "____25"},
+ {37, kHex | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kUpper | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kUpper | kBase, /*width = */ 6, "__0X25"},
+ {37, kHex | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kUpper | kBase | kPos, /*width = */ 6, "__0X25"},
+ {37, kHex | kLeft, /*width = */ 0, "25"},
+ {37, kHex | kLeft, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kPos, /*width = */ 0, "25"},
+ {37, kHex | kLeft | kPos, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kLeft | kBase, /*width = */ 6, "0x25__"},
+ {37, kHex | kLeft | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kLeft | kBase | kPos, /*width = */ 6, "0x25__"},
+ {37, kHex | kLeft | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kLeft | kUpper, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kLeft | kUpper | kPos, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kLeft | kUpper | kBase, /*width = */ 6, "0X25__"},
+ {37, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0X25__"},
+ {37, kHex | kInt, /*width = */ 0, "25"},
+ {37, kHex | kInt, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kPos, /*width = */ 0, "25"},
+ {37, kHex | kInt | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kInt | kBase, /*width = */ 6, "0x__25"},
+ {37, kHex | kInt | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kInt | kBase | kPos, /*width = */ 6, "0x__25"},
+ {37, kHex | kInt | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kInt | kUpper, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kInt | kUpper | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kInt | kUpper | kBase, /*width = */ 6, "0X__25"},
+ {37, kHex | kInt | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kInt | kUpper | kBase | kPos, /*width = */ 6, "0X__25"},
+ {37, kHex | kRight, /*width = */ 0, "25"},
+ {37, kHex | kRight, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kPos, /*width = */ 0, "25"},
+ {37, kHex | kRight | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kRight | kBase, /*width = */ 6, "__0x25"},
+ {37, kHex | kRight | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kRight | kBase | kPos, /*width = */ 6, "__0x25"},
+ {37, kHex | kRight | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kRight | kUpper, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kRight | kUpper | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kRight | kUpper | kBase, /*width = */ 6, "__0X25"},
+ {37, kHex | kRight | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kRight | kUpper | kBase | kPos, /*width = */ 6, "__0X25"}};
+}
+
+} // namespace
http://git-wip-us.apache.org/repos/asf/marmotta/blob/0eb556da/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_test.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_test.cc b/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_test.cc
new file mode 100644
index 0000000..79bcca9
--- /dev/null
+++ b/libraries/ostrich/backend/3rdparty/abseil/absl/numeric/int128_test.cc
@@ -0,0 +1,431 @@
+// 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 <algorithm>
+#include <limits>
+#include <random>
+#include <type_traits>
+#include <utility>
+#include <vector>
+
+#include "gtest/gtest.h"
+#include "absl/base/internal/cycleclock.h"
+#include "absl/meta/type_traits.h"
+
+#if defined(_MSC_VER) && _MSC_VER == 1900
+// Disable "unary minus operator applied to unsigned type" warnings in Microsoft
+// Visual C++ 14 (2015).
+#pragma warning(disable:4146)
+#endif
+
+namespace {
+
+template <typename T>
+class Uint128IntegerTraitsTest : public ::testing::Test {};
+typedef ::testing::Types<bool, char, signed char, unsigned char, char16_t,
+ char32_t, wchar_t,
+ short, // NOLINT(runtime/int)
+ unsigned short, // NOLINT(runtime/int)
+ int, unsigned int,
+ long, // NOLINT(runtime/int)
+ unsigned long, // NOLINT(runtime/int)
+ long long, // NOLINT(runtime/int)
+ unsigned long long> // NOLINT(runtime/int)
+ IntegerTypes;
+
+template <typename T>
+class Uint128FloatTraitsTest : public ::testing::Test {};
+typedef ::testing::Types<float, double, long double> FloatingPointTypes;
+
+TYPED_TEST_CASE(Uint128IntegerTraitsTest, IntegerTypes);
+
+TYPED_TEST(Uint128IntegerTraitsTest, ConstructAssignTest) {
+ static_assert(std::is_constructible<absl::uint128, TypeParam>::value,
+ "absl::uint128 must be constructible from TypeParam");
+ static_assert(std::is_assignable<absl::uint128&, TypeParam>::value,
+ "absl::uint128 must be assignable from TypeParam");
+ static_assert(!std::is_assignable<TypeParam&, absl::uint128>::value,
+ "TypeParam must not be assignable from absl::uint128");
+}
+
+TYPED_TEST_CASE(Uint128FloatTraitsTest, FloatingPointTypes);
+
+TYPED_TEST(Uint128FloatTraitsTest, ConstructAssignTest) {
+ static_assert(std::is_constructible<absl::uint128, TypeParam>::value,
+ "absl::uint128 must be constructible from TypeParam");
+ static_assert(!std::is_assignable<absl::uint128&, TypeParam>::value,
+ "absl::uint128 must not be assignable from TypeParam");
+ static_assert(!std::is_assignable<TypeParam&, absl::uint128>::value,
+ "TypeParam must not be assignable from absl::uint128");
+}
+
+#ifdef ABSL_HAVE_INTRINSIC_INT128
+// These type traits done separately as TYPED_TEST requires typeinfo, and not
+// all platforms have this for __int128 even though they define the type.
+TEST(Uint128, IntrinsicTypeTraitsTest) {
+ static_assert(std::is_constructible<absl::uint128, __int128>::value,
+ "absl::uint128 must be constructible from __int128");
+ static_assert(std::is_assignable<absl::uint128&, __int128>::value,
+ "absl::uint128 must be assignable from __int128");
+ static_assert(!std::is_assignable<__int128&, absl::uint128>::value,
+ "__int128 must not be assignable from absl::uint128");
+
+ static_assert(std::is_constructible<absl::uint128, unsigned __int128>::value,
+ "absl::uint128 must be constructible from unsigned __int128");
+ static_assert(std::is_assignable<absl::uint128&, unsigned __int128>::value,
+ "absl::uint128 must be assignable from unsigned __int128");
+ static_assert(!std::is_assignable<unsigned __int128&, absl::uint128>::value,
+ "unsigned __int128 must not be assignable from absl::uint128");
+}
+#endif // ABSL_HAVE_INTRINSIC_INT128
+
+TEST(Uint128, TrivialTraitsTest) {
+ static_assert(absl::is_trivially_default_constructible<absl::uint128>::value,
+ "");
+ static_assert(absl::is_trivially_copy_constructible<absl::uint128>::value,
+ "");
+ static_assert(absl::is_trivially_copy_assignable<absl::uint128>::value, "");
+ static_assert(std::is_trivially_destructible<absl::uint128>::value, "");
+}
+
+TEST(Uint128, AllTests) {
+ absl::uint128 zero = 0;
+ absl::uint128 one = 1;
+ absl::uint128 one_2arg = absl::MakeUint128(0, 1);
+ absl::uint128 two = 2;
+ absl::uint128 three = 3;
+ absl::uint128 big = absl::MakeUint128(2000, 2);
+ absl::uint128 big_minus_one = absl::MakeUint128(2000, 1);
+ absl::uint128 bigger = absl::MakeUint128(2001, 1);
+ absl::uint128 biggest = absl::Uint128Max();
+ absl::uint128 high_low = absl::MakeUint128(1, 0);
+ absl::uint128 low_high =
+ absl::MakeUint128(0, std::numeric_limits<uint64_t>::max());
+ EXPECT_LT(one, two);
+ EXPECT_GT(two, one);
+ EXPECT_LT(one, big);
+ EXPECT_LT(one, big);
+ EXPECT_EQ(one, one_2arg);
+ EXPECT_NE(one, two);
+ EXPECT_GT(big, one);
+ EXPECT_GE(big, two);
+ EXPECT_GE(big, big_minus_one);
+ EXPECT_GT(big, big_minus_one);
+ EXPECT_LT(big_minus_one, big);
+ EXPECT_LE(big_minus_one, big);
+ EXPECT_NE(big_minus_one, big);
+ EXPECT_LT(big, biggest);
+ EXPECT_LE(big, biggest);
+ EXPECT_GT(biggest, big);
+ EXPECT_GE(biggest, big);
+ EXPECT_EQ(big, ~~big);
+ EXPECT_EQ(one, one | one);
+ EXPECT_EQ(big, big | big);
+ EXPECT_EQ(one, one | zero);
+ EXPECT_EQ(one, one & one);
+ EXPECT_EQ(big, big & big);
+ EXPECT_EQ(zero, one & zero);
+ EXPECT_EQ(zero, big & ~big);
+ EXPECT_EQ(zero, one ^ one);
+ EXPECT_EQ(zero, big ^ big);
+ EXPECT_EQ(one, one ^ zero);
+
+ // Shift operators.
+ EXPECT_EQ(big, big << 0);
+ EXPECT_EQ(big, big >> 0);
+ EXPECT_GT(big << 1, big);
+ EXPECT_LT(big >> 1, big);
+ EXPECT_EQ(big, (big << 10) >> 10);
+ EXPECT_EQ(big, (big >> 1) << 1);
+ EXPECT_EQ(one, (one << 80) >> 80);
+ EXPECT_EQ(zero, (one >> 80) << 80);
+
+ // Shift assignments.
+ absl::uint128 big_copy = big;
+ EXPECT_EQ(big << 0, big_copy <<= 0);
+ big_copy = big;
+ EXPECT_EQ(big >> 0, big_copy >>= 0);
+ big_copy = big;
+ EXPECT_EQ(big << 1, big_copy <<= 1);
+ big_copy = big;
+ EXPECT_EQ(big >> 1, big_copy >>= 1);
+ big_copy = big;
+ EXPECT_EQ(big << 10, big_copy <<= 10);
+ big_copy = big;
+ EXPECT_EQ(big >> 10, big_copy >>= 10);
+ big_copy = big;
+ EXPECT_EQ(big << 64, big_copy <<= 64);
+ big_copy = big;
+ EXPECT_EQ(big >> 64, big_copy >>= 64);
+ big_copy = big;
+ EXPECT_EQ(big << 73, big_copy <<= 73);
+ big_copy = big;
+ EXPECT_EQ(big >> 73, big_copy >>= 73);
+
+ EXPECT_EQ(absl::Uint128High64(biggest), std::numeric_limits<uint64_t>::max());
+ EXPECT_EQ(absl::Uint128Low64(biggest), std::numeric_limits<uint64_t>::max());
+ EXPECT_EQ(zero + one, one);
+ EXPECT_EQ(one + one, two);
+ EXPECT_EQ(big_minus_one + one, big);
+ EXPECT_EQ(one - one, zero);
+ EXPECT_EQ(one - zero, one);
+ EXPECT_EQ(zero - one, biggest);
+ EXPECT_EQ(big - big, zero);
+ EXPECT_EQ(big - one, big_minus_one);
+ EXPECT_EQ(big + std::numeric_limits<uint64_t>::max(), bigger);
+ EXPECT_EQ(biggest + 1, zero);
+ EXPECT_EQ(zero - 1, biggest);
+ EXPECT_EQ(high_low - one, low_high);
+ EXPECT_EQ(low_high + one, high_low);
+ EXPECT_EQ(absl::Uint128High64((absl::uint128(1) << 64) - 1), 0);
+ EXPECT_EQ(absl::Uint128Low64((absl::uint128(1) << 64) - 1),
+ std::numeric_limits<uint64_t>::max());
+ EXPECT_TRUE(!!one);
+ EXPECT_TRUE(!!high_low);
+ EXPECT_FALSE(!!zero);
+ EXPECT_FALSE(!one);
+ EXPECT_FALSE(!high_low);
+ EXPECT_TRUE(!zero);
+ EXPECT_TRUE(zero == 0); // NOLINT(readability/check)
+ EXPECT_FALSE(zero != 0); // NOLINT(readability/check)
+ EXPECT_FALSE(one == 0); // NOLINT(readability/check)
+ EXPECT_TRUE(one != 0); // NOLINT(readability/check)
+ EXPECT_FALSE(high_low == 0); // NOLINT(readability/check)
+ EXPECT_TRUE(high_low != 0); // NOLINT(readability/check)
+
+ absl::uint128 test = zero;
+ EXPECT_EQ(++test, one);
+ EXPECT_EQ(test, one);
+ EXPECT_EQ(test++, one);
+ EXPECT_EQ(test, two);
+ EXPECT_EQ(test -= 2, zero);
+ EXPECT_EQ(test, zero);
+ EXPECT_EQ(test += 2, two);
+ EXPECT_EQ(test, two);
+ EXPECT_EQ(--test, one);
+ EXPECT_EQ(test, one);
+ EXPECT_EQ(test--, one);
+ EXPECT_EQ(test, zero);
+ EXPECT_EQ(test |= three, three);
+ EXPECT_EQ(test &= one, one);
+ EXPECT_EQ(test ^= three, two);
+ EXPECT_EQ(test >>= 1, one);
+ EXPECT_EQ(test <<= 1, two);
+
+ EXPECT_EQ(big, -(-big));
+ EXPECT_EQ(two, -((-one) - 1));
+ EXPECT_EQ(absl::Uint128Max(), -one);
+ EXPECT_EQ(zero, -zero);
+
+ EXPECT_EQ(absl::Uint128Max(), absl::kuint128max);
+}
+
+TEST(Uint128, ConversionTests) {
+ EXPECT_TRUE(absl::MakeUint128(1, 0));
+
+#ifdef ABSL_HAVE_INTRINSIC_INT128
+ unsigned __int128 intrinsic =
+ (static_cast<unsigned __int128>(0x3a5b76c209de76f6) << 64) +
+ 0x1f25e1d63a2b46c5;
+ absl::uint128 custom =
+ absl::MakeUint128(0x3a5b76c209de76f6, 0x1f25e1d63a2b46c5);
+
+ EXPECT_EQ(custom, absl::uint128(intrinsic));
+ EXPECT_EQ(custom, absl::uint128(static_cast<__int128>(intrinsic)));
+ EXPECT_EQ(intrinsic, static_cast<unsigned __int128>(custom));
+ EXPECT_EQ(intrinsic, static_cast<__int128>(custom));
+#endif // ABSL_HAVE_INTRINSIC_INT128
+
+ // verify that an integer greater than 2**64 that can be stored precisely
+ // inside a double is converted to a absl::uint128 without loss of
+ // information.
+ double precise_double = 0x530e * std::pow(2.0, 64.0) + 0xda74000000000000;
+ absl::uint128 from_precise_double(precise_double);
+ absl::uint128 from_precise_ints =
+ absl::MakeUint128(0x530e, 0xda74000000000000);
+ EXPECT_EQ(from_precise_double, from_precise_ints);
+ EXPECT_DOUBLE_EQ(static_cast<double>(from_precise_ints), precise_double);
+
+ double approx_double = 0xffffeeeeddddcccc * std::pow(2.0, 64.0) +
+ 0xbbbbaaaa99998888;
+ absl::uint128 from_approx_double(approx_double);
+ EXPECT_DOUBLE_EQ(static_cast<double>(from_approx_double), approx_double);
+
+ double round_to_zero = 0.7;
+ double round_to_five = 5.8;
+ double round_to_nine = 9.3;
+ EXPECT_EQ(static_cast<absl::uint128>(round_to_zero), 0);
+ EXPECT_EQ(static_cast<absl::uint128>(round_to_five), 5);
+ EXPECT_EQ(static_cast<absl::uint128>(round_to_nine), 9);
+}
+
+TEST(Uint128, OperatorAssignReturnRef) {
+ absl::uint128 v(1);
+ (v += 4) -= 3;
+ EXPECT_EQ(2, v);
+}
+
+TEST(Uint128, Multiply) {
+ absl::uint128 a, b, c;
+
+ // Zero test.
+ a = 0;
+ b = 0;
+ c = a * b;
+ EXPECT_EQ(0, c);
+
+ // Max carries.
+ a = absl::uint128(0) - 1;
+ b = absl::uint128(0) - 1;
+ c = a * b;
+ EXPECT_EQ(1, c);
+
+ // Self-operation with max carries.
+ c = absl::uint128(0) - 1;
+ c *= c;
+ EXPECT_EQ(1, c);
+
+ // 1-bit x 1-bit.
+ for (int i = 0; i < 64; ++i) {
+ for (int j = 0; j < 64; ++j) {
+ a = absl::uint128(1) << i;
+ b = absl::uint128(1) << j;
+ c = a * b;
+ EXPECT_EQ(absl::uint128(1) << (i + j), c);
+ }
+ }
+
+ // Verified with dc.
+ a = absl::MakeUint128(0xffffeeeeddddcccc, 0xbbbbaaaa99998888);
+ b = absl::MakeUint128(0x7777666655554444, 0x3333222211110000);
+ c = a * b;
+ EXPECT_EQ(absl::MakeUint128(0x530EDA741C71D4C3, 0xBF25975319080000), c);
+ EXPECT_EQ(0, c - b * a);
+ EXPECT_EQ(a*a - b*b, (a+b) * (a-b));
+
+ // Verified with dc.
+ a = absl::MakeUint128(0x0123456789abcdef, 0xfedcba9876543210);
+ b = absl::MakeUint128(0x02468ace13579bdf, 0xfdb97531eca86420);
+ c = a * b;
+ EXPECT_EQ(absl::MakeUint128(0x97a87f4f261ba3f2, 0x342d0bbf48948200), c);
+ EXPECT_EQ(0, c - b * a);
+ EXPECT_EQ(a*a - b*b, (a+b) * (a-b));
+}
+
+TEST(Uint128, AliasTests) {
+ absl::uint128 x1 = absl::MakeUint128(1, 2);
+ absl::uint128 x2 = absl::MakeUint128(2, 4);
+ x1 += x1;
+ EXPECT_EQ(x2, x1);
+
+ absl::uint128 x3 = absl::MakeUint128(1, static_cast<uint64_t>(1) << 63);
+ absl::uint128 x4 = absl::MakeUint128(3, 0);
+ x3 += x3;
+ EXPECT_EQ(x4, x3);
+}
+
+TEST(Uint128, DivideAndMod) {
+ using std::swap;
+
+ // a := q * b + r
+ absl::uint128 a, b, q, r;
+
+ // Zero test.
+ a = 0;
+ b = 123;
+ q = a / b;
+ r = a % b;
+ EXPECT_EQ(0, q);
+ EXPECT_EQ(0, r);
+
+ a = absl::MakeUint128(0x530eda741c71d4c3, 0xbf25975319080000);
+ q = absl::MakeUint128(0x4de2cab081, 0x14c34ab4676e4bab);
+ b = absl::uint128(0x1110001);
+ r = absl::uint128(0x3eb455);
+ ASSERT_EQ(a, q * b + r); // Sanity-check.
+
+ absl::uint128 result_q, result_r;
+ result_q = a / b;
+ result_r = a % b;
+ EXPECT_EQ(q, result_q);
+ EXPECT_EQ(r, result_r);
+
+ // Try the other way around.
+ swap(q, b);
+ result_q = a / b;
+ result_r = a % b;
+ EXPECT_EQ(q, result_q);
+ EXPECT_EQ(r, result_r);
+ // Restore.
+ swap(b, q);
+
+ // Dividend < divisor; result should be q:0 r:<dividend>.
+ swap(a, b);
+ result_q = a / b;
+ result_r = a % b;
+ EXPECT_EQ(0, result_q);
+ EXPECT_EQ(a, result_r);
+ // Try the other way around.
+ swap(a, q);
+ result_q = a / b;
+ result_r = a % b;
+ EXPECT_EQ(0, result_q);
+ EXPECT_EQ(a, result_r);
+ // Restore.
+ swap(q, a);
+ swap(b, a);
+
+ // Try a large remainder.
+ b = a / 2 + 1;
+ absl::uint128 expected_r =
+ absl::MakeUint128(0x29876d3a0e38ea61, 0xdf92cba98c83ffff);
+ // Sanity checks.
+ ASSERT_EQ(a / 2 - 1, expected_r);
+ ASSERT_EQ(a, b + expected_r);
+ result_q = a / b;
+ result_r = a % b;
+ EXPECT_EQ(1, result_q);
+ EXPECT_EQ(expected_r, result_r);
+}
+
+TEST(Uint128, DivideAndModRandomInputs) {
+ const int kNumIters = 1 << 18;
+ std::minstd_rand random(testing::UnitTest::GetInstance()->random_seed());
+ std::uniform_int_distribution<uint64_t> uniform_uint64;
+ for (int i = 0; i < kNumIters; ++i) {
+ const absl::uint128 a =
+ absl::MakeUint128(uniform_uint64(random), uniform_uint64(random));
+ const absl::uint128 b =
+ absl::MakeUint128(uniform_uint64(random), uniform_uint64(random));
+ if (b == 0) {
+ continue; // Avoid a div-by-zero.
+ }
+ const absl::uint128 q = a / b;
+ const absl::uint128 r = a % b;
+ ASSERT_EQ(a, b * q + r);
+ }
+}
+
+TEST(Uint128, ConstexprTest) {
+ constexpr absl::uint128 zero = absl::uint128();
+ constexpr absl::uint128 one = 1;
+ constexpr absl::uint128 minus_two = -2;
+ EXPECT_EQ(zero, absl::uint128(0));
+ EXPECT_EQ(one, absl::uint128(1));
+ EXPECT_EQ(minus_two, absl::MakeUint128(-1, -2));
+}
+
+} // namespace
http://git-wip-us.apache.org/repos/asf/marmotta/blob/0eb556da/libraries/ostrich/backend/3rdparty/abseil/absl/strings/BUILD.bazel
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/3rdparty/abseil/absl/strings/BUILD.bazel b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/BUILD.bazel
new file mode 100644
index 0000000..13badb7
--- /dev/null
+++ b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/BUILD.bazel
@@ -0,0 +1,322 @@
+#
+# 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.
+#
+# -*- mode: python; -*-
+# Libraries in this low-level package may not depend on libraries in packages
+# that are not low level. For more information, including how to submit
+# changes to this file, see http://www/eng/howto/build-monitors.html
+
+load(
+ "//absl:copts.bzl",
+ "ABSL_DEFAULT_COPTS",
+ "ABSL_TEST_COPTS",
+ "ABSL_EXCEPTIONS_FLAG",
+)
+
+package(
+ default_visibility = ["//visibility:public"],
+ features = ["parse_headers"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+cc_library(
+ name = "strings",
+ srcs = [
+ "ascii.cc",
+ "escaping.cc",
+ "internal/memutil.cc",
+ "internal/memutil.h",
+ "internal/stl_type_traits.h",
+ "internal/str_join_internal.h",
+ "internal/str_split_internal.h",
+ "match.cc",
+ "numbers.cc",
+ "str_cat.cc",
+ "str_replace.cc",
+ "str_split.cc",
+ "string_view.cc",
+ "substitute.cc",
+ ],
+ hdrs = [
+ "ascii.h",
+ "escaping.h",
+ "match.h",
+ "numbers.h",
+ "str_cat.h",
+ "str_join.h",
+ "str_replace.h",
+ "str_split.h",
+ "string_view.h",
+ "strip.h",
+ "substitute.h",
+ ],
+ copts = ABSL_DEFAULT_COPTS,
+ deps = [
+ ":internal",
+ "//absl/base",
+ "//absl/base:config",
+ "//absl/base:core_headers",
+ "//absl/base:endian",
+ "//absl/base:throw_delegate",
+ "//absl/memory",
+ "//absl/meta:type_traits",
+ "//absl/numeric:int128",
+ ],
+)
+
+cc_library(
+ name = "internal",
+ srcs = [
+ "internal/ostringstream.cc",
+ "internal/utf8.cc",
+ ],
+ hdrs = [
+ "internal/char_map.h",
+ "internal/ostringstream.h",
+ "internal/resize_uninitialized.h",
+ "internal/utf8.h",
+ ],
+ copts = ABSL_DEFAULT_COPTS,
+ deps = [
+ "//absl/base:core_headers",
+ "//absl/base:endian",
+ "//absl/meta:type_traits",
+ ],
+)
+
+cc_test(
+ name = "match_test",
+ size = "small",
+ srcs = ["match_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "escaping_test",
+ size = "small",
+ srcs = [
+ "escaping_test.cc",
+ "internal/escaping_test_common.inc",
+ ],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:core_headers",
+ "//absl/container:fixed_array",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "ascii_test",
+ size = "small",
+ srcs = ["ascii_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:core_headers",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "memutil_test",
+ size = "small",
+ srcs = [
+ "internal/memutil.h",
+ "internal/memutil_test.cc",
+ ],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:core_headers",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "utf8_test",
+ size = "small",
+ srcs = [
+ "internal/utf8_test.cc",
+ ],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":internal",
+ ":strings",
+ "//absl/base:core_headers",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "string_view_test",
+ size = "small",
+ srcs = ["string_view_test.cc"],
+ copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:config",
+ "//absl/base:core_headers",
+ "//absl/base:dynamic_annotations",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "substitute_test",
+ size = "small",
+ srcs = ["substitute_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:core_headers",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "str_replace_test",
+ size = "small",
+ srcs = ["str_replace_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "str_split_test",
+ srcs = ["str_split_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:core_headers",
+ "//absl/base:dynamic_annotations",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "ostringstream_test",
+ size = "small",
+ srcs = ["internal/ostringstream_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":internal",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "resize_uninitialized_test",
+ size = "small",
+ srcs = [
+ "internal/resize_uninitialized.h",
+ "internal/resize_uninitialized_test.cc",
+ ],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ "//absl/base:core_headers",
+ "//absl/meta:type_traits",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "str_join_test",
+ size = "small",
+ srcs = ["str_join_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:core_headers",
+ "//absl/memory",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "str_cat_test",
+ size = "small",
+ srcs = ["str_cat_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base:core_headers",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "numbers_test",
+ size = "small",
+ srcs = [
+ "internal/numbers_test_common.inc",
+ "numbers_test.cc",
+ ],
+ copts = ABSL_TEST_COPTS,
+ tags = [
+ "no_test_loonix",
+ ],
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "//absl/base",
+ "//absl/base:core_headers",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "strip_test",
+ size = "small",
+ srcs = ["strip_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ visibility = ["//visibility:private"],
+ deps = [
+ ":strings",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
+
+cc_test(
+ name = "char_map_test",
+ srcs = ["internal/char_map_test.cc"],
+ copts = ABSL_TEST_COPTS,
+ deps = [
+ ":internal",
+ "@com_google_googletest//:gtest_main",
+ ],
+)
http://git-wip-us.apache.org/repos/asf/marmotta/blob/0eb556da/libraries/ostrich/backend/3rdparty/abseil/absl/strings/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/3rdparty/abseil/absl/strings/CMakeLists.txt b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/CMakeLists.txt
new file mode 100644
index 0000000..83cb934
--- /dev/null
+++ b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/CMakeLists.txt
@@ -0,0 +1,304 @@
+#
+# 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.
+#
+
+
+list(APPEND STRINGS_PUBLIC_HEADERS
+ "ascii.h"
+ "escaping.h"
+ "match.h"
+ "numbers.h"
+ "str_cat.h"
+ "string_view.h"
+ "strip.h"
+ "str_join.h"
+ "str_replace.h"
+ "str_split.h"
+ "substitute.h"
+)
+
+
+list(APPEND STRINGS_INTERNAL_HEADERS
+ "internal/char_map.h"
+ "internal/memutil.h"
+ "internal/ostringstream.h"
+ "internal/resize_uninitialized.h"
+ "internal/stl_type_traits.h"
+ "internal/str_join_internal.h"
+ "internal/str_split_internal.h"
+ "internal/utf8.h"
+)
+
+
+
+# add string library
+list(APPEND STRINGS_SRC
+ "ascii.cc"
+ "escaping.cc"
+ "internal/memutil.cc"
+ "internal/memutil.h"
+ "internal/utf8.cc"
+ "internal/ostringstream.cc"
+ "match.cc"
+ "numbers.cc"
+ "str_cat.cc"
+ "str_replace.cc"
+ "str_split.cc"
+ "string_view.cc"
+ "substitute.cc"
+ ${STRINGS_PUBLIC_HEADERS}
+ ${STRINGS_INTERNAL_HEADERS}
+)
+set(STRINGS_PUBLIC_LIBRARIES absl::base absl_throw_delegate)
+
+absl_library(
+ TARGET
+ absl_strings
+ SOURCES
+ ${STRINGS_SRC}
+ PUBLIC_LIBRARIES
+ ${STRINGS_PUBLIC_LIBRARIES}
+ EXPORT_NAME
+ strings
+)
+
+
+#
+## TESTS
+#
+
+# test match_test
+set(MATCH_TEST_SRC "match_test.cc")
+set(MATCH_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ match_test
+ SOURCES
+ ${MATCH_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${MATCH_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test escaping_test
+set(ESCAPING_TEST_SRC "escaping_test.cc")
+set(ESCAPING_TEST_PUBLIC_LIBRARIES absl::strings absl::base)
+
+absl_test(
+ TARGET
+ escaping_test
+ SOURCES
+ ${ESCAPING_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${ESCAPING_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test ascii_test
+set(ASCII_TEST_SRC "ascii_test.cc")
+set(ASCII_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ ascii_test
+ SOURCES
+ ${ASCII_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${ASCII_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test memutil_test
+set(MEMUTIL_TEST_SRC "internal/memutil_test.cc")
+set(MEMUTIL_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ memutil_test
+ SOURCES
+ ${MEMUTIL_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${MEMUTIL_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test utf8_test
+set(UTF8_TEST_SRC "internal/utf8_test.cc")
+set(UTF8_TEST_PUBLIC_LIBRARIES absl::strings absl::base)
+
+absl_test(
+ TARGET
+ utf8_test
+ SOURCES
+ ${UTF8_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${UTF8_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test string_view_test
+set(STRING_VIEW_TEST_SRC "string_view_test.cc")
+set(STRING_VIEW_TEST_PUBLIC_LIBRARIES absl::strings absl_throw_delegate absl::base)
+
+absl_test(
+ TARGET
+ string_view_test
+ SOURCES
+ ${STRING_VIEW_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${STRING_VIEW_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test substitute_test
+set(SUBSTITUTE_TEST_SRC "substitute_test.cc")
+set(SUBSTITUTE_TEST_PUBLIC_LIBRARIES absl::strings absl::base)
+
+absl_test(
+ TARGET
+ substitute_test
+ SOURCES
+ ${SUBSTITUTE_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${SUBSTITUTE_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test str_replace_test
+set(STR_REPLACE_TEST_SRC "str_replace_test.cc")
+set(STR_REPLACE_TEST_PUBLIC_LIBRARIES absl::strings absl::base absl_throw_delegate)
+
+absl_test(
+ TARGET
+ str_replace_test
+ SOURCES
+ ${STR_REPLACE_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${STR_REPLACE_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test str_split_test
+set(STR_SPLIT_TEST_SRC "str_split_test.cc")
+set(STR_SPLIT_TEST_PUBLIC_LIBRARIES absl::strings absl::base absl_throw_delegate)
+
+absl_test(
+ TARGET
+ str_split_test
+ SOURCES
+ ${STR_SPLIT_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${STR_SPLIT_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test ostringstream_test
+set(OSTRINGSTREAM_TEST_SRC "internal/ostringstream_test.cc")
+set(OSTRINGSTREAM_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ ostringstream_test
+ SOURCES
+ ${OSTRINGSTREAM_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${OSTRINGSTREAM_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test resize_uninitialized_test
+set(RESIZE_UNINITIALIZED_TEST_SRC "internal/resize_uninitialized_test.cc")
+
+absl_test(
+ TARGET
+ resize_uninitialized_test
+ SOURCES
+ ${RESIZE_UNINITIALIZED_TEST_SRC}
+)
+
+
+# test str_join_test
+set(STR_JOIN_TEST_SRC "str_join_test.cc")
+set(STR_JOIN_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ str_join_test
+ SOURCES
+ ${STR_JOIN_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${STR_JOIN_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test str_cat_test
+set(STR_CAT_TEST_SRC "str_cat_test.cc")
+set(STR_CAT_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ str_cat_test
+ SOURCES
+ ${STR_CAT_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${STR_CAT_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test numbers_test
+set(NUMBERS_TEST_SRC "numbers_test.cc")
+set(NUMBERS_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ numbers_test
+ SOURCES
+ ${NUMBERS_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${NUMBERS_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test strip_test
+set(STRIP_TEST_SRC "strip_test.cc")
+set(STRIP_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ strip_test
+ SOURCES
+ ${STRIP_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${STRIP_TEST_PUBLIC_LIBRARIES}
+)
+
+
+# test char_map_test
+set(CHAR_MAP_TEST_SRC "internal/char_map_test.cc")
+set(CHAR_MAP_TEST_PUBLIC_LIBRARIES absl::strings)
+
+absl_test(
+ TARGET
+ char_map_test
+ SOURCES
+ ${CHAR_MAP_TEST_SRC}
+ PUBLIC_LIBRARIES
+ ${CHAR_MAP_TEST_PUBLIC_LIBRARIES}
+)
+
+
+
+
http://git-wip-us.apache.org/repos/asf/marmotta/blob/0eb556da/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.cc
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.cc b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.cc
new file mode 100644
index 0000000..c9481e8
--- /dev/null
+++ b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.cc
@@ -0,0 +1,198 @@
+// 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/strings/ascii.h"
+
+namespace absl {
+namespace ascii_internal {
+
+// # Table generated by this Python code (bit 0x02 is currently unused):
+// TODO(mbar) Move Python code for generation of table to BUILD and link here.
+
+// NOTE: The kAsciiPropertyBits table used within this code was generated by
+// Python code of the following form. (Bit 0x02 is currently unused and
+// available.)
+//
+// def Hex2(n):
+// return '0x' + hex(n/16)[2:] + hex(n%16)[2:]
+// def IsPunct(ch):
+// return (ord(ch) >= 32 and ord(ch) < 127 and
+// not ch.isspace() and not ch.isalnum())
+// def IsBlank(ch):
+// return ch in ' \t'
+// def IsCntrl(ch):
+// return ord(ch) < 32 or ord(ch) == 127
+// def IsXDigit(ch):
+// return ch.isdigit() or ch.lower() in 'abcdef'
+// for i in range(128):
+// ch = chr(i)
+// mask = ((ch.isalpha() and 0x01 or 0) |
+// (ch.isalnum() and 0x04 or 0) |
+// (ch.isspace() and 0x08 or 0) |
+// (IsPunct(ch) and 0x10 or 0) |
+// (IsBlank(ch) and 0x20 or 0) |
+// (IsCntrl(ch) and 0x40 or 0) |
+// (IsXDigit(ch) and 0x80 or 0))
+// print Hex2(mask) + ',',
+// if i % 16 == 7:
+// print ' //', Hex2(i & 0x78)
+// elif i % 16 == 15:
+// print
+
+// clang-format off
+// Array of bitfields holding character information. Each bit value corresponds
+// to a particular character feature. For readability, and because the value
+// of these bits is tightly coupled to this implementation, the individual bits
+// are not named. Note that bitfields for all characters above ASCII 127 are
+// zero-initialized.
+const unsigned char kPropertyBits[256] = {
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 0x00
+ 0x40, 0x68, 0x48, 0x48, 0x48, 0x48, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // 0x10
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 0x20
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, // 0x30
+ 0x84, 0x84, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x05, // 0x40
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, // 0x50
+ 0x05, 0x05, 0x05, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x05, // 0x60
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, // 0x70
+ 0x05, 0x05, 0x05, 0x10, 0x10, 0x10, 0x10, 0x40,
+};
+
+// Array of characters for the ascii_tolower() function. For values 'A'
+// through 'Z', return the lower-case character; otherwise, return the
+// identity of the passed character.
+const char kToLower[256] = {
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',
+ '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f',
+ '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77',
+ '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
+ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
+ '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7',
+ '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf',
+ '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7',
+ '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf',
+ '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf',
+ '\xd0', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7',
+ '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf',
+ '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7',
+ '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff',
+};
+
+// Array of characters for the ascii_toupper() function. For values 'a'
+// through 'z', return the upper-case character; otherwise, return the
+// identity of the passed character.
+const char kToUpper[256] = {
+ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
+ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
+ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
+ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
+ '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27',
+ '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f',
+ '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',
+ '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f',
+ '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',
+ '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f',
+ '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57',
+ '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f',
+ '\x60', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f',
+ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
+ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
+ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
+ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
+ '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7',
+ '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf',
+ '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7',
+ '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf',
+ '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7',
+ '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf',
+ '\xd0', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7',
+ '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf',
+ '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7',
+ '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef',
+ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
+ '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff',
+};
+// clang-format on
+
+} // namespace ascii_internal
+
+void AsciiStrToLower(std::string* s) {
+ for (auto& ch : *s) {
+ ch = absl::ascii_tolower(ch);
+ }
+}
+
+void AsciiStrToUpper(std::string* s) {
+ for (auto& ch : *s) {
+ ch = absl::ascii_toupper(ch);
+ }
+}
+
+void RemoveExtraAsciiWhitespace(std::string* str) {
+ auto stripped = StripAsciiWhitespace(*str);
+
+ if (stripped.empty()) {
+ str->clear();
+ return;
+ }
+
+ auto input_it = stripped.begin();
+ auto input_end = stripped.end();
+ auto output_it = &(*str)[0];
+ bool is_ws = false;
+
+ for (; input_it < input_end; ++input_it) {
+ if (is_ws) {
+ // Consecutive whitespace? Keep only the last.
+ is_ws = absl::ascii_isspace(*input_it);
+ if (is_ws) --output_it;
+ } else {
+ is_ws = absl::ascii_isspace(*input_it);
+ }
+
+ *output_it = *input_it;
+ ++output_it;
+ }
+
+ str->erase(output_it - &(*str)[0]);
+}
+
+} // namespace absl
http://git-wip-us.apache.org/repos/asf/marmotta/blob/0eb556da/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.h
----------------------------------------------------------------------
diff --git a/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.h b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.h
new file mode 100644
index 0000000..96a6454
--- /dev/null
+++ b/libraries/ostrich/backend/3rdparty/abseil/absl/strings/ascii.h
@@ -0,0 +1,239 @@
+//
+// 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.
+//
+// -----------------------------------------------------------------------------
+// File: ascii.h
+// -----------------------------------------------------------------------------
+//
+// This package contains functions operating on characters and strings
+// restricted to standard ASCII. These include character classification
+// functions analogous to those found in the ANSI C Standard Library <ctype.h>
+// header file.
+//
+// C++ implementations provide <ctype.h> functionality based on their
+// C environment locale. In general, reliance on such a locale is not ideal, as
+// the locale standard is problematic (and may not return invariant information
+// for the same character set, for example). These `ascii_*()` functions are
+// hard-wired for standard ASCII, much faster, and guaranteed to behave
+// consistently. They will never be overloaded, nor will their function
+// signature change.
+//
+// `ascii_isalnum()`, `ascii_isalpha()`, `ascii_isascii()`, `ascii_isblank()`,
+// `ascii_iscntrl()`, `ascii_isdigit()`, `ascii_isgraph()`, `ascii_islower()`,
+// `ascii_isprint()`, `ascii_ispunct()`, `ascii_isspace()`, `ascii_isupper()`,
+// `ascii_isxdigit()`
+// Analogous to the <ctype.h> functions with similar names, these
+// functions take an unsigned char and return a bool, based on whether the
+// character matches the condition specified.
+//
+// If the input character has a numerical value greater than 127, these
+// functions return `false`.
+//
+// `ascii_tolower()`, `ascii_toupper()`
+// Analogous to the <ctype.h> functions with similar names, these functions
+// take an unsigned char and return a char.
+//
+// If the input character is not an ASCII {lower,upper}-case letter (including
+// numerical values greater than 127) then the functions return the same value
+// as the input character.
+
+#ifndef ABSL_STRINGS_ASCII_H_
+#define ABSL_STRINGS_ASCII_H_
+
+#include <algorithm>
+#include <string>
+
+#include "absl/base/attributes.h"
+#include "absl/strings/string_view.h"
+
+namespace absl {
+namespace ascii_internal {
+
+// Declaration for an array of bitfields holding character information.
+extern const unsigned char kPropertyBits[256];
+
+// Declaration for the array of characters to upper-case characters.
+extern const char kToUpper[256];
+
+// Declaration for the array of characters to lower-case characters.
+extern const char kToLower[256];
+
+} // namespace ascii_internal
+
+// ascii_isalpha()
+//
+// Determines whether the given character is an alphabetic character.
+inline bool ascii_isalpha(unsigned char c) {
+ return (ascii_internal::kPropertyBits[c] & 0x01) != 0;
+}
+
+// ascii_isalnum()
+//
+// Determines whether the given character is an alphanumeric character.
+inline bool ascii_isalnum(unsigned char c) {
+ return (ascii_internal::kPropertyBits[c] & 0x04) != 0;
+}
+
+// ascii_isspace()
+//
+// Determines whether the given character is a whitespace character (space,
+// tab, vertical tab, formfeed, linefeed, or carriage return).
+inline bool ascii_isspace(unsigned char c) {
+ return (ascii_internal::kPropertyBits[c] & 0x08) != 0;
+}
+
+// ascii_ispunct()
+//
+// Determines whether the given character is a punctuation character.
+inline bool ascii_ispunct(unsigned char c) {
+ return (ascii_internal::kPropertyBits[c] & 0x10) != 0;
+}
+
+// ascii_isblank()
+//
+// Determines whether the given character is a blank character (tab or space).
+inline bool ascii_isblank(unsigned char c) {
+ return (ascii_internal::kPropertyBits[c] & 0x20) != 0;
+}
+
+// ascii_iscntrl()
+//
+// Determines whether the given character is a control character.
+inline bool ascii_iscntrl(unsigned char c) {
+ return (ascii_internal::kPropertyBits[c] & 0x40) != 0;
+}
+
+// ascii_isxdigit()
+//
+// Determines whether the given character can be represented as a hexadecimal
+// digit character (i.e. {0-9} or {A-F}).
+inline bool ascii_isxdigit(unsigned char c) {
+ return (ascii_internal::kPropertyBits[c] & 0x80) != 0;
+}
+
+// ascii_isdigit()
+//
+// Determines whether the given character can be represented as a decimal
+// digit character (i.e. {0-9}).
+inline bool ascii_isdigit(unsigned char c) { return c >= '0' && c <= '9'; }
+
+// ascii_isprint()
+//
+// Determines whether the given character is printable, including whitespace.
+inline bool ascii_isprint(unsigned char c) { return c >= 32 && c < 127; }
+
+// ascii_isgraph()
+//
+// Determines whether the given character has a graphical representation.
+inline bool ascii_isgraph(unsigned char c) { return c > 32 && c < 127; }
+
+// ascii_isupper()
+//
+// Determines whether the given character is uppercase.
+inline bool ascii_isupper(unsigned char c) { return c >= 'A' && c <= 'Z'; }
+
+// ascii_islower()
+//
+// Determines whether the given character is lowercase.
+inline bool ascii_islower(unsigned char c) { return c >= 'a' && c <= 'z'; }
+
+// ascii_isascii()
+//
+// Determines whether the given character is ASCII.
+inline bool ascii_isascii(unsigned char c) { return c < 128; }
+
+// ascii_tolower()
+//
+// Returns an ASCII character, converting to lowercase if uppercase is
+// passed. Note that character values > 127 are simply returned.
+inline char ascii_tolower(unsigned char c) {
+ return ascii_internal::kToLower[c];
+}
+
+// Converts the characters in `s` to lowercase, changing the contents of `s`.
+void AsciiStrToLower(std::string* s);
+
+// Creates a lowercase std::string from a given absl::string_view.
+ABSL_MUST_USE_RESULT inline std::string AsciiStrToLower(absl::string_view s) {
+ std::string result(s);
+ absl::AsciiStrToLower(&result);
+ return result;
+}
+
+// ascii_toupper()
+//
+// Returns the ASCII character, converting to upper-case if lower-case is
+// passed. Note that characters values > 127 are simply returned.
+inline char ascii_toupper(unsigned char c) {
+ return ascii_internal::kToUpper[c];
+}
+
+// Converts the characters in `s` to uppercase, changing the contents of `s`.
+void AsciiStrToUpper(std::string* s);
+
+// Creates an uppercase std::string from a given absl::string_view.
+ABSL_MUST_USE_RESULT inline std::string AsciiStrToUpper(absl::string_view s) {
+ std::string result(s);
+ absl::AsciiStrToUpper(&result);
+ return result;
+}
+
+// Returns absl::string_view with whitespace stripped from the beginning of the
+// given string_view.
+ABSL_MUST_USE_RESULT inline absl::string_view StripLeadingAsciiWhitespace(
+ absl::string_view str) {
+ auto it = std::find_if_not(str.begin(), str.end(), absl::ascii_isspace);
+ return absl::string_view(it, str.end() - it);
+}
+
+// Strips in place whitespace from the beginning of the given std::string.
+inline void StripLeadingAsciiWhitespace(std::string* str) {
+ auto it = std::find_if_not(str->begin(), str->end(), absl::ascii_isspace);
+ str->erase(str->begin(), it);
+}
+
+// Returns absl::string_view with whitespace stripped from the end of the given
+// string_view.
+ABSL_MUST_USE_RESULT inline absl::string_view StripTrailingAsciiWhitespace(
+ absl::string_view str) {
+ auto it = std::find_if_not(str.rbegin(), str.rend(), absl::ascii_isspace);
+ return absl::string_view(str.begin(), str.rend() - it);
+}
+
+// Strips in place whitespace from the end of the given std::string
+inline void StripTrailingAsciiWhitespace(std::string* str) {
+ auto it = std::find_if_not(str->rbegin(), str->rend(), absl::ascii_isspace);
+ str->erase(str->rend() - it);
+}
+
+// Returns absl::string_view with whitespace stripped from both ends of the
+// given string_view.
+ABSL_MUST_USE_RESULT inline absl::string_view StripAsciiWhitespace(
+ absl::string_view str) {
+ return StripTrailingAsciiWhitespace(StripLeadingAsciiWhitespace(str));
+}
+
+// Strips in place whitespace from both ends of the given std::string
+inline void StripAsciiWhitespace(std::string* str) {
+ StripTrailingAsciiWhitespace(str);
+ StripLeadingAsciiWhitespace(str);
+}
+
+// Removes leading, trailing, and consecutive internal whitespace.
+void RemoveExtraAsciiWhitespace(std::string*);
+
+} // namespace absl
+
+#endif // ABSL_STRINGS_ASCII_H_