about summary refs log tree commit diff
path: root/absl/container
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2019-04-16T19·11-0700
committerAlex Strelnikov <strel@google.com>2019-04-16T19·40-0400
commitd902eb869bcfacc1bad14933ed9af4bed006d481 (patch)
tree2c6b4c121bb5a696657d63db03a166404b3592b8 /absl/container
parenta02f62f456f2c4a7ecf2be3104fe0c6e16fbad9a (diff)
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
Diffstat (limited to 'absl/container')
-rw-r--r--absl/container/inlined_vector.h25
-rw-r--r--absl/container/internal/inlined_vector.h9
2 files changed, 19 insertions, 15 deletions
diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h
index 1ab4b2f44741..978d5033de93 100644
--- a/absl/container/inlined_vector.h
+++ b/absl/container/inlined_vector.h
@@ -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))
diff --git a/absl/container/internal/inlined_vector.h b/absl/container/internal/inlined_vector.h
index 168d5b4e1d34..b8b4f4ce3b39 100644
--- a/absl/container/internal/inlined_vector.h
+++ b/absl/container/internal/inlined_vector.h
@@ -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;