diff --git a/Firestore/third_party/abseil-cpp/absl/CMakeLists.txt b/Firestore/third_party/abseil-cpp/absl/CMakeLists.txt index 689f64e258b..ff03f3cb59e 100644 --- a/Firestore/third_party/abseil-cpp/absl/CMakeLists.txt +++ b/Firestore/third_party/abseil-cpp/absl/CMakeLists.txt @@ -17,14 +17,9 @@ add_subdirectory(base) -add_subdirectory(algorithm) -add_subdirectory(container) -add_subdirectory(debugging) add_subdirectory(memory) add_subdirectory(meta) add_subdirectory(numeric) add_subdirectory(strings) -add_subdirectory(synchronization) -add_subdirectory(time) add_subdirectory(types) add_subdirectory(utility) diff --git a/Firestore/third_party/abseil-cpp/absl/types/CMakeLists.txt b/Firestore/third_party/abseil-cpp/absl/types/CMakeLists.txt new file mode 100644 index 00000000000..87293649cc6 --- /dev/null +++ b/Firestore/third_party/abseil-cpp/absl/types/CMakeLists.txt @@ -0,0 +1,50 @@ +# +# 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 TYPES_PUBLIC_HEADERS + "bad_optional_access.h" + "optional.h" +) + +# optional library +list(APPEND OPTIONAL_SRC + "optional.cc" +) + +absl_library( + TARGET + absl_optional + SOURCES + ${OPTIONAL_SRC} + PUBLIC_LIBRARIES + absl::base + EXPORT_NAME + optional +) + +set(BAD_OPTIONAL_ACCESS_SRC "bad_optional_access.cc") +set(BAD_OPTIONAL_ACCESS_LIBRARIES absl::base) + +absl_library( + TARGET + absl_bad_optional_access + SOURCES + ${BAD_OPTIONAL_ACCESS_SRC} + PUBLIC_LIBRARIES + ${BAD_OPTIONAL_ACCESS_PUBLIC_LIBRARIES} + EXPORT_NAME + bad_optional_access +) diff --git a/Firestore/third_party/abseil-cpp/absl/utility/CMakeLists.txt b/Firestore/third_party/abseil-cpp/absl/utility/CMakeLists.txt new file mode 100644 index 00000000000..aef4456d269 --- /dev/null +++ b/Firestore/third_party/abseil-cpp/absl/utility/CMakeLists.txt @@ -0,0 +1,26 @@ +# +# 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 UTILITY_PUBLIC_HEADERS + "utility.h" +) + +absl_header_library( + TARGET + absl_utility + EXPORT_NAME + utility +) diff --git a/Firestore/third_party/abseil-cpp/absl/utility/utility.h b/Firestore/third_party/abseil-cpp/absl/utility/utility.h index 1943c4acb57..595be19798e 100644 --- a/Firestore/third_party/abseil-cpp/absl/utility/utility.h +++ b/Firestore/third_party/abseil-cpp/absl/utility/utility.h @@ -46,101 +46,10 @@ #include "absl/base/config.h" #include "absl/base/internal/inline_variable.h" -#include "absl/base/internal/invoke.h" #include "absl/meta/type_traits.h" namespace absl { -// integer_sequence -// -// Class template representing a compile-time integer sequence. An instantiation -// of `integer_sequence` has a sequence of integers encoded in its -// type through its template arguments (which is a common need when -// working with C++11 variadic templates). `absl::integer_sequence` is designed -// to be a drop-in replacement for C++14's `std::integer_sequence`. -// -// Example: -// -// template< class T, T... Ints > -// void user_function(integer_sequence); -// -// int main() -// { -// // user_function's `T` will be deduced to `int` and `Ints...` -// // will be deduced to `0, 1, 2, 3, 4`. -// user_function(make_integer_sequence()); -// } -template -struct integer_sequence { - using value_type = T; - static constexpr size_t size() noexcept { return sizeof...(Ints); } -}; - -// index_sequence -// -// A helper template for an `integer_sequence` of `size_t`, -// `absl::index_sequence` is designed to be a drop-in replacement for C++14's -// `std::index_sequence`. -template -using index_sequence = integer_sequence; - -namespace utility_internal { - -template -struct Extend; - -// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. -template -struct Extend, SeqSize, 0> { - using type = integer_sequence; -}; - -template -struct Extend, SeqSize, 1> { - using type = integer_sequence; -}; - -// Recursion helper for 'make_integer_sequence'. -// 'Gen::type' is an alias for 'integer_sequence'. -template -struct Gen { - using type = - typename Extend::type, N / 2, N % 2>::type; -}; - -template -struct Gen { - using type = integer_sequence; -}; - -} // namespace utility_internal - -// Compile-time sequences of integers - -// make_integer_sequence -// -// This template alias is equivalent to -// `integer_sequence`, and is designed to be a drop-in -// replacement for C++14's `std::make_integer_sequence`. -template -using make_integer_sequence = typename utility_internal::Gen::type; - -// make_index_sequence -// -// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, -// and is designed to be a drop-in replacement for C++14's -// `std::make_index_sequence`. -template -using make_index_sequence = make_integer_sequence; - -// index_sequence_for -// -// Converts a typename pack into an index sequence of the same length, and -// is designed to be a drop-in replacement for C++14's -// `std::index_sequence_for()` -template -using index_sequence_for = make_index_sequence; - // Tag types #ifdef ABSL_HAVE_STD_OPTIONAL @@ -161,27 +70,6 @@ ABSL_INTERNAL_INLINE_CONSTEXPR(in_place_t, in_place, {}); #endif // ABSL_HAVE_STD_OPTIONAL -#ifdef ABSL_HAVE_STD_ANY -using std::in_place_type_t; -#else - -// in_place_type_t -// -// Tag type used for in-place construction when the type to construct needs to -// be specified, such as with `absl::any`, designed to be a drop-in replacement -// for C++17's `std::in_place_type_t`. -template -struct in_place_type_t {}; -#endif // ABSL_HAVE_STD_ANY - -// in_place_index_t -// -// Tag type used for in-place construction when the type to construct needs to -// be specified, such as with `absl::any`, designed to be a drop-in replacement -// for C++17's `std::in_place_index_t`. -template -struct in_place_index_t {}; - // Constexpr move and forward // move() @@ -203,62 +91,6 @@ constexpr T&& forward( return static_cast(t); } -namespace utility_internal { -// Helper method for expanding tuple into a called method. -template -auto apply_helper(Functor&& functor, Tuple&& t, index_sequence) - -> decltype(absl::base_internal::Invoke( - absl::forward(functor), - std::get(absl::forward(t))...)) { - return absl::base_internal::Invoke( - absl::forward(functor), - std::get(absl::forward(t))...); -} - -} // namespace utility_internal - -// apply -// -// Invokes a Callable using elements of a tuple as its arguments. -// Each element of the tuple corresponds to an argument of the call (in order). -// Both the Callable argument and the tuple argument are perfect-forwarded. -// For member-function Callables, the first tuple element acts as the `this` -// pointer. `absl::apply` is designed to be a drop-in replacement for C++17's -// `std::apply`. Unlike C++17's `std::apply`, this is not currently `constexpr`. -// -// Example: -// -// class Foo{void Bar(int);}; -// void user_function(int, std::string); -// void user_function(std::unique_ptr); -// -// int main() -// { -// std::tuple tuple1(42, "bar"); -// // Invokes the user function overload on int, std::string. -// absl::apply(&user_function, tuple1); -// -// auto foo = absl::make_unique(); -// std::tuple tuple2(foo.get(), 42); -// // Invokes the method Bar on foo with one argument 42. -// absl::apply(&Foo::Bar, foo.get(), 42); -// -// std::tuple> tuple3(absl::make_unique()); -// // Invokes the user function that takes ownership of the unique -// // pointer. -// absl::apply(&user_function, std::move(tuple)); -// } -template -auto apply(Functor&& functor, Tuple&& t) - -> decltype(utility_internal::apply_helper( - absl::forward(functor), absl::forward(t), - absl::make_index_sequence::type>::value>{})) { - return utility_internal::apply_helper( - absl::forward(functor), absl::forward(t), - absl::make_index_sequence::type>::value>{}); -} } // namespace absl #endif // ABSL_UTILITY_UTILITY_H_