grpc
third_party
abseil-cpp
absl
strings
internal
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
15
#include "
absl/strings/internal/cord_rep_crc.h
"
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
{
24
ABSL_NAMESPACE_BEGIN
25
namespace
cord_internal {
26
27
CordRepCrc
*
CordRepCrc::New
(
CordRep
*
child
,
uint32_t
crc) {
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;
36
CordRep::Ref
(
child
);
37
CordRep::Unref
(
old
);
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
47
void
CordRepCrc::Destroy
(
CordRepCrc
* node) {
48
CordRep::Unref
(node->
child
);
49
delete
node;
50
}
51
52
}
// namespace cord_internal
53
ABSL_NAMESPACE_END
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