summaryrefslogtreecommitdiff
path: root/absl/strings/internal/cord_rep_ring.h
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2021-01-22 03:53:23 -0800
committerGravatar Matt Kulukundis <matt.fowles@gmail.com>2021-01-25 12:52:34 -0500
commite4e2e57e1a4308cf4ba008d9c1f2d478b3349201 (patch)
treeeb962f3e0b6246b5afb91e67ffe90ef0374af103 /absl/strings/internal/cord_rep_ring.h
parent3a2d6572d06709da32a17f053ca1e3c8e2af90df (diff)
Export of internal Abseil changes
-- cfd7ee2487ed9b5636d8f83d3850c02e3b4a5cb0 by Jorg Brown <jorg@google.com>: Add union padding to AsTree, to avoid issues on 32-bit MSVC 2015 compilers alignas() causes compiler errors as per https://godbolt.org/z/vaTKjn This change uses explicit padding to achieve what we want: https://godbolt.org/z/Mfjhhj PiperOrigin-RevId: 353211413 -- b1ac7430ffdefe58c01b29e9acd182cda4630e1d by Jorg Brown <jorg@google.com>: Make the casting functions flat() and ring() be static_cast, rather than reinterpret_cast. PiperOrigin-RevId: 353149543 -- c37a6761c31720317c8b0b7db62b693643a88586 by Abseil Team <absl-team@google.com>: Integrate CordRepRing logic into cord (but do not enable it) PiperOrigin-RevId: 353135656 -- 2007fd3045ed6285106795cf8f2e6d792922f5e8 by Abseil Team <absl-team@google.com>: Fix a typo in the description of ::equal_range(). The correct return is actually a half-open range [first, last). PiperOrigin-RevId: 353122213 -- 6683fa2ba7271dd1f575bd7742d97f47a034c9d2 by Abseil Team <absl-team@google.com>: Integrate CordRepRing logic into cord (but do not enable it) PiperOrigin-RevId: 353121763 GitOrigin-RevId: cfd7ee2487ed9b5636d8f83d3850c02e3b4a5cb0 Change-Id: I6635163cd634706f5462c4065aa278e6bf193a72
Diffstat (limited to 'absl/strings/internal/cord_rep_ring.h')
-rw-r--r--absl/strings/internal/cord_rep_ring.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/absl/strings/internal/cord_rep_ring.h b/absl/strings/internal/cord_rep_ring.h
index e6f6b59c..55cba8b4 100644
--- a/absl/strings/internal/cord_rep_ring.h
+++ b/absl/strings/internal/cord_rep_ring.h
@@ -563,6 +563,17 @@ inline CordRepRing::Position CordRepRing::FindTail(index_type head,
return (offset == length) ? Position{tail_, 0} : FindTailSlow(head, offset);
}
+// Now that CordRepRing is defined, we can define CordRep's helper casts:
+inline CordRepRing* CordRep::ring() {
+ assert(tag == RING);
+ return static_cast<CordRepRing*>(this);
+}
+
+inline const CordRepRing* CordRep::ring() const {
+ assert(tag == RING);
+ return static_cast<const CordRepRing*>(this);
+}
+
std::ostream& operator<<(std::ostream& s, const CordRepRing& rep);
#ifdef __clang__