Export of internal Abseil changes.
-- babbb6421068af3831870fd5995444437ace6769 by Derek Mauro <dmauro@google.com>: Rollback of: Make raw_hash_set_test less flaky. Split the timing loop into chunks so that we are less suceptible to antogantistic processes. PiperOrigin-RevId: 243854490 -- a2711f17a712f6d09799bf32363d67526737b486 by CJ Johnson <johnsoncj@google.com>: Relocates IsAtLeastForwardIterator to internal/inlined_vector.h PiperOrigin-RevId: 243846090 -- 6c14cdbeb9a61022c27f8957654f930d8abf2fc1 by Matt Kulukundis <kfm@google.com>: Make raw_hash_set_test less flaky. Split the timing loop into chunks so that we are less suceptible to antogantistic processes. PiperOrigin-RevId: 243824289 -- ee6072a6b6e0ac653622524ceb09db3b9e870f96 by Samuel Benzaquen <sbenza@google.com>: Improve format parser performance. Replace the main switch with a lookup in the existing tag table. Improve the ABI of ConsumeUnboundConversion a little. PiperOrigin-RevId: 243824112 -- 24b9e6476dfa4be8d644359eab8ac6816492f187 by Abseil Team <absl-team@google.com>: Fix DR numbers: 3800 ? 3080, 3801 ? 3081. PiperOrigin-RevId: 243804213 -- 0660404074707e197684f07cc0bffe4a9c35cd2f by Abseil Team <absl-team@google.com>: Internal change. PiperOrigin-RevId: 243757359 -- ba0f5bb9b8584d75c4ffc44ff3cb8c691796ffc6 by Xiaoyi Zhang <zhangxy@google.com>: Consolidate ABSL_INTERNAL_UNALIGNED_* implementation into memcpy. The compiler should be good enough to optimize these operations. See https://github.com/abseil/abseil-cpp/issues/269 for background. PiperOrigin-RevId: 243323941 -- 00853a8756548df7217513c562d604b4ee5c6ab9 by Eric Fiselier <ericwf@google.com>: Reexport memory.h from optional.h for compatibility between libc++ and libstdc++. PiperOrigin-RevId: 243313425 GitOrigin-RevId: babbb6421068af3831870fd5995444437ace6769 Change-Id: Ic53c127ad857a431ad60c98b27cc585fed50a3e3
This commit is contained in:
parent
a02f62f456
commit
d902eb869b
10 changed files with 186 additions and 328 deletions
|
@ -73,17 +73,12 @@ class InlinedVector {
|
|||
using AllocatorTraits = typename Storage::AllocatorTraits;
|
||||
|
||||
template <typename Iterator>
|
||||
using IsAtLeastForwardIterator = std::is_convertible<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::forward_iterator_tag>;
|
||||
using EnableIfAtLeastForwardIterator = absl::enable_if_t<
|
||||
inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value>;
|
||||
|
||||
template <typename Iterator>
|
||||
using EnableIfAtLeastForwardIterator =
|
||||
absl::enable_if_t<IsAtLeastForwardIterator<Iterator>::value>;
|
||||
|
||||
template <typename Iterator>
|
||||
using DisableIfAtLeastForwardIterator =
|
||||
absl::enable_if_t<!IsAtLeastForwardIterator<Iterator>::value>;
|
||||
using DisableIfAtLeastForwardIterator = absl::enable_if_t<
|
||||
!inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value>;
|
||||
|
||||
using rvalue_reference = typename Storage::rvalue_reference;
|
||||
|
||||
|
@ -1060,7 +1055,9 @@ class InlinedVector {
|
|||
|
||||
template <typename ForwardIt>
|
||||
void AssignForwardRange(ForwardIt first, ForwardIt last) {
|
||||
static_assert(IsAtLeastForwardIterator<ForwardIt>::value, "");
|
||||
static_assert(absl::inlined_vector_internal::IsAtLeastForwardIterator<
|
||||
ForwardIt>::value,
|
||||
"");
|
||||
|
||||
auto length = std::distance(first, last);
|
||||
|
||||
|
@ -1084,7 +1081,9 @@ class InlinedVector {
|
|||
|
||||
template <typename ForwardIt>
|
||||
void AppendForwardRange(ForwardIt first, ForwardIt last) {
|
||||
static_assert(IsAtLeastForwardIterator<ForwardIt>::value, "");
|
||||
static_assert(absl::inlined_vector_internal::IsAtLeastForwardIterator<
|
||||
ForwardIt>::value,
|
||||
"");
|
||||
|
||||
auto length = std::distance(first, last);
|
||||
reserve(size() + length);
|
||||
|
@ -1113,7 +1112,9 @@ class InlinedVector {
|
|||
template <typename ForwardIt>
|
||||
iterator InsertWithForwardRange(const_iterator position, ForwardIt first,
|
||||
ForwardIt last) {
|
||||
static_assert(IsAtLeastForwardIterator<ForwardIt>::value, "");
|
||||
static_assert(absl::inlined_vector_internal::IsAtLeastForwardIterator<
|
||||
ForwardIt>::value,
|
||||
"");
|
||||
assert(position >= begin() && position <= end());
|
||||
|
||||
if (ABSL_PREDICT_FALSE(first == last))
|
||||
|
|
|
@ -26,6 +26,11 @@
|
|||
namespace absl {
|
||||
namespace inlined_vector_internal {
|
||||
|
||||
template <typename Iterator>
|
||||
using IsAtLeastForwardIterator = std::is_convertible<
|
||||
typename std::iterator_traits<Iterator>::iterator_category,
|
||||
std::forward_iterator_tag>;
|
||||
|
||||
template <typename InlinedVector>
|
||||
class Storage;
|
||||
|
||||
|
@ -89,9 +94,7 @@ class Storage<InlinedVector<T, N, A>> {
|
|||
|
||||
void AddSize(size_type count) { GetSizeAndIsAllocated() += count << 1; }
|
||||
|
||||
void SetAllocatedData(pointer data) {
|
||||
data_.allocated.allocated_data = data;
|
||||
}
|
||||
void SetAllocatedData(pointer data) { data_.allocated.allocated_data = data; }
|
||||
|
||||
void SetAllocatedCapacity(size_type capacity) {
|
||||
data_.allocated.allocated_capacity = capacity;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue