about summary refs log tree commit diff
path: root/third_party/abseil_cpp/absl/functional/internal
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/abseil_cpp/absl/functional/internal')
-rw-r--r--third_party/abseil_cpp/absl/functional/internal/front_binder.h95
-rw-r--r--third_party/abseil_cpp/absl/functional/internal/function_ref.h106
2 files changed, 0 insertions, 201 deletions
diff --git a/third_party/abseil_cpp/absl/functional/internal/front_binder.h b/third_party/abseil_cpp/absl/functional/internal/front_binder.h
deleted file mode 100644
index a4d95da44a..0000000000
--- a/third_party/abseil_cpp/absl/functional/internal/front_binder.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2018 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
-//
-//      https://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.
-
-// Implementation details for `absl::bind_front()`.
-
-#ifndef ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_
-#define ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_
-
-#include <cstddef>
-#include <type_traits>
-#include <utility>
-
-#include "absl/base/internal/invoke.h"
-#include "absl/container/internal/compressed_tuple.h"
-#include "absl/meta/type_traits.h"
-#include "absl/utility/utility.h"
-
-namespace absl {
-ABSL_NAMESPACE_BEGIN
-namespace functional_internal {
-
-// Invoke the method, expanding the tuple of bound arguments.
-template <class R, class Tuple, size_t... Idx, class... Args>
-R Apply(Tuple&& bound, absl::index_sequence<Idx...>, Args&&... free) {
-  return base_internal::Invoke(
-      absl::forward<Tuple>(bound).template get<Idx>()...,
-      absl::forward<Args>(free)...);
-}
-
-template <class F, class... BoundArgs>
-class FrontBinder {
-  using BoundArgsT = absl::container_internal::CompressedTuple<F, BoundArgs...>;
-  using Idx = absl::make_index_sequence<sizeof...(BoundArgs) + 1>;
-
-  BoundArgsT bound_args_;
-
- public:
-  template <class... Ts>
-  constexpr explicit FrontBinder(absl::in_place_t, Ts&&... ts)
-      : bound_args_(absl::forward<Ts>(ts)...) {}
-
-  template <class... FreeArgs,
-            class R = base_internal::InvokeT<F&, BoundArgs&..., FreeArgs&&...>>
-  R operator()(FreeArgs&&... free_args) & {
-    return functional_internal::Apply<R>(bound_args_, Idx(),
-                                         absl::forward<FreeArgs>(free_args)...);
-  }
-
-  template <class... FreeArgs,
-            class R = base_internal::InvokeT<const F&, const BoundArgs&...,
-                                             FreeArgs&&...>>
-  R operator()(FreeArgs&&... free_args) const& {
-    return functional_internal::Apply<R>(bound_args_, Idx(),
-                                         absl::forward<FreeArgs>(free_args)...);
-  }
-
-  template <class... FreeArgs, class R = base_internal::InvokeT<
-                                   F&&, BoundArgs&&..., FreeArgs&&...>>
-  R operator()(FreeArgs&&... free_args) && {
-    // This overload is called when *this is an rvalue. If some of the bound
-    // arguments are stored by value or rvalue reference, we move them.
-    return functional_internal::Apply<R>(absl::move(bound_args_), Idx(),
-                                         absl::forward<FreeArgs>(free_args)...);
-  }
-
-  template <class... FreeArgs,
-            class R = base_internal::InvokeT<const F&&, const BoundArgs&&...,
-                                             FreeArgs&&...>>
-  R operator()(FreeArgs&&... free_args) const&& {
-    // This overload is called when *this is an rvalue. If some of the bound
-    // arguments are stored by value or rvalue reference, we move them.
-    return functional_internal::Apply<R>(absl::move(bound_args_), Idx(),
-                                         absl::forward<FreeArgs>(free_args)...);
-  }
-};
-
-template <class F, class... BoundArgs>
-using bind_front_t = FrontBinder<decay_t<F>, absl::decay_t<BoundArgs>...>;
-
-}  // namespace functional_internal
-ABSL_NAMESPACE_END
-}  // namespace absl
-
-#endif  // ABSL_FUNCTIONAL_INTERNAL_FRONT_BINDER_H_
diff --git a/third_party/abseil_cpp/absl/functional/internal/function_ref.h b/third_party/abseil_cpp/absl/functional/internal/function_ref.h
deleted file mode 100644
index d1575054ea..0000000000
--- a/third_party/abseil_cpp/absl/functional/internal/function_ref.h
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2019 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
-//
-//      https://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.
-
-#ifndef ABSL_FUNCTIONAL_INTERNAL_FUNCTION_REF_H_
-#define ABSL_FUNCTIONAL_INTERNAL_FUNCTION_REF_H_
-
-#include <cassert>
-#include <functional>
-#include <type_traits>
-
-#include "absl/base/internal/invoke.h"
-#include "absl/meta/type_traits.h"
-
-namespace absl {
-ABSL_NAMESPACE_BEGIN
-namespace functional_internal {
-
-// Like a void* that can handle function pointers as well. The standard does not
-// allow function pointers to round-trip through void*, but void(*)() is fine.
-//
-// Note: It's important that this class remains trivial and is the same size as
-// a pointer, since this allows the compiler to perform tail-call optimizations
-// when the underlying function is a callable object with a matching signature.
-union VoidPtr {
-  const void* obj;
-  void (*fun)();
-};
-
-// Chooses the best type for passing T as an argument.
-// Attempt to be close to SystemV AMD64 ABI. Objects with trivial copy ctor are
-// passed by value.
-template <typename T>
-constexpr bool PassByValue() {
-  return !std::is_lvalue_reference<T>::value &&
-         absl::is_trivially_copy_constructible<T>::value &&
-         absl::is_trivially_copy_assignable<
-             typename std::remove_cv<T>::type>::value &&
-         std::is_trivially_destructible<T>::value &&
-         sizeof(T) <= 2 * sizeof(void*);
-}
-
-template <typename T>
-struct ForwardT : std::conditional<PassByValue<T>(), T, T&&> {};
-
-// An Invoker takes a pointer to the type-erased invokable object, followed by
-// the arguments that the invokable object expects.
-//
-// Note: The order of arguments here is an optimization, since member functions
-// have an implicit "this" pointer as their first argument, putting VoidPtr
-// first allows the compiler to perform tail-call optimization in many cases.
-template <typename R, typename... Args>
-using Invoker = R (*)(VoidPtr, typename ForwardT<Args>::type...);
-
-//
-// InvokeObject and InvokeFunction provide static "Invoke" functions that can be
-// used as Invokers for objects or functions respectively.
-//
-// static_cast<R> handles the case the return type is void.
-template <typename Obj, typename R, typename... Args>
-R InvokeObject(VoidPtr ptr, typename ForwardT<Args>::type... args) {
-  auto o = static_cast<const Obj*>(ptr.obj);
-  return static_cast<R>(
-      absl::base_internal::Invoke(*o, std::forward<Args>(args)...));
-}
-
-template <typename Fun, typename R, typename... Args>
-R InvokeFunction(VoidPtr ptr, typename ForwardT<Args>::type... args) {
-  auto f = reinterpret_cast<Fun>(ptr.fun);
-  return static_cast<R>(
-      absl::base_internal::Invoke(f, std::forward<Args>(args)...));
-}
-
-template <typename Sig>
-void AssertNonNull(const std::function<Sig>& f) {
-  assert(f != nullptr);
-  (void)f;
-}
-
-template <typename F>
-void AssertNonNull(const F&) {}
-
-template <typename F, typename C>
-void AssertNonNull(F C::*f) {
-  assert(f != nullptr);
-  (void)f;
-}
-
-template <bool C>
-using EnableIf = typename ::std::enable_if<C, int>::type;
-
-}  // namespace functional_internal
-ABSL_NAMESPACE_END
-}  // namespace absl
-
-#endif  // ABSL_FUNCTIONAL_INTERNAL_FUNCTION_REF_H_