cord_rep_crc.cc
Go to the documentation of this file.
1 // Copyright 2021 The Abseil Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // https://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
16 
17 #include <cassert>
18 #include <cstdint>
19 
20 #include "absl/base/config.h"
21 #include "absl/strings/internal/cord_internal.h"
22 
23 namespace absl {
25 namespace cord_internal {
26 
28  assert(child != nullptr);
29  if (child->IsCrc()) {
30  if (child->refcount.IsOne()) {
31  child->crc()->crc = crc;
32  return child->crc();
33  }
34  CordRep* old = child;
35  child = old->crc()->child;
38  }
39  auto* new_cordrep = new CordRepCrc;
40  new_cordrep->length = child->length;
41  new_cordrep->tag = cord_internal::CRC;
42  new_cordrep->child = child;
43  new_cordrep->crc = crc;
44  return new_cordrep;
45 }
46 
48  CordRep::Unref(node->child);
49  delete node;
50 }
51 
52 } // namespace cord_internal
54 } // namespace absl
absl::cord_internal::CordRepCrc
Definition: cord_rep_crc.h:35
absl::cord_internal::CordRepCrc::New
static CordRepCrc * New(CordRep *child, uint32_t crc)
Definition: cord_rep_crc.cc:27
absl::cord_internal::CordRep::Unref
static void Unref(CordRep *rep)
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:642
ABSL_NAMESPACE_END
#define ABSL_NAMESPACE_END
Definition: third_party/abseil-cpp/absl/base/config.h:171
absl::cord_internal::CordRep::IsCrc
constexpr bool IsCrc() const
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:247
absl::cord_internal::CordRep
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:209
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
ABSL_NAMESPACE_BEGIN
#define ABSL_NAMESPACE_BEGIN
Definition: third_party/abseil-cpp/absl/base/config.h:170
absl::cord_internal::CordRep::refcount
RefcountAndFlags refcount
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:229
googletest-filter-unittest.child
child
Definition: bloaty/third_party/googletest/googletest/test/googletest-filter-unittest.py:62
absl::cord_internal::CordRepCrc::Destroy
static void Destroy(CordRepCrc *node)
Definition: cord_rep_crc.cc:47
absl::cord_internal::CordRepCrc::crc
uint32_t crc
Definition: cord_rep_crc.h:37
absl::cord_internal::CordRep::length
size_t length
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:228
absl::cord_internal::CordRep::Ref
static CordRep * Ref(CordRep *rep)
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:634
absl::cord_internal::CRC
@ CRC
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:180
absl::cord_internal::CordRep::crc
CordRepCrc * crc()
Definition: cord_rep_crc.h:88
absl
Definition: abseil-cpp/absl/algorithm/algorithm.h:31
absl::cord_internal::RefcountAndFlags::IsOne
bool IsOne()
Definition: abseil-cpp/absl/strings/internal/cord_internal.h:144
absl::cord_internal::CordRepCrc::child
CordRep * child
Definition: cord_rep_crc.h:36
binary_size.old
string old
Definition: binary_size.py:128
cord_rep_crc.h


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:03