66 lines
2.2 KiB
C++
66 lines
2.2 KiB
C++
// Protocol Buffers - Google's data interchange format
|
|
// Copyright 2008 Google Inc. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file or at
|
|
// https://developers.google.com/open-source/licenses/bsd
|
|
|
|
// This file contains helpers for generated code.
|
|
//
|
|
// Nothing in this file should be directly referenced by users of protobufs.
|
|
|
|
#ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_BASES_H__
|
|
#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_BASES_H__
|
|
|
|
#include "google/protobuf/arena.h"
|
|
#include "google/protobuf/generated_message_util.h"
|
|
#include "google/protobuf/io/zero_copy_stream_impl.h"
|
|
#include "google/protobuf/message.h"
|
|
#include "google/protobuf/parse_context.h"
|
|
|
|
// Must come last:
|
|
#include "google/protobuf/port_def.inc"
|
|
|
|
namespace google {
|
|
namespace protobuf {
|
|
namespace internal {
|
|
|
|
// To save code size, protos without any fields are derived from ZeroFieldsBase
|
|
// rather than Message.
|
|
class PROTOBUF_EXPORT ZeroFieldsBase : public Message {
|
|
public:
|
|
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL { Clear(*this); }
|
|
size_t ByteSizeLong() const PROTOBUF_FINAL { return ByteSizeLong(*this); }
|
|
int GetCachedSize() const { return _impl_._cached_size_.Get(); }
|
|
::uint8_t* _InternalSerialize(
|
|
::uint8_t* target, io::EpsCopyOutputStream* stream) const PROTOBUF_FINAL {
|
|
return _InternalSerialize(*this, target, stream);
|
|
}
|
|
|
|
protected:
|
|
using Message::Message;
|
|
~ZeroFieldsBase() PROTOBUF_OVERRIDE;
|
|
|
|
static void SharedDtor(MessageLite& msg);
|
|
static void MergeImpl(MessageLite& to, const MessageLite& from);
|
|
static void CopyImpl(Message& to, const Message& from);
|
|
void InternalSwap(ZeroFieldsBase* other);
|
|
static void Clear(MessageLite& msg);
|
|
static size_t ByteSizeLong(const MessageLite& msg);
|
|
static ::uint8_t* _InternalSerialize(const MessageLite& msg,
|
|
::uint8_t* target,
|
|
io::EpsCopyOutputStream* stream);
|
|
|
|
struct {
|
|
internal::CachedSize _cached_size_;
|
|
} _impl_;
|
|
};
|
|
|
|
} // namespace internal
|
|
} // namespace protobuf
|
|
} // namespace google
|
|
|
|
#include "google/protobuf/port_undef.inc"
|
|
|
|
#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_BASES_H__
|