Move several Cord::InlineRep methods that are marked inline to the header PiperOrigin-RevId: 928599458 Change-Id: Ie9e4f3ac9be1591c0aa1555333fb0240f6284d14
diff --git a/absl/strings/cord.cc b/absl/strings/cord.cc index d15b5c3..f2912d1 100644 --- a/absl/strings/cord.cc +++ b/absl/strings/cord.cc
@@ -163,35 +163,6 @@ // -------------------------------------------------------------------- // Cord::InlineRep functions -inline void Cord::InlineRep::set_data(const char* absl_nullable data, - size_t n) { - static_assert(kMaxInline == 15, "set_data is hard-coded for a length of 15"); - assert(data != nullptr || n == 0); - data_.set_inline_data(data, n); -} - -inline char* absl_nonnull Cord::InlineRep::set_data(size_t n) { - assert(n <= kMaxInline); - ResetToEmpty(); - set_inline_size(n); - return data_.as_chars(); -} - -inline void Cord::InlineRep::reduce_size(size_t n) { - size_t tag = inline_size(); - assert(tag <= kMaxInline); - assert(tag >= n); - tag -= n; - memset(data_.as_chars() + tag, 0, n); - set_inline_size(tag); -} - -inline void Cord::InlineRep::remove_prefix(size_t n) { - cord_internal::SmallMemmove(data_.as_chars(), data_.as_chars() + n, - inline_size() - n); - reduce_size(n); -} - // Returns `rep` converted into a CordRepBtree. // Directly returns `rep` if `rep` is already a CordRepBtree. static CordRepBtree* absl_nonnull ForceBtree(CordRep* rep) {
diff --git a/absl/strings/cord.h b/absl/strings/cord.h index f722b3f..22193b7 100644 --- a/absl/strings/cord.h +++ b/absl/strings/cord.h
@@ -1230,6 +1230,35 @@ return is_tree() ? nullptr : data_.as_chars(); } +inline char* absl_nonnull Cord::InlineRep::set_data(size_t n) { + assert(n <= kMaxInline); + ResetToEmpty(); + set_inline_size(n); + return data_.as_chars(); +} + +inline void Cord::InlineRep::set_data(const char* absl_nullable data, + size_t n) { + static_assert(kMaxInline == 15, "set_data is hard-coded for a length of 15"); + assert(data != nullptr || n == 0); + data_.set_inline_data(data, n); +} + +inline void Cord::InlineRep::reduce_size(size_t n) { + size_t tag = inline_size(); + assert(tag <= kMaxInline); + assert(tag >= n); + tag -= n; + memset(data_.as_chars() + tag, 0, n); + set_inline_size(tag); +} + +inline void Cord::InlineRep::remove_prefix(size_t n) { + cord_internal::SmallMemmove(data_.as_chars(), data_.as_chars() + n, + inline_size() - n); + reduce_size(n); +} + inline const char* absl_nonnull Cord::InlineRep::as_chars() const { assert(!data_.is_tree()); return data_.as_chars();