generated_message_bases.h
Go to the documentation of this file.
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 // This file contains helpers for generated code.
32 //
33 // Nothing in this file should be directly referenced by users of protobufs.
34 
35 #ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_BASES_H__
36 #define GOOGLE_PROTOBUF_GENERATED_MESSAGE_BASES_H__
37 
38 #include <google/protobuf/parse_context.h>
39 #include <google/protobuf/io/zero_copy_stream_impl.h>
40 #include <google/protobuf/arena.h>
41 #include <google/protobuf/generated_message_util.h>
42 #include <google/protobuf/message.h>
43 
44 // Must come last:
45 #include <google/protobuf/port_def.inc>
46 
47 namespace google {
48 namespace protobuf {
49 namespace internal {
50 
51 // To save code size, protos without any fields are derived from ZeroFieldsBase
52 // rather than Message.
53 class PROTOBUF_EXPORT ZeroFieldsBase : public Message {
54  public:
55  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
56  bool IsInitialized() const final { return true; }
57  size_t ByteSizeLong() const final;
58  int GetCachedSize() const final { return _cached_size_.Get(); }
59  const char* _InternalParse(const char* ptr,
62  io::EpsCopyOutputStream* stream) const final;
63 
64  protected:
65  constexpr ZeroFieldsBase() {}
66  explicit ZeroFieldsBase(Arena* arena, bool is_message_owned)
67  : Message(arena, is_message_owned) {}
68  ZeroFieldsBase(const ZeroFieldsBase&) = delete;
69  ZeroFieldsBase& operator=(const ZeroFieldsBase&) = delete;
70  ~ZeroFieldsBase() override;
71 
72  void SetCachedSize(int size) const final { _cached_size_.Set(size); }
73 
74  static void MergeImpl(Message* to, const Message& from);
75  static void CopyImpl(Message* to, const Message& from);
76  void InternalSwap(ZeroFieldsBase* other);
77 
79 };
80 
81 } // namespace internal
82 } // namespace protobuf
83 } // namespace google
84 
85 #include <google/protobuf/port_undef.inc>
86 
87 #endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_BASES_H__
ptr
char * ptr
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:45
google::protobuf.internal::ZeroFieldsBase::ZeroFieldsBase
constexpr ZeroFieldsBase()
Definition: generated_message_bases.h:65
ctx
Definition: benchmark-async.c:30
const
#define const
Definition: bloaty/third_party/zlib/zconf.h:230
google::protobuf.internal::ZeroFieldsBase
Definition: generated_message_bases.h:53
Arena
Definition: arena.c:39
google::protobuf.internal::ParseContext
Definition: bloaty/third_party/protobuf/src/google/protobuf/parse_context.h:336
google::protobuf
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
to
size_t to
Definition: abseil-cpp/absl/container/internal/layout_test.cc:1385
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
google::protobuf.internal.python_message._InternalParse
_InternalParse
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/python_message.py:1196
arena
grpc_core::ScopedArenaPtr arena
Definition: binder_transport_test.cc:237
from
size_t from
Definition: abseil-cpp/absl/container/internal/layout_test.cc:1384
google::protobuf::io::EpsCopyOutputStream
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/coded_stream.h:651
google::protobuf.internal::ZeroFieldsBase::_cached_size_
internal::CachedSize _cached_size_
Definition: generated_message_bases.h:78
google::protobuf.internal.python_message._InternalSerialize
_InternalSerialize
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/python_message.py:1112
google::protobuf.internal::ZeroFieldsBase::IsInitialized
bool IsInitialized() const final
Definition: generated_message_bases.h:56
google::protobuf.internal::ZeroFieldsBase::SetCachedSize
void SetCachedSize(int size) const final
Definition: generated_message_bases.h:72
google::protobuf::Message
Definition: bloaty/third_party/protobuf/src/google/protobuf/message.h:205
google::protobuf.internal.python_message.Clear
Clear
Definition: bloaty/third_party/protobuf/python/google/protobuf/internal/python_message.py:1430
google::protobuf.internal::CachedSize
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_util.h:170
google::protobuf.internal::ZeroFieldsBase::ZeroFieldsBase
ZeroFieldsBase(Arena *arena, bool is_message_owned)
Definition: generated_message_bases.h:66
internal
Definition: benchmark/test/output_test_helper.cc:20
size
voidpf void uLong size
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
setup.target
target
Definition: third_party/bloaty/third_party/protobuf/python/setup.py:179
google
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
stream
voidpf stream
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:23